nixos/boot.uki: allow partial overrides of default UKI settings

Previously any user-provided config for boot.uki.settings would need to
either specify a full set of config for ukify or a combination of
mkOptionDefault to merge the "settings" attribute set with the module's
defaults and then mkOverride or mkForce to override a contained
attribute.

Now it is possible to trivially override parts of the module's default
config, such as the initrd or kernel command line, but overriding the
full set of settings now requires mkOverride / mkForce.
This commit is contained in:
WilliButz 2024-01-30 23:43:17 +01:00
parent 898c3061fe
commit ccff749532
No known key found for this signature in database
GPG key ID: AB05DF703EB9DC70

View file

@ -51,16 +51,16 @@ in
else
"nixos");
boot.uki.settings = lib.mkOptionDefault {
boot.uki.settings = {
UKI = {
Linux = "${config.boot.kernelPackages.kernel}/${config.system.boot.loader.kernelFile}";
Initrd = "${config.system.build.initialRamdisk}/${config.system.boot.loader.initrdFile}";
Cmdline = "init=${config.system.build.toplevel}/init ${toString config.boot.kernelParams}";
Stub = "${pkgs.systemd}/lib/systemd/boot/efi/linux${efiArch}.efi.stub";
Uname = "${config.boot.kernelPackages.kernel.modDirVersion}";
OSRelease = "@${config.system.build.etc}/etc/os-release";
Linux = lib.mkOptionDefault "${config.boot.kernelPackages.kernel}/${config.system.boot.loader.kernelFile}";
Initrd = lib.mkOptionDefault "${config.system.build.initialRamdisk}/${config.system.boot.loader.initrdFile}";
Cmdline = lib.mkOptionDefault "init=${config.system.build.toplevel}/init ${toString config.boot.kernelParams}";
Stub = lib.mkOptionDefault "${pkgs.systemd}/lib/systemd/boot/efi/linux${efiArch}.efi.stub";
Uname = lib.mkOptionDefault "${config.boot.kernelPackages.kernel.modDirVersion}";
OSRelease = lib.mkOptionDefault "@${config.system.build.etc}/etc/os-release";
# This is needed for cross compiling.
EFIArch = efiArch;
EFIArch = lib.mkOptionDefault efiArch;
};
};