{ 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}"; }; }; }