let mkIfConfig = { name_, domain_, p4_, # /24 p6_, # /64 ulaPrefix_, # /64 token? 1, ip6Token_? "::${toString token}", ulaToken_? "::${toString token}", }: rec { name = name_; domain = domain_; p4 = p4_; p4Size = 24; net4 = "${p4}.0/${toString p4Size}"; addr4 = "${p4}.${toString token}"; addr4Sized = "${addr4}/${toString p4Size}"; p6 = p6_; p6Size = 64; net6 = "${p6}::/${toString p6Size}"; ip6Token = ip6Token_; addr6 = "${p6}${ip6Token}"; addr6Sized = "${addr6}/${toString p6Size}"; ulaPrefix = ulaPrefix_; ulaSize = 64; ulaNet = "${ulaPrefix}::/${toString ulaSize}"; ulaToken = ulaToken_; ulaAddr = "${ulaPrefix}${ulaToken}"; ulaAddrSized = "${ulaAddr}/${toString ulaSize}"; }; in rec { domain = "cazzzer.com"; ldomain = "l.${domain}"; sysdomain = "sys.${domain}"; links = { wanMAC = "bc:24:11:4f:c9:c4"; lanMAC = "bc:24:11:83:d8:de"; wanLL = "fe80::be24:11ff:fe4f:c9c4"; lanLL = "fe80::be24:11ff:fe83:d8de"; }; p4 = "10.17"; # .0.0/16 pdFromWan = ""; # ::/60 ulaPrefix = "fdab:07d3:581d"; # ::/48 ifs = rec { wan = rec { name = "wan"; addr4 = "192.168.1.61"; addr4Sized = "${addr4}/24"; gw4 = "192.168.1.254"; }; lan = mkIfConfig { name_ = "lan"; domain_ = "lan.${ldomain}"; p4_ = "${p4}.1"; # .0/24 p6_ = "${pdFromWan}f"; # ::/64 ulaPrefix_ = "${ulaPrefix}:0001"; # ::/64 }; lan10 = mkIfConfig { name_ = "${lan.name}.10"; domain_ = "lab.${ldomain}"; p4_ = "${p4}.10"; # .0/24 p6_ = "${pdFromWan}e"; # ::/64 ulaPrefix_ = "${ulaPrefix}:0010"; # ::/64 }; lan20 = mkIfConfig { name_ = "${lan.name}.20"; domain_ = "life.${ldomain}"; p4_ = "${p4}.20"; # .0/24 p6_ = "${pdFromWan}0"; # ::/64 managed by Att box ulaPrefix_ = "${ulaPrefix}:0020"; # ::/64 ip6Token_ = "::1:1"; # override ipv6 for lan20, since the Att box uses ::1 here }; lan30 = mkIfConfig { name_ = "${lan.name}.30"; domain_ = "iot.${ldomain}"; p4_ = "${p4}.30"; # .0/24 p6_ = "${pdFromWan}c"; # ::/64 ulaPrefix_ = "${ulaPrefix}:0030"; # ::/64 }; lan40 = mkIfConfig { name_ = "${lan.name}.40"; domain_ = "kube.${ldomain}"; p4_ = "${p4}.40"; # .0/24 p6_ = "${pdFromWan}b"; # ::/64 ulaPrefix_ = "${ulaPrefix}:0040"; # ::/64 }; lan50 = mkIfConfig { name_ = "${lan.name}.50"; domain_ = "prox.${ldomain}"; p4_ = "${p4}.50"; # .0/24 p6_ = "${pdFromWan}a"; # ::/64 ulaPrefix_ = "${ulaPrefix}:0050"; # ::/64 }; }; }