···
realGrub = if cfg.version == 1 then pkgs.grub
else if cfg.zfsSupport then pkgs.grub2.override { zfsSupport = true; }
-
else if cfg.enableTrustedboot then pkgs.trustedGrub
···
The devices on which the boot loader, GRUB, will be
installed. Can be used instead of <literal>device</literal> to
-
install grub into multiple devices (e.g., if as softraid arrays holding /boot).
···
-
The path to the boot directory where grub will be written. Generally
-
this boot parth should double as an efi path.
···
example = [ "/dev/sda" "/dev/sdb" ];
type = types.listOf types.str;
-
The path to the devices which will have the grub mbr written.
Note these are typically device paths and not paths to partitions.
···
Additional bash commands to be run at the script that
-
prepares the grub menu entries.
···
-
The gfxmode to pass to grub when loading a graphical boot interface under efi.
···
-
The gfxmode to pass to grub when loading a graphical boot interface under bios.
···
type = types.addCheck types.str
(type: type == "uuid" || type == "label" || type == "provided");
-
Determines how grub will identify devices when generating the
configuration file. A value of uuid / label signifies that grub
will always resolve the uuid or label of the device before using
-
it in the configuration. A value of provided means that grub will
use the device name as show in <command>df</command> or
<command>mount</command>. Note, zfs zpools / datasets are ignored
and will always be mounted using their labels.
···
-
Whether grub should be build against libzfs.
ZFS support is only available for GRUB v2.
This option is ignored for GRUB v1.
···
-
Whether grub should be build with EFI support.
EFI support is only available for GRUB v2.
This option is ignored for GRUB v1.
···
-
Enable support for encrypted partitions. Grub should automatically
unlock the correct encrypted partition and look for filesystems.
-
enableTrustedboot = mkOption {
-
Enable trusted boot. Grub will measure all critical components during
the boot process to offer TCG (TPM) support.
···
assertion = !cfg.zfsSupport || cfg.version == 2;
-
message = "Only grub version 2 provides zfs support";
assertion = cfg.mirroredBoots != [ ];
···
message = "You cannot have duplicated devices in mirroredBoots";
-
assertion = !cfg.enableTrustedboot || cfg.version == 2;
message = "Trusted GRUB is only available for GRUB 2";
-
assertion = !cfg.efiSupport || !cfg.enableTrustedboot;
message = "Trusted GRUB does not have EFI support";
-
assertion = !cfg.zfsSupport || !cfg.enableTrustedboot;
message = "Trusted GRUB does not have ZFS support";
-
assertion = !cfg.enableTrustedboot;
message = "Trusted GRUB can break your system. Remove assertion if you want to test trustedGRUB nevertheless.";
] ++ flip concatMap cfg.mirroredBoots (args: [
···
] ++ flip map args.devices (device: {
assertion = device == "nodev" || hasPrefix "/" device;
-
message = "Grub devices must be absolute paths, not ${dev} in ${args.path}";