From f26cea290515a975352b3b39e83ae0e3718dd277 Mon Sep 17 00:00:00 2001 From: J Date: Wed, 5 Jun 2024 18:40:48 +1000 Subject: [PATCH] Support kexec for booting on platforms without ISO or iPXE support --- Makefile | 3 +++ flake.nix | 1 + systems/kexec.nix | 57 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 61 insertions(+) create mode 100644 systems/kexec.nix diff --git a/Makefile b/Makefile index 6809040577e3f..7d951a5ab298e 100644 --- a/Makefile +++ b/Makefile @@ -11,3 +11,6 @@ iso: netboot: nix build --extra-experimental-features nix-command --extra-experimental-features flakes -L --print-out-paths --show-trace '.#netboot' + +kexec: + nix build --extra-experimental-features nix-command --extra-experimental-features flakes -L --print-out-paths --show-trace '.#kexec' diff --git a/flake.nix b/flake.nix index d80800b83295c..c631de1d585d9 100644 --- a/flake.nix +++ b/flake.nix @@ -15,6 +15,7 @@ x86_64-linux = { iso = import ./systems/iso.nix flakeContext; netboot = import ./systems/netboot.nix flakeContext; + kexec = import ./systems/kexec.nix flakeContext; }; }; }; diff --git a/systems/kexec.nix b/systems/kexec.nix new file mode 100644 index 0000000000000..d295430d7ef11 --- /dev/null +++ b/systems/kexec.nix @@ -0,0 +1,57 @@ +{ inputs, ... }@flakeContext: +let + kexec = { config, lib, pkgs, ... }: { + imports = [ + ../repo/modules/services/openmesh/xnode/admin.nix + ]; + config = { + documentation = { + nixos = { + enable = false; + }; + doc = { + enable = false; + }; + }; + services = { + openmesh = { + xnode = { + admin = { + enable = true; + }; + }; + }; + getty = { + greetingLine = ''<<< Welcome to Openmesh XnodeOS ${config.system.nixos.label} (\m) - \l >>>''; + }; + }; + environment = { + systemPackages = with pkgs; [ + nyancat + ]; + }; + kexec = { + squashfsCompression = "gzip -Xcompression-level 1"; + }; + networking = { + hostName = "xnode"; + }; + users = { + users = { + xnode = { + isNormalUser = true; + password = "xnode"; + extraGroups = [ "wheel" ]; + }; + }; + }; + }; + }; +in +inputs.nixos-generators.nixosGenerate { + system = "x86_64-linux"; + format = "kexec"; + modules = [ + kexec + ]; +}