{outputs, ...}: let ips = import ../modules/ips.nix; in { # Enable NAT networking = { nat = { enable = true; externalInterface = "${ips.netInt}"; internalInterfaces = [ "${ips.wgInt}" ]; }; firewall.allowedUDPPorts = [ 51820 ]; }; networking.wireguard = { enable = true; interfaces = { "${ips.wgInt}" = { ips = [ "${ips.wgSpan}.1/24" ]; listenPort = 51820; privateKey = outputs.secrets.wgServerPriv; peers = [ { # Jimbo Pixel 9 publicKey = outputs.secrets.wgPixel9Pub; allowedIPs = [ "${ips.wgSpan}.2/32" ]; } { # Oracle VM publicKey = outputs.secrets.wgOraclePub; allowedIPs = [ "${ips.wgSpan}.3/32" ]; } { # General Nix publicKey = outputs.secrets.wgClientPub; allowedIPs = [ "${ips.wgSpan}.16/28" ]; } ]; }; }; }; }