infrastructure/machines/vault01/networking.nix
Tom Hubrecht 93b7a242ab
All checks were successful
build configuration / build_vault01 (pull_request) Successful in 1m5s
build configuration / build_storage01 (pull_request) Successful in 1m8s
build configuration / build_web02 (pull_request) Successful in 1m1s
build configuration / push_to_cache (pull_request) Successful in 2m8s
build configuration / build_compute01 (pull_request) Successful in 1m9s
build configuration / build_rescue01 (pull_request) Successful in 49s
build configuration / build_web01 (pull_request) Successful in 1m27s
build configuration / build_web02 (push) Successful in 1m0s
build configuration / build_storage01 (push) Successful in 1m6s
build configuration / build_compute01 (push) Successful in 1m12s
lint / check (push) Successful in 23s
build configuration / build_web01 (push) Successful in 1m29s
build configuration / push_to_cache (push) Successful in 2m9s
build configuration / build_vault01 (push) Successful in 1m3s
build configuration / build_rescue01 (push) Successful in 47s
feat(vault01/networking): Simplify the configuration
2024-04-14 14:49:22 +02:00

94 lines
1.7 KiB
Nix

{
lib,
meta,
name,
...
}:
let
inherit (lib) mapAttrs' nameValuePair;
uplink = {
ip = "10.120.33.250";
prefix = 30;
router = "10.120.33.249";
};
mkNetwork =
name:
{
address,
extraNetwork ? { },
...
}:
nameValuePair "10-${name}" ({ inherit name address; } // extraNetwork);
mkNetdev =
name:
{ Id, ... }:
nameValuePair "10-${name}" {
netdevConfig = {
Name = name;
Kind = "vlan";
};
vlanConfig.Id = Id;
};
vlans = {
vlan-uplink-cri = {
Id = 223;
address = with uplink; [ "${ip}/${builtins.toString prefix}" ];
extraNetwork.routes = [
{
routeConfig = {
# Get the public ip from the metadata
PreferredSource = builtins.head meta.network.${name}.addresses.ipv4;
Gateway = uplink.router;
};
}
];
};
vlan-admin = {
Id = 3000;
address = [ "fd26:baf9:d250:8000::1/64" ];
};
vlan-admin-ap = {
Id = 3001;
address = [ "fd26:baf9:d250:8010::1/60" ];
};
vlan-apro = {
Id = 2000;
address = [ "10.0.255.1/24" ];
extraNetwork.networkConfig.DHCPServer = "yes";
};
};
in
{
systemd.network = {
networks = {
"10-enp67s0f0np0" = {
name = "enp67s0f0np0";
networkConfig = {
VLAN = builtins.attrNames vlans;
LinkLocalAddressing = false;
LLDP = false;
EmitLLDP = false;
IPv6AcceptRA = false;
IPv6SendRA = false;
};
};
} // (mapAttrs' mkNetwork vlans);
netdevs = mapAttrs' mkNetdev vlans;
};
networking.firewall.allowedUDPPorts = [ 67 ];
}