summaryrefslogtreecommitdiff
path: root/modules/root/bootloader.nix
diff options
context:
space:
mode:
Diffstat (limited to 'modules/root/bootloader.nix')
-rw-r--r--modules/root/bootloader.nix43
1 files changed, 43 insertions, 0 deletions
diff --git a/modules/root/bootloader.nix b/modules/root/bootloader.nix
new file mode 100644
index 0000000..0a45264
--- /dev/null
+++ b/modules/root/bootloader.nix
@@ -0,0 +1,43 @@
+{ lib, config, ... }: {
+ options = {
+ bootloader.loader = lib.mkOption {
+ type = lib.types.enum [ "grub" "systemd-boot" ];
+ default = "systemd-boot";
+ description = "whether to install grub or systemd-boot as the bootloader";
+ };
+ bootloader.mode = lib.mkOption {
+ type = lib.types.enum [ "efi" "bios" ];
+ default = "efi";
+ description = "whether to install the bootloader in efi or bios mode";
+ };
+ bootloader.grub = {
+ biosDevice = lib.mkOption {
+ type = lib.types.str;
+ description = "device to install grub on";
+ };
+ };
+ bootloader.memtest86.enable = lib.mkEnableOption "make Memtest86+ available from the bootloader";
+ };
+
+ config = {
+ boot.loader = {
+ grub = {
+ enable = config.bootloader.loader == "grub";
+ efiSupport = config.bootloader.mode == "efi";
+ efiInstallAsRemovable = config.bootloader.mode == "efi";
+ device = if config.bootloader.mode == "bios" then config.bootloader.grub.biosDevice else "nodev";
+ enableCryptodisk = true;
+ memtest86.enable = config.bootloader.memtest86.enable;
+ };
+ systemd-boot = {
+ enable = config.bootloader.loader == "systemd-boot";
+ editor = false;
+ memtest86.enable = config.bootloader.memtest86.enable;
+ };
+ efi = lib.mkIf (config.bootloader.mode == "efi") {
+ efiSysMountPoint = lib.mkIf (config.bootloader.loader == "grub") "/boot/efi";
+ canTouchEfiVariables = true;
+ };
+ };
+ };
+}