{ config, lib, pkgs, user, ... }:
{
networking.firewall = {
allowedUDPPorts = [ 51820 ];
};
networking = {
nameservers = [
"${inputs.semi-secrets.wg.lan.serverIp}"
"1.1.1.1"
"1.0.0.1"
];
# disable auto resolving
dhcpcd.extraConfig = "nohook resolv.conf";
networkmanager.dns = "none";
};
networking.resolvconf.extraOptions = [
"timeout: 2"
];
networking.wireguard.interfaces = {
wg0 = {
listenPort = 51820;
generatePrivateKeyFile = true;
privateKeyFile = "/etc/wireguard/pk.pem";
peers = [
{
publicKey = "Mui5wOV21QTer4NK2dUcBOgaW9UFzFzwmxOn/458ByI=";
endpoint = "${inputs.semi-secrets.wg.serverEndpoint}";
# The ip is not refreshed, as the kernel cannot perform DNS resolution. Use dynamicEndpointRefreshSeconds,
# in case the ip is refreshed often. If not, sync after refresh should be alright.
allowedIPs = [ "${inputs.semi-secrets.wg.allowedIp}" ];
persistentKeepalive = 25;
}
];
};
};
}