]> git.scottworley.com Git - auto-upgrade-with-pinch/blobdiff - modules/auto-upgrade.nix
Disallow concurrent auto-upgrade runs
[auto-upgrade-with-pinch] / modules / auto-upgrade.nix
index 974ebb7a9d96a091e0157428aa6d817b9bfa0949..2326eccfd7c1c52bcac2e9a539fa7db0953fd160 100644 (file)
@@ -42,14 +42,16 @@ in {
       (import ../overlays/pinch.nix)
       (self: super: {
         auto-upgrade = super.writeShellScriptBin "auto-upgrade" ''
-        set -e
-        (
-          cd /etc/nixos
-          ${self.keyedgit cfg.key}/bin/git pull --ff-only --verify-signatures
-          ${self.pinch}/bin/pinch update channels
-        )
+          flock /run/auto-upgrade-with-pinch ${super.writeShellScript "auto-upgrade-with-lock-held" ''
+            set -e
+            (
+              cd /etc/nixos
+              ${self.keyedgit cfg.key}/bin/git pull --ff-only --verify-signatures
+              ${self.pinch}/bin/pinch update channels
+            )
 
-        ${config.system.build.nixos-rebuild}/bin/nixos-rebuild switch --no-build-output
+            ${config.system.build.nixos-rebuild}/bin/nixos-rebuild switch --no-build-output
+          ''}
         '';
       })
     ];