diff options
author | Matthew Bauer <mjbauer95@gmail.com> | 2019-03-21 11:39:45 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-03-21 11:39:45 -0400 |
commit | 73be6fba8b7c02e2b7dc22298d2bdbd8ece7bc80 (patch) | |
tree | 8cc9479e8c805fd31a5cd7c96f38ecec2930e40a /nixos/modules/system | |
parent | 6e982c4c328835d50a2261f95bffb2c21d4652f7 (diff) | |
parent | e51a8402597b7d3ba505b35451c86c8c7bf63d5e (diff) | |
download | nixlib-73be6fba8b7c02e2b7dc22298d2bdbd8ece7bc80.tar nixlib-73be6fba8b7c02e2b7dc22298d2bdbd8ece7bc80.tar.gz nixlib-73be6fba8b7c02e2b7dc22298d2bdbd8ece7bc80.tar.bz2 nixlib-73be6fba8b7c02e2b7dc22298d2bdbd8ece7bc80.tar.lz nixlib-73be6fba8b7c02e2b7dc22298d2bdbd8ece7bc80.tar.xz nixlib-73be6fba8b7c02e2b7dc22298d2bdbd8ece7bc80.tar.zst nixlib-73be6fba8b7c02e2b7dc22298d2bdbd8ece7bc80.zip |
Merge pull request #54625 from FlorianFranzen/efi32
grub: Support 32bit EFI on 64bit platforms
Diffstat (limited to 'nixos/modules/system')
-rw-r--r-- | nixos/modules/system/boot/loader/grub/grub.nix | 35 |
1 files changed, 22 insertions, 13 deletions
diff --git a/nixos/modules/system/boot/loader/grub/grub.nix b/nixos/modules/system/boot/loader/grub/grub.nix index a1537ad3cedc..d3cf8b29bb46 100644 --- a/nixos/modules/system/boot/loader/grub/grub.nix +++ b/nixos/modules/system/boot/loader/grub/grub.nix @@ -8,13 +8,17 @@ let efi = config.boot.loader.efi; - realGrub = if cfg.version == 1 then pkgs.grub - else if cfg.zfsSupport then pkgs.grub2.override { zfsSupport = true; } + grubPkgs = + # Package set of targeted architecture + if cfg.forcei686 then pkgs.pkgsi686Linux else pkgs; + + realGrub = if cfg.version == 1 then grubPkgs.grub + else if cfg.zfsSupport then grubPkgs.grub2.override { zfsSupport = true; } else if cfg.trustedBoot.enable then if cfg.trustedBoot.isHPLaptop - then pkgs.trustedGrub-for-HP - else pkgs.trustedGrub - else pkgs.grub2; + then grubPkgs.trustedGrub-for-HP + else grubPkgs.trustedGrub + else grubPkgs.grub2; grub = # Don't include GRUB if we're only generating a GRUB menu (e.g., @@ -58,14 +62,10 @@ let version extraConfig extraPerEntryConfig extraEntries forceInstall useOSProber extraEntriesBeforeNixOS extraPrepareConfig extraInitrd configurationLimit copyKernels default fsIdentifier efiSupport efiInstallAsRemovable gfxmodeEfi gfxmodeBios; - path = (makeBinPath ([ - pkgs.coreutils pkgs.gnused pkgs.gnugrep pkgs.findutils pkgs.diffutils pkgs.btrfs-progs - pkgs.utillinux ] - ++ (optional (cfg.efiSupport && (cfg.version == 2)) pkgs.efibootmgr) - ++ (optionals cfg.useOSProber [pkgs.busybox pkgs.os-prober]) - )) + ":" + (makeSearchPathOutput "bin" "sbin" [ - pkgs.mdadm pkgs.utillinux - ]); + path = with pkgs; makeBinPath ( + [ coreutils gnused gnugrep findutils diffutils btrfs-progs utillinux mdadm ] + ++ optional (cfg.efiSupport && (cfg.version == 2)) efibootmgr + ++ optionals cfg.useOSProber [ busybox os-prober ]); font = if cfg.font == null then "" else (if lib.last (lib.splitString "." cfg.font) == "pf2" then cfg.font @@ -512,6 +512,15 @@ in ''; }; + forcei686 = mkOption { + default = false; + type = types.bool; + description = '' + Whether to force the use of a ia32 boot loader on x64 systems. Required + to install and run NixOS on 64bit x86 systems with 32bit (U)EFI. + ''; + }; + trustedBoot = { enable = mkOption { |