nixos/uki: add configFile option

This option makes it easier to reuse a system's ukify.conf without the
need for manually calling the generator on `settings` again to receive a
rendered configuration file.

Theoretically, a complete configuration file could now be provided by
users.
This commit is contained in:
WilliButz 2024-03-19 17:58:28 +01:00
parent 9a747326c4
commit e9fa0ec5fe
No known key found for this signature in database
GPG key ID: AB05DF703EB9DC70

View file

@ -7,8 +7,6 @@ let
inherit (pkgs.stdenv.hostPlatform) efiArch; inherit (pkgs.stdenv.hostPlatform) efiArch;
format = pkgs.formats.ini { }; format = pkgs.formats.ini { };
ukifyConfig = format.generate "ukify.conf" cfg.settings;
in in
{ {
@ -48,6 +46,15 @@ in
contains and how it is built. contains and how it is built.
''; '';
}; };
configFile = lib.mkOption {
type = lib.types.path;
description = lib.mdDoc ''
The configuration file passed to {manpage}`ukify(1)` to create the UKI.
By default this configuration file is created from {option}`boot.uki.settings`.
'';
};
}; };
system.boot.loader.ukiFile = lib.mkOption { system.boot.loader.ukiFile = lib.mkOption {
@ -80,6 +87,8 @@ in
}; };
}; };
boot.uki.configFile = lib.mkOptionDefault (format.generate "ukify.conf" cfg.settings);
system.boot.loader.ukiFile = system.boot.loader.ukiFile =
let let
name = config.boot.uki.name; name = config.boot.uki.name;
@ -92,7 +101,7 @@ in
system.build.uki = pkgs.runCommand config.system.boot.loader.ukiFile { } '' system.build.uki = pkgs.runCommand config.system.boot.loader.ukiFile { } ''
mkdir -p $out mkdir -p $out
${pkgs.buildPackages.systemdUkify}/lib/systemd/ukify build \ ${pkgs.buildPackages.systemdUkify}/lib/systemd/ukify build \
--config=${ukifyConfig} \ --config=${cfg.configFile} \
--output="$out/${config.system.boot.loader.ukiFile}" --output="$out/${config.system.boot.loader.ukiFile}"
''; '';