{ 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
            ];
          };
    };
  };
}
