summary refs log tree commit diff
path: root/nixos/modules/system/boot
diff options
context:
space:
mode:
authorJörg Thalheim <Mic92@users.noreply.github.com>2021-01-23 16:18:22 +0000
committerGitHub <noreply@github.com>2021-01-23 16:18:22 +0000
commit17da58accadc931534ed0d8a2b81097db3f41e7f (patch)
tree900d6f6f17dab63553c3b4a0b0091ab03a909e92 /nixos/modules/system/boot
parent75666aad62b1b66909b9656a9619e08cb6919543 (diff)
parent771ba47d564b734ac7644c19032b19a95a9e840e (diff)
downloadnixpkgs-17da58accadc931534ed0d8a2b81097db3f41e7f.tar
nixpkgs-17da58accadc931534ed0d8a2b81097db3f41e7f.tar.gz
nixpkgs-17da58accadc931534ed0d8a2b81097db3f41e7f.tar.bz2
nixpkgs-17da58accadc931534ed0d8a2b81097db3f41e7f.tar.lz
nixpkgs-17da58accadc931534ed0d8a2b81097db3f41e7f.tar.xz
nixpkgs-17da58accadc931534ed0d8a2b81097db3f41e7f.tar.zst
nixpkgs-17da58accadc931534ed0d8a2b81097db3f41e7f.zip
Merge pull request #108242 from GovanifY/grub-additional
boot.loader.grub: add extraInstallCommands option
Diffstat (limited to 'nixos/modules/system/boot')
-rw-r--r--nixos/modules/system/boot/loader/grub/grub.nix22
1 files changed, 21 insertions, 1 deletions
diff --git a/nixos/modules/system/boot/loader/grub/grub.nix b/nixos/modules/system/boot/loader/grub/grub.nix
index df5dfaa554b..289c2b19986 100644
--- a/nixos/modules/system/boot/loader/grub/grub.nix
+++ b/nixos/modules/system/boot/loader/grub/grub.nix
@@ -327,6 +327,26 @@ in
         '';
       };
 
+      extraInstallCommands = mkOption {
+        default = "";
+        example = literalExample ''
+          # the example below generates detached signatures that GRUB can verify
+          # https://www.gnu.org/software/grub/manual/grub/grub.html#Using-digital-signatures
+          ''${pkgs.findutils}/bin/find /boot -not -path "/boot/efi/*" -type f -name '*.sig' -delete
+          old_gpg_home=$GNUPGHOME
+          export GNUPGHOME="$(mktemp -d)"
+          ''${pkgs.gnupg}/bin/gpg --import ''${priv_key} > /dev/null 2>&1
+          ''${pkgs.findutils}/bin/find /boot -not -path "/boot/efi/*" -type f -exec ''${pkgs.gnupg}/bin/gpg --detach-sign "{}" \; > /dev/null 2>&1
+          rm -rf $GNUPGHOME
+          export GNUPGHOME=$old_gpg_home
+        '';
+        type = types.lines;
+        description = ''
+          Additional shell commands inserted in the bootloader installer
+          script after generating menu entries.
+        '';
+      };
+
       extraPerEntryConfig = mkOption {
         default = "";
         example = "root (hd0)";
@@ -715,7 +735,7 @@ in
         ${optionalString cfg.enableCryptodisk "export GRUB_ENABLE_CRYPTODISK=y"}
       '' + flip concatMapStrings cfg.mirroredBoots (args: ''
         ${pkgs.perl}/bin/perl ${install-grub-pl} ${grubConfig args} $@
-      ''));
+      '') + cfg.extraInstallCommands);
 
       system.build.grub = grub;