diff options
Diffstat (limited to 'hosts/vidhar/network/dhcp/default.nix')
-rw-r--r-- | hosts/vidhar/network/dhcp/default.nix | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/hosts/vidhar/network/dhcp/default.nix b/hosts/vidhar/network/dhcp/default.nix index dfaa4c9f..d3407f1d 100644 --- a/hosts/vidhar/network/dhcp/default.nix +++ b/hosts/vidhar/network/dhcp/default.nix | |||
@@ -23,6 +23,12 @@ with lib; | |||
23 | }; | 23 | }; |
24 | 24 | ||
25 | client-classes = [ | 25 | client-classes = [ |
26 | { name = "eos-ipxe"; | ||
27 | test = "hexstring(pkt4.mac, ':') == '00:d8:61:79:c5:40' and option[77].hex == 'iPXE'"; | ||
28 | next-server = "10.141.0.1"; | ||
29 | boot-file-name = "http://nfsroot.vidhar.yggdrasil/eos/netboot.ipxe"; | ||
30 | only-if-required = true; | ||
31 | } | ||
26 | { name = "ipxe"; | 32 | { name = "ipxe"; |
27 | test = "option[77].hex == 'iPXE'"; | 33 | test = "option[77].hex == 'iPXE'"; |
28 | next-server = "10.141.0.1"; | 34 | next-server = "10.141.0.1"; |
@@ -85,7 +91,7 @@ with lib; | |||
85 | ddns-send-updates = true; | 91 | ddns-send-updates = true; |
86 | ddns-qualifying-suffix = "lan.yggdrasil"; | 92 | ddns-qualifying-suffix = "lan.yggdrasil"; |
87 | pools = [ { pool = "10.141.0.128 - 10.141.0.254"; } ]; | 93 | pools = [ { pool = "10.141.0.128 - 10.141.0.254"; } ]; |
88 | require-client-classes = ["ipxe" "uefi-64" "uefi-32" "legacy"]; | 94 | require-client-classes = map (cc: cc.name) config.services.kea.dhcp4.settings.client-classes; |
89 | reservations = [ | 95 | reservations = [ |
90 | { hostname = "sif"; | 96 | { hostname = "sif"; |
91 | hw-address = "3c:e1:a1:52:24:35"; | 97 | hw-address = "3c:e1:a1:52:24:35"; |
@@ -258,7 +264,25 @@ with lib; | |||
258 | ${pkgs.closureInfo { rootPaths = installerBuild.storeContents; }}/registration | 264 | ${pkgs.closureInfo { rootPaths = installerBuild.storeContents; }}/registration |
259 | '') | 265 | '') |
260 | ) ["x86_64-linux"] | 266 | ) ["x86_64-linux"] |
261 | ); | 267 | ) ++ [ |
268 | (let | ||
269 | eosBuild = (flake.nixosConfigurations.eos.extendModules { | ||
270 | modules = [ | ||
271 | ({ ... }: { | ||
272 | config.nfsroot.storeDevice = "10.141.0.1:nix-store"; | ||
273 | config.nfsroot.registrationUrl = "http://nfsroot.vidhar.yggdrasil/eos/registration"; | ||
274 | }) | ||
275 | ]; | ||
276 | }).config.system.build; | ||
277 | in builtins.toPath (pkgs.runCommandLocal "eos" {} '' | ||
278 | mkdir -p $out/eos | ||
279 | install -m 0444 -t $out/eos \ | ||
280 | ${eosBuild.initialRamdisk}/initrd \ | ||
281 | ${eosBuild.kernel}/bzImage \ | ||
282 | ${eosBuild.netbootIpxeScript}/netboot.ipxe \ | ||
283 | ${pkgs.closureInfo { rootPaths = eosBuild.storeContents; }}/registration | ||
284 | '')) | ||
285 | ]; | ||
262 | }; | 286 | }; |
263 | }; | 287 | }; |
264 | }; | 288 | }; |