aboutsummaryrefslogtreecommitdiff
path: root/modules/wireguard/nixos/default.nix
diff options
context:
space:
mode:
authorCollin Williams <96917990+bluedragon1221@users.noreply.github.com>2026-01-18 08:07:27 -0600
committerCollin Williams <96917990+bluedragon1221@users.noreply.github.com>2026-01-18 08:07:27 -0600
commited2550a41c8429a1d2fe897deb878717c2ebc3d1 (patch)
tree43a4ab6d02cb8dd0308a9fd8628bb04ee7f6ccec /modules/wireguard/nixos/default.nix
parent9bd9efe8b26ba34e0cbba3e281749a4e262558e0 (diff)
initial wireguard configuration
Diffstat (limited to 'modules/wireguard/nixos/default.nix')
-rw-r--r--modules/wireguard/nixos/default.nix48
1 files changed, 48 insertions, 0 deletions
diff --git a/modules/wireguard/nixos/default.nix b/modules/wireguard/nixos/default.nix
new file mode 100644
index 0000000..6f51ddf
--- /dev/null
+++ b/modules/wireguard/nixos/default.nix
@@ -0,0 +1,48 @@
+{
+ config,
+ lib,
+ ...
+}: let
+ cfg = config.collinux.wireguard;
+in
+ lib.mkIf cfg.enable {
+ boot.extraModulePackages = [config.boot.kernelPackages.wireguard];
+ boot.kernel.sysctl."net.ipv4.ip_forward" = 1;
+
+ networking.useNetworkd = true;
+ systemd.network = {
+ netdevs."10-wg" = {
+ netdevConfig = {
+ Kind = "wireguard";
+ Name = "wg0";
+ };
+
+ wireguardConfig = {
+ PrivateKeyFile = cfg.privateKeyFile;
+ ListenPort = 51820;
+ };
+
+ wireguardPeers =
+ builtins.map (m: {
+ PublicKey = m.publicKey;
+ AllowedIPs = [m.ip];
+ Endpoint = m.endpoint;
+ })
+ cfg.peers;
+ };
+
+ networks."12-wireguard" = {
+ name = "wg0";
+
+ networkConfig = {
+ Address = cfg.ip;
+ DHCP = "no";
+ Gateway = cfg.gateway;
+
+ IPMasquerade = "ipv4";
+ IPv4Forwarding = true;
+ IPv6AcceptRA = false;
+ };
+ };
+ };
+ }