{ lib, ... }: { site.net.serv = { domainName = "serv.zentralwerk.org"; subnet4 = "172.20.73.0/25"; hosts4 = { serv-gw = "172.20.73.1"; dns = "172.20.73.2"; stats = "172.20.73.3"; radius = "172.20.73.4"; zeit = "172.20.73.5"; minecraft = "172.20.73.6"; used1 = "172.20.73.7"; dnscache = "172.20.73.8"; used2 = "172.20.73.9"; used3 = "172.20.73.10"; used4 = "172.20.73.11"; used5 = "172.20.73.12"; logging = "172.20.73.13"; used6 = "172.20.73.14"; c3d2-web = "172.20.73.15"; deployer = "172.20.73.16"; used7 = "172.20.73.17"; used8 = "172.20.73.18"; used9 = "172.20.73.19"; ipa = "172.20.73.20"; matemat = "172.20.73.21"; used10 = "172.20.73.22"; used11 = "172.20.73.23"; used12 = "172.20.73.24"; spaceapi = "172.20.73.25"; used13 = "172.20.73.26"; mucbot = "172.20.73.27"; used14 = "172.20.73.28"; used15 = "172.20.73.29"; used16 = "172.20.73.30"; used17 = "172.20.73.31"; scrape = "172.20.73.32"; used19 = "172.20.73.33"; used20 = "172.20.73.34"; used21 = "172.20.73.35"; used22 = "172.20.73.36"; used23 = "172.20.73.37"; used24 = "172.20.73.38"; used25 = "172.20.73.39"; used26 = "172.20.73.40"; direkthilfe = "172.20.73.41"; mailtngbert = "172.20.73.42"; grafana = "172.20.73.43"; kibana = "172.20.73.44"; public-access-proxy = "172.20.73.45"; marenz = "172.20.73.46"; leon = "172.20.73.47"; minetest = "172.20.73.48"; hydra = "172.20.73.49"; netboot = "172.20.73.50"; nfsroot = "172.20.73.51"; ticker = "172.20.73.52"; gitea = "172.20.73.53"; stream = "172.20.73.54"; jabber = "172.20.73.55"; mobilizon = "172.20.73.56"; radiobert = "172.20.73.57"; mail = "172.20.73.58"; keycloak = "172.20.73.59"; sdrweb = "172.20.73.60"; bind = "172.20.73.61"; blogs = "172.20.73.62"; nix-build = "172.20.73.63"; staging-data-hoarder = "172.20.73.64"; oparl = "172.20.73.65"; hedgedoc = "172.20.73.66"; mediawiki = "172.20.73.67"; gnunet = "172.20.73.68"; data-hoarder = "172.20.73.69"; broker = "172.20.73.70"; ftp = "172.20.73.71"; auth = "172.20.73.72"; }; subnets6.dn42 = "fd23:42:c3d2:582::/64"; subnets6.up4 = "2a00:8180:2c00:282::/64"; hosts6.dn42 = { bind = "fd23:42:c3d2:582:cd7:56ff:fe69:6366"; blogs = "fd42:42:c3d2:582:b8a8:7dff:fee8:5ac2"; c3d2-web = "fd23:42:c3d2:582:642e:95ff:fe34:49f9"; dns = "fd23:42:c3d2:582:2:0:0:2"; dnscache = "fd23:42:c3d2:582:f096:dbff:fee8:427d"; grafana = "fd23:42:c3d2:582:4042:fbff:fe4b:2de8"; hydra = "fd23:42:c3d2:582:e2cb:4eff:fe3b:f94b"; jabber = "fd23:42:c3d2:582:b869:ccff:fe46:902a"; keycloak = "fd23:42:c3d2:582:c48:bbff:fe87:721d"; logging = "fd23:42:c3d2:582:6811:edff:fe40:89c6"; mail = "fd23:42:c3d2:582:88c0:41ff:fe70:d6cd"; matemat = "fd23:42:c3d2:582:f82b:1bff:fedc:8572"; minetest = "fd23:42:c3d2:582:c3a:42ff:fe5d:b20c"; mobilizon = "fd23:42:c3d2:582:48d1:5cff:fea7:1676"; mongo = "fd23:42:c3d2:582:14ec:c8ff:fe0a:fc5c"; mucbot = "fd23:42:c3d2:582:28db:dff:fe6b:e89a"; netboot = "fd23:42:c3d2:582:2:0:0:6"; radiobert = "fd23:42:c3d2:582:e65f:1ff:fe5d:1679"; radius = "fd23:42:c3d2:582:2:0:0:4"; sdrweb = "fd23:42:c3d2:582:3078:bbff:fe76:e9ef"; serv-gw = "fd23:42:c3d2:582::1"; spaceapi = "fd23:42:c3d2:582:1457:adff:fe93:62e9"; stats = "fd23:42:c3d2:582:2:0:0:3"; zeit = "fd23:42:c3d2:582:2:0:0:5"; direkthilfe = "fd23:42:c3d2:582:1cde:c5ff:fe47:8c2a"; nix-build = "fd23:42:c3d2:582:683d:a9ff:fe45:3d1f"; staging-data-hoarder = "fd23:42:c3d2:582:2de:5bff:fef9:e23d"; oparl = "fd23:42:c3d2:582:2de:9aff:fece:3879"; gnunet = "fd23:42:c3d2:582:44"; broker = "fd23:42:c3d2:582:46"; ftp = "fd23:42:c3d2:582:47"; }; hosts6.up4 = { bind = "2a00:8180:2c00:282:cd7:56ff:fe69:6366"; blogs = "2a00:8180:2c00:282:b8a8:7dff:fee8:5ac2"; c3d2-web = "2a00:8180:2c00:282:642e:95ff:fe34:49f9"; dns = "2a00:8180:2c00:282:2:0:0:2"; dnscache = "2a00:8180:2c00:282:f096:dbff:fee8:427d"; grafana = "2a00:8180:2c00:282:4042:fbff:fe4b:2de8"; hydra = "2a00:8180:2c00:282:e2cb:4eff:fe3b:f94b"; jabber = "2a00:8180:2c00:282:b869:ccff:fe46:902a"; keycloak = "2a00:8180:2c00:282:c48:bbff:fe87:721d"; logging = "2a00:8180:2c00:282:6811:edff:fe40:89c6"; mail = "2a00:8180:2c00:282:88c0:41ff:fe70:d6cd"; matemat = "2a00:8180:2c00:282:f82b:1bff:fedc:8572"; minetest = "2a00:8180:2c00:282:c3a:42ff:fe5d:b20c"; mobilizon = "2a00:8180:2c00:282:48d1:5cff:fea7:1676"; mongo = "2a00:8180:2c00:282:14ec:c8ff:fe0a:fc5c"; mucbot = "2a00:8180:2c00:282:28db:dff:fe6b:e89a"; netboot = "2a00:8180:2c00:282:2:0:0:6"; public-access-proxy = "2a00:8180:2c00:282:1024:5fff:febd:9be7"; radiobert = "2a00:8180:2c00:282:e65f:1ff:fe5d:1679"; radius = "2a00:8180:2c00:282:2:0:0:4"; scrape = "2a00:8180:2c00:282:e073:50ff:fef5:eb6e"; sdrweb = "2a00:8180:2c00:282:3078:bbff:fe76:e9ef"; serv-gw = "2a00:8180:2c00:282::1"; spaceapi = "2a00:8180:2c00:282:1457:adff:fe93:62e9"; stats = "2a00:8180:2c00:282:2:0:0:3"; stream = "fd23:42:c3d2:583:dc91:c7ff:fe51:d1c5"; ticker = "2a00:8180:2c00:282:b407:40ff:fec1:81f2"; zeit = "2a00:8180:2c00:282:2:0:0:5"; direkthilfe = "2a00:8180:2c00:282:1cde:c5ff:fe47:8c2a"; nix-build = "2a00:8180:2c00:282:683d:a9ff:fe45:3d1f"; staging-data-hoarder = "2a00:8180:2c00:282:2de:5bff:fef9:e23d"; oparl = "2a00:8180:2c00:282:2de:9aff:fece:3879"; hedgedoc = "2a00:8180:2c00:282::6"; mediawiki = "2a00:8180:2c00:282::43"; gnunet = "2a00:8180:2c00:282::44"; data-hoarder = "2a00:8180:2c00:282::45"; broker = "2a00:8180:2c00:282::46"; ftp = "2a00:8180:2c00:282::47"; auth = "2a00:8180:2c00:282::48"; }; }; site.hosts = let makeContainer = lib.recursiveUpdate { role = "container"; interfaces = { serv = { gw4 = "serv-gw"; gw6 = "serv-gw"; type = "veth"; }; }; }; in { dns = makeContainer { interfaces.serv.hwaddr = "0A:14:48:01:23:00"; services.dns.enable = true; }; dnscache = makeContainer { services.dnscache.enable = true; }; netboot = makeContainer { interfaces.serv.hwaddr = "0A:14:48:01:15:01"; }; serv-gw = makeContainer { interfaces = { core = { type = "veth"; hwaddr = "0A:14:48:01:06:01"; gw4 = null; gw6 = null; }; serv = { hwaddr = "0A:14:48:01:06:00"; gw4 = null; gw6 = null; }; }; ospf.allowedUpstreams = [ "upstream4" "upstream3" "anon1" "freifunk" ]; }; stats = makeContainer { interfaces.serv.hwaddr = "0A:14:48:01:15:00"; }; hydra = { role = "client"; model = "nixos"; interfaces.serv.type = "phys"; }; }; }