nixos/iface-templates.nix
2025-04-19 01:20:31 +00:00

31 lines
776 B
Nix

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