sneeuwvlok/modules/nixos/boot/default.nix
2025-07-30 21:38:15 +02:00

96 lines
1.9 KiB
Nix

{ lib, namespace, config, pkgs, ... }:
let
inherit (lib) mkIf mkMerge mkDefault mkOption;
inherit (lib.types) enum bool;
cfg = config.${namespace}.boot;
in
{
options.${namespace}.boot = {
type = mkOption {
type = enum [ "bios" "uefi" ];
default = "uefi";
};
quiet = mkOption {
type = bool;
default = false;
};
animated = mkOption {
type = bool;
default = false;
};
};
config = mkMerge [
({
boot = {
kernelPackages = pkgs.linuxPackages_latest;
loader = {
systemd-boot.enable = false;
grub.enable = true;
grub2-theme = {
enable = true;
theme = "vimix";
footer = true;
};
};
supportedFilesystems = [ "nfs" ];
};
})
(mkIf (cfg.type == "bios") {
boot.loader.grub.efiSupport = false;
})
(mkIf (cfg.type == "uefi") {
boot.loader = {
efi.canTouchEfiVariables = true;
grub = {
efiSupport = true;
efiInstallAsRemovable = mkDefault false;
device = "nodev"; # INFO: https://discourse.nixos.org/t/question-about-grub-and-nodev
};
};
})
(mkIf cfg.quiet {
boot = {
consoleLogLevel = 0;
initrd = {
systemd.enable = true;
verbose = false;
};
kernelParams = [
"quiet"
"loglevel=3"
"systemd.show_status=auto"
"udev.log_level=3"
"rd.udev.log_level=3"
"vt.global_cursor_default=0"
];
loader.timeout = mkDefault 0;
};
})
(mkIf cfg.animated {
boot.plymouth = {
enable = true;
theme = mkDefault "pixels";
themePackages = with pkgs; [
(adi1090x-plymouth-themes.override {
selected_themes = [ "pixels" ];
})
];
};
})
];
}