96 lines
1.9 KiB
Nix
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" ];
|
|
})
|
|
];
|
|
};
|
|
})
|
|
];
|
|
}
|