all repos — nixfiles @ 50c21877dc2515e2eeae20049baac08e03b9f3ef

System and user configuration, managed by nix and home-manager

extract network functions into library module

Alin
commit

50c21877dc2515e2eeae20049baac08e03b9f3ef

parent

58dffa0d966e07eefac139ecb4086a65acc7d6f8

2 files changed, 29 insertions(+), 13 deletions(-)

changed files
A lib/net.nix
@@ -0,0 +1,22 @@
+{ lib }: +let + removeMask = ( + a: + if builtins.isString a then builtins.head (lib.strings.splitString "/" a) else removeMask a.Address + ); + + isv6 = (lib.strings.hasInfix ":"); + wrapv6 = + addr: + if isv6 addr then + if lib.hasPrefix "[" addr && lib.hasSuffix "]" addr then addr else "[" + addr + "]" + else + addr; +in +{ + inherit + removeMask + isv6 + wrapv6 + ; +}
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 {