74 lines
2.0 KiB
Nix
74 lines
2.0 KiB
Nix
{
|
|
nixos =
|
|
{
|
|
config,
|
|
lib,
|
|
inputs,
|
|
...
|
|
}:
|
|
let
|
|
cfg = config.features.bootloader;
|
|
in
|
|
{
|
|
imports = [ inputs.lanzaboote.nixosModules.lanzaboote ];
|
|
|
|
options.features.bootloader = {
|
|
enable = lib.mkEnableOption "bootloader";
|
|
|
|
mode = lib.mkOption {
|
|
type = lib.types.enum [
|
|
"systemd-boot"
|
|
"lanzaboote"
|
|
];
|
|
default = "systemd-boot";
|
|
};
|
|
|
|
plymouth.enable = lib.mkEnableOption "plymouth boot splash";
|
|
};
|
|
|
|
config = lib.mkIf cfg.enable (
|
|
lib.mkMerge [
|
|
{
|
|
boot.loader.efi.canTouchEfiVariables = true;
|
|
# request the largest framebuffer uefi offers; plymouth inherits it
|
|
boot.loader.systemd-boot.consoleMode = "max";
|
|
}
|
|
|
|
(lib.mkIf (cfg.mode == "systemd-boot") {
|
|
boot.loader.systemd-boot.enable = true;
|
|
})
|
|
|
|
(lib.mkIf (cfg.mode == "lanzaboote") {
|
|
boot.loader.systemd-boot.enable = lib.mkForce false;
|
|
boot.lanzaboote = {
|
|
enable = true;
|
|
pkiBundle = "/var/lib/sbctl";
|
|
};
|
|
})
|
|
|
|
(lib.mkIf cfg.plymouth.enable {
|
|
# plymouth needs systemd-initrd to render the luks prompt cleanly
|
|
boot.initrd.systemd.enable = true;
|
|
|
|
# host is responsible for early-KMS so plymouth lands on the gpu driver,
|
|
# not simpledrm (e.g. hardware.amdgpu.initrd.enable on amd hosts)
|
|
boot.plymouth.enable = true;
|
|
stylix.targets.plymouth.logoAnimated = false;
|
|
|
|
boot.kernelParams = [
|
|
"quiet"
|
|
"splash"
|
|
"loglevel=3"
|
|
"rd.systemd.show_status=false"
|
|
"rd.udev.log_level=3"
|
|
"udev.log_priority=3"
|
|
"plymouth.force-scale=1"
|
|
];
|
|
boot.consoleLogLevel = 0;
|
|
boot.initrd.verbose = false;
|
|
})
|
|
]
|
|
);
|
|
};
|
|
}
|