]> git.scottworley.com Git - auto-upgrade-with-pinch/blobdiff - modules/auto-upgrade.nix
Accept multiple signing keys
[auto-upgrade-with-pinch] / modules / auto-upgrade.nix
index 216c4baf8fa624e4d2ed08680c21edfa0ccd27d4..66d857f74a1d1f9ce7e21750a7ba3f84abceafe2 100644 (file)
@@ -3,7 +3,7 @@ with lib;
 let
   cfg = config.system.autoUpgradeWithPinch;
   auto-upgrade-script = pkgs.writeShellScript "auto-upgrade" ''
-    flock /run/auto-upgrade-with-pinch ${
+    ${pkgs.utillinux}/bin/flock /run/auto-upgrade-with-pinch ${
       pkgs.writeShellScript "auto-upgrade-with-lock-held" ''
         set -e
 
@@ -18,7 +18,7 @@ let
         as_user() {
           ${
             if cfg.userEnvironment.enable then ''
-              sudo -u ${escapeShellArg cfg.userEnvironment.user} "$@"
+              /run/wrappers/bin/sudo -u ${escapeShellArg cfg.userEnvironment.user} "$@"
             '' else ''
               :
             ''
@@ -28,13 +28,13 @@ let
         # Update channels
         (
           cd /etc/nixos
-          ${pkgs.keyedgit cfg.key}/bin/git pull --ff-only --verify-signatures
+          ${pkgs.keyedgit cfg.keys}/bin/git pull --ff-only --verify-signatures
           ${pkgs.pinch}/bin/pinch update channels
         )
 
         # Build
         in_tmpdir ${config.system.build.nixos-rebuild}/bin/nixos-rebuild build
-        as_user nix-build '<nixpkgs>' -A ${
+        as_user nix-build --no-out-link '<nixpkgs>' -A ${
           escapeShellArg cfg.userEnvironment.package
         }
 
@@ -71,11 +71,12 @@ in {
         '';
       };
 
-      key = mkOption {
+      keys = mkOption {
         type = types.path;
         description = ''
-          GPG key that signs updates.  Updates are only merged if the commit
-          at the tip of the remote branch is signed with this key.
+          File containing GPG keys that sign updates.  Updates are only merged
+          if the commit at the tip of the remote branch is signed with one of
+          these keys.
         '';
       };
 
@@ -137,7 +138,7 @@ in {
       (import ../overlays/pinch.nix)
       (self: super: {
         auto-upgrade = super.writeShellScriptBin "auto-upgrade" ''
-          sudo ${auto-upgrade-script}
+          /run/wrappers/bin/sudo ${auto-upgrade-script}
         '';
       })
     ];