diff options
| author | Collin Williams <96917990+bluedragon1221@users.noreply.github.com> | 2026-01-18 08:07:27 -0600 |
|---|---|---|
| committer | Collin Williams <96917990+bluedragon1221@users.noreply.github.com> | 2026-01-18 08:07:27 -0600 |
| commit | ed2550a41c8429a1d2fe897deb878717c2ebc3d1 (patch) | |
| tree | 43a4ab6d02cb8dd0308a9fd8628bb04ee7f6ccec /modules/wireguard/nixos/default.nix | |
| parent | 9bd9efe8b26ba34e0cbba3e281749a4e262558e0 (diff) | |
initial wireguard configuration
Diffstat (limited to 'modules/wireguard/nixos/default.nix')
| -rw-r--r-- | modules/wireguard/nixos/default.nix | 48 |
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; + }; + }; + }; + } |
