diff --git a/hosts/hydra/default.nix b/hosts/hydra/default.nix index 8f480dc5..9da22b9e 100644 --- a/hosts/hydra/default.nix +++ b/hosts/hydra/default.nix @@ -3,6 +3,7 @@ { imports = [ ./hardware-configuration.nix + ./network.nix ./hydra.nix ./cache.nix ./updater.nix @@ -41,15 +42,6 @@ networking = { hostName = "hydra"; firewall.enable = false; - defaultGateway = "172.20.73.1"; - interfaces.enp3s0 = { - useDHCP = false; - tempAddress = "disabled"; - ipv4.addresses = [{ - address = "172.20.73.49"; - prefixLength = zentralwerk.lib.config.site.net.serv.subnet4Len; - }]; - }; nameservers = [ "172.20.73.8" "9.9.9.9" ]; }; diff --git a/hosts/hydra/network.nix b/hosts/hydra/network.nix new file mode 100644 index 00000000..59d6bc74 --- /dev/null +++ b/hosts/hydra/network.nix @@ -0,0 +1,67 @@ +{ zentralwerk, config, lib, ... }: +{ + networking = { + useDHCP = false; + useNetworkd = true; + }; + + boot.kernelParams = [ + # Prevents automatic creation of interface bond0 by the kernel + "bonding.max_bonds=0" + ]; + + systemd.network = { + enable = true; + + netdevs = { + serv.netdevConfig = { + Kind = "bond"; + Name = "serv"; + }; + # LACP + serv.bondConfig.Mode = "802.3ad"; + }; + + networks = { + en = { + # physical ethernet ports + matchConfig.Name = "en*"; + networkConfig = { + Bond = "serv"; + LLDP = true; + EmitLLDP = true; + }; + }; + "serv" = + let + inherit (config.networking) hostName; + netConfig = zentralwerk.lib.config.site.net.serv; + address = netConfig.hosts4.${hostName}; + prefixLen = netConfig.subnet4Len; + in + { + matchConfig.Name = "serv"; + networkConfig = { + LLDP = true; + EmitLLDP = true; + DHCP = "no"; + IPv6AcceptRA = "no"; + }; + addresses = + lib.optional (netConfig.hosts4 ? ${hostName}) { + addressConfig.Address = "${address}/${toString prefixLen}"; + } ++ + builtins.concatMap (hosts6: + lib.optional (hosts6 ? ${hostName}) { + addressConfig.Address = "${hosts6.${hostName}}/64"; + } + ) (builtins.attrValues netConfig.hosts6); + + gateway = [ + netConfig.hosts4.serv-gw + netConfig.hosts6.dn42.serv-gw + ]; + }; + }; + }; +}