{ pkgs, config, ... }: { services.kea.dhcp4 = { enable = true; settings = { interfaces-config = { interfaces = [ "enp4s0f0" "enp4s0f1" ]; }; lease-database = { name = "/var/lib/kea/dhcp4.leases"; persist = true; type = "memfile"; }; rebind-timer = 2000; renew-timer = 1000; subnet4 = [ { subnet = "10.33.64.0/20"; interface = "enp4s0f1"; pools = [ { pool = "10.33.65.100 - 10.33.65.200"; } ]; option-data = [ { name = "routers"; data = "10.33.64.1"; } { name = "domain-name-servers"; data = "10.0.0.53"; } { name = "domain-name"; data = config.networking.domain; } { name = "domain-search"; data = config.networking.domain; } ]; } { subnet = "10.32.44.0/24"; interface = "enp4s0f1"; pools = [ { pool = "10.32.44.100 - 10.32.44.200"; } ]; option-data = [ { name = "routers"; data = "10.32.44.1"; } { name = "domain-name-servers"; data = "10.0.0.53"; } { name = "domain-name"; data = config.networking.domain; } { name = "domain-search"; data = config.networking.domain; } ]; } ]; valid-lifetime = 4000; }; }; networking.firewall.allowedUDPPorts = [ 67 68 # DHCP ]; services.pixiecore = let script = pkgs.writeText "boot-local.ipxe" '' #!ipxe sleep 2 sanboot -n -d 0x80 shell ''; in { enable = true; dhcpNoBind = true; port = 5080; mode = "boot"; kernel = toString script; openFirewall = true; }; }