diff --git a/hosts/fw.cloonar.com/modules/dhcp4.nix b/hosts/fw.cloonar.com/modules/dhcp4.nix index d750f5b..8ab57a3 100644 --- a/hosts/fw.cloonar.com/modules/dhcp4.nix +++ b/hosts/fw.cloonar.com/modules/dhcp4.nix @@ -1,45 +1,170 @@ { ... }: { - services.dhcpd4 = { + services.kea.dhcpd4 = { enable = true; - interfaces = [ "lan" "server" "smart" "multimedia" "guest" ]; - extraConfig = '' - option domain-name-servers 10.42.97.1, 9.9.9.9; - option subnet-mask 255.255.255.0; - - subnet 10.42.96.0 netmask 255.255.255.0 { - option broadcast-address 10.42.96.255; - option routers 10.42.97.1; - interface lan; - range 10.42.96.128 10.42.96.254; - } - - subnet 10.42.97.0 netmask 255.255.255.0 { - option broadcast-address 10.42.97.255; - option routers 10.42.97.1; - interface server; - range 10.42.96.128 10.42.97.254; - } - - subnet 10.42.99.0 netmask 255.255.255.0 { - option broadcast-address 10.42.99.255; - option routers 10.42.99.1; - interface multimedia; - range 10.42.99.128 10.42.99.254; - } - - subnet 10.42.100.0 netmask 255.255.255.0 { - option broadcast-address 10.42.100.255; - option routers 10.42.100.1; - interface smart; - range 10.42.100.128 10.42.100.254; - } - - subnet 10.42.254.0 netmask 255.255.255.0 { - option broadcast-address 10.42.254.255; - option routers 10.42.254.1; - interface guest; - range 10.42.100.128 10.42.254.254; - } - ''; + settings = { + interfaces-config = { + interfaces = [ + "lan" + "server" + "multimedia" + "smart" + "guest" + ]; + }; + lease-database = { + name = "/var/lib/kea/dhcp4.leases"; + persist = true; + type = "memfile"; + }; + rebind-timer = 2000; + renew-timer = 1000; + subnet4 = [ + { + pools = [ + { + pool = "10.42.96.100 - 10.42.96.240"; + } + ]; + subnet = "10.42.96.0/24"; + interface = "lan"; + reservations = [ + { + hw-address = "98:b6:e9:b6:ef:f4"; + ip-address = "10.42.96.21"; + server-hostname = "switch.cloonar.com"; + } + { + hw-address = "c4:a7:2b:c7:ea:30"; + ip-address = "10.42.96.167"; + server-hostname = "metz.cloonar.com"; + } + { + hw-address = "bc:33:29:ed:24:f0"; + ip-address = "10.42.96.176"; + server-hostname = "ps5-living.cloonar.com"; + } + ]; + } + { + pools = [ + { + pool = "10.42.97.100 - 10.42.97.240"; + } + ]; + subnet = "10.42.97.0/24"; + interface = "server"; + reservations = [ + { + hw-address = "0a:0e:52:a2:f7:8e"; + ip-address = "10.42.97.20"; + server-hostname = "home-assistant.cloonar.com"; + } + { + hw-address = "36:2a:c9:26:d7:77"; + ip-address = "10.42.97.118"; + server-hostname = "git.cloonar.com"; + } + ]; + } + { + pools = [ + { + pool = "10.42.99.100 - 10.42.99.240"; + } + ]; + subnet = "10.42.99.0/24"; + interface = "multimedia"; + } + { + pools = [ + { + pool = "10.42.100.100 - 10.42.100.240"; + } + ]; + subnet = "10.42.100.0/24"; + interface = "guest"; + } + { + pools = [ + { + pool = "10.42.254.100 - 10.42.254.240"; + } + ]; + subnet = "10.42.254.0/24"; + interface = "smart"; + reservations = [ + { + hw-address = "7a:5a:d6:d0:29:fe"; + ip-address = "10.42.254.10"; + server-hostname = "home-assistant.cloonar.smart"; + } + { + hw-address = "60:a4:23:97:4a:ec"; + ip-address = "10.42.254.21"; + server-hostname = "shellymotionsensor-60A423974AEC.cloonar.smart"; + } + { + hw-address = "8c:aa:b5:61:6f:e2"; + ip-address = "10.42.254.103"; + server-hostname = "ShellyBulbDuo-8CAAB5616FE2.cloonar.smart"; + } + { + hw-address = "8c:aa:b5:61:6e:9e"; + ip-address = "10.42.254.104"; + server-hostname = "ShellyBulbDuo-8CAAB5616E9E.cloonar.smart"; + } + { + hw-address = "cc:50:e3:bc:27:64"; + ip-address = "10.42.254.112"; + server-hostname = "Nuki_Bridge_1A753F72.cloonar.smart"; + } + { + hw-address = "e8:db:84:aa:19:6d"; + ip-address = "10.42.254.116"; + server-hostname = "shellybutton1-E8DB84AA196D.cloonar.smart"; + } + { + hw-address = "e8:db:84:a9:ea:be"; + ip-address = "10.42.254.117"; + server-hostname = "ShellyBulbDuo-E8DB84A9EABE.cloonar.smart"; + } + { + hw-address = "e8:db:84:a9:d1:8b"; + ip-address = "10.42.254.119"; + server-hostname = "shellycolorbulb-E8DB84A9D18B.cloonar.smart"; + } + { + hw-address = "3c:61:05:e5:96:e0"; + ip-address = "10.42.254.120"; + server-hostname = "shellycolorbulb-3C6105E596E0.cloonar.smart"; + } + { + hw-address = "e8:db:84:a9:d7:ef"; + ip-address = "10.42.254.121"; + server-hostname = "shellycolorbulb-E8DB84A9D7EF.cloonar.smart"; + } + { + hw-address = "e8:db:84:aa:51:aa"; + ip-address = "10.42.254.122"; + server-hostname = "shellycolorbulb-E8DB84AA51AA.cloonar.smart"; + } + { + hw-address = "34:6f:24:f3:af:ad"; + ip-address = "10.42.254.137"; + server-hostname = "daikin86604.cloonar.smart"; + } + { + hw-address = "34:6f:24:c1:f8:54"; + ip-address = "10.42.254.139"; + server-hostname = "daikin53800.cloonar.smart"; + } + ]; + } + ]; + dhcp-ddns = { + enable-updates = true; + }; + valid-lifetime = 4000; + }; }; }