diff --git a/m/hut/configuration.nix b/m/hut/configuration.nix index 14c7881..1356780 100644 --- a/m/hut/configuration.nix +++ b/m/hut/configuration.nix @@ -9,6 +9,7 @@ ./nfs.nix ./slurm-daemon.nix ./ceph.nix + ./pxe.nix agenix.nixosModules.default ]; diff --git a/m/hut/pxe.nix b/m/hut/pxe.nix new file mode 100644 index 0000000..65e6fb4 --- /dev/null +++ b/m/hut/pxe.nix @@ -0,0 +1,26 @@ +{ theFlake, pkgs, ... }: + +# This module describes a script that can launch the pixiecore daemon to serve a +# NixOS image via PXE to a node to directly boot from there, without requiring a +# working disk. + +let + # The host config must have the netboot-minimal.nix module too + host = theFlake.nixosConfigurations.lake2; + sys = host.config.system; + build = sys.build; + kernel = "${build.kernel}/bzImage"; + initrd = "${build.netbootRamdisk}/initrd"; + init = "${build.toplevel}/init"; + + script = pkgs.writeShellScriptBin "pixiecore-helper" '' + #!/usr/bin/env bash -x + + ${pkgs.pixiecore}/bin/pixiecore \ + boot ${kernel} ${initrd} --cmdline "init=${init} loglevel=4" \ + --debug --dhcp-no-bind --port 64172 --status-port 64172 "$@" + ''; +in +{ + environment.systemPackages = [ script ]; +}