diff options
author | Vincent Haupert <vincent@yaxi.tech> | 2023-08-02 12:40:51 +0200 |
---|---|---|
committer | Vincent Haupert <vincent@yaxi.tech> | 2023-08-04 12:46:03 +0200 |
commit | fbebce610fb44b1de7c3abbed814ada4ba374426 (patch) | |
tree | 7003689ec2e6e10a9c1a2aa2896f79da62ada724 /nixos/modules/system/boot | |
parent | 69a04542c76a883de0ae5d8001b5612ebdfdb14a (diff) |
nixos/toplevel: move systemBuilder for `boot.kernel.enable`
This avoids creating a build-time reference on `boot.kernelParams` if the configuration does not use a kernel, i.e., `boot.kernel.enable` is set to `false`.
Diffstat (limited to 'nixos/modules/system/boot')
-rw-r--r-- | nixos/modules/system/boot/kernel.nix | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/nixos/modules/system/boot/kernel.nix b/nixos/modules/system/boot/kernel.nix index 0298e28f32897..9ea6119196761 100644 --- a/nixos/modules/system/boot/kernel.nix +++ b/nixos/modules/system/boot/kernel.nix @@ -309,6 +309,38 @@ in system.modulesTree = [ kernel ] ++ config.boot.extraModulePackages; + # Not required for, e.g., containers as they don't have their own kernel or initrd. + # They boot directly into stage 2. + system.systemBuilderArgs.kernelParams = config.boot.kernelParams; + system.systemBuilderCommands = + let + kernelPath = "${config.boot.kernelPackages.kernel}/" + + "${config.system.boot.loader.kernelFile}"; + initrdPath = "${config.system.build.initialRamdisk}/" + + "${config.system.boot.loader.initrdFile}"; + in + '' + if [ ! -f ${kernelPath} ]; then + echo "The bootloader cannot find the proper kernel image." + echo "(Expecting ${kernelPath})" + false + fi + + ln -s ${kernelPath} $out/kernel + ln -s ${config.system.modulesTree} $out/kernel-modules + ${optionalString (config.hardware.deviceTree.package != null) '' + ln -s ${config.hardware.deviceTree.package} $out/dtbs + ''} + + echo -n "$kernelParams" > $out/kernel-params + + ln -s ${initrdPath} $out/initrd + + ln -s ${config.system.build.initialRamdiskSecretAppender}/bin/append-initrd-secrets $out + + ln -s ${config.hardware.firmware}/lib/firmware $out/firmware + ''; + # Implement consoleLogLevel both in early boot and using sysctl # (so you don't need to reboot to have changes take effect). boot.kernelParams = |