nixos/iface-templates.nix
2025-04-18 19:14:16 -05:00

29 lines
723 B
Nix

let build = iface: mac: rest: {
systemd.network.enable = true;
systemd.network.links."${iface}" = {
linkConfig.Name = iface;
matchConfig.PermanentMACAddress = mac;
};
systemd.network.networks."${iface}".enable = true;
} // rest; in
{
bridge = bridge: ip: gateway: build {
systemd.network.networks."${iface}".bridge = [ bridge ];
systemd.network.networks."${bridge}" = {
address = [ ip ];
gateway = [ gateway ];
};
systemd.network.netdevs."${bridge}" = {
netdevConfig = {
Name = bridge;
Kind = "bridge";
};
};
};
dhcp = build {
systemd.network.networks."${iface}" = {
DHCP = "yes";
};
};
}