diff options
Diffstat (limited to 'sys/boot/chain.nix')
| -rw-r--r-- | sys/boot/chain.nix | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/sys/boot/chain.nix b/sys/boot/chain.nix new file mode 100644 index 0000000..b6a9ab2 --- /dev/null +++ b/sys/boot/chain.nix @@ -0,0 +1,47 @@ +{ + config, + lib, + pkgs, + ... +}: +with lib; let + cfg = config.local.boot; +in { + options.local.boot = { + loader = mkOption { + type = types.enum ["none" "out-of-band" "grub" "systemd-boot"]; + }; + + kernel = mkOption { + type = types.raw; + }; + }; + + config = mkIf (cfg.loader != "none") { + boot = { + kernelPackages = cfg.kernel; + + loader = + if cfg.loader == "none" || cfg.loader == "out-of-band" + then { + grub.enable = false; + } + else if cfg.loader == "grub" + then { + grub = { + enable = true; + device = "nodev"; + efiSupport = true; + }; + } + else if cfg.loader == "systemd-boot" + then { + systemd-boot = { + enable = true; + editor = true; + }; + } + else throw "unexpected config.local.boot.loader setting: ${cfg.loader}"; + }; + }; +} |
