extract network functions into library module
1 file changed, 7 insertions(+), 13 deletions(-)
changed files
M system/roles/router.nix → system/roles/router.nix
@@ -11,6 +11,7 @@ lan = builtins.head lans; inherit (config.networking) domain hostName fqdn; inherit (import ../../data) ulaPrefix; + netlib = import ../../lib/net.nix { inherit lib; }; wanPrefixLen = 56;@@ -45,15 +46,8 @@ allProviders = lib.attrValues dnsProviders; mainProvider = dnsProviders.quad9; - justAddress = (a: builtins.head (lib.strings.splitString "/" a)); - myAddresses = map justAddress config.systemd.network.networks."40-${lan}".address; - isv6 = (lib.strings.hasInfix ":"); - wrapv6 = - addr: - if isv6 addr then - if lib.hasPrefix "[" addr && lib.hasSuffix "]" addr then addr else "[" + addr + "]" - else - addr; + lanCfg = config.systemd.network.networks."40-${lan}"; + myAddresses = map netlib.removeMask lanCfg.address; in { imports = [@@ -148,7 +142,7 @@ MulticastDNS = true; Domains = [ config.networking.domain ]; LinkLocalAddressing = "ipv6"; # required for networkd RA despite fe80::1 static assignment DNSOverTLS = false; - DNS = map (a: "${wrapv6 a}:${toString config.services.dnsmasq.settings.port}") myAddresses; + DNS = map (a: "${netlib.wrapv6 a}:${toString config.services.dnsmasq.settings.port}") myAddresses; DNSDefaultRoute = false; IPv6SendRA = true; };@@ -162,7 +156,7 @@ }; ipv6SendRAConfig = { Managed = true; OtherInformation = true; - DNS = (builtins.filter isv6 myAddresses) ++ [ "_link_local" ]; + DNS = builtins.filter netlib.isv6 myAddresses ++ [ "_link_local" ]; }; ipv6Prefixes = [ {@@ -236,8 +230,8 @@ }; services.adguardhome.settings = let - mkHostPort = (addr: "${wrapv6 addr}:${toString config.services.dnsmasq.settings.port}"); - dnsmasqAddrs = map mkHostPort (builtins.filter isv6 myAddresses); + mkHostPort = (addr: "${netlib.wrapv6 addr}:${toString config.services.dnsmasq.settings.port}"); + dnsmasqAddrs = map mkHostPort (builtins.filter netlib.isv6 myAddresses); mkTLSHost = p: "tls://${p.hostname}"; in {