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"; }; }; }