which the update will occur.
'';
};
+
+ key = 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.
+ '';
+ };
};
};
config = lib.mkIf cfg.enable {
- nixpkgs.overlays = [ (import ../overlays/pinch.nix) ];
+ nixpkgs.overlays = [
+ (import ../overlays/keyedgit.nix)
+ (import ../overlays/pinch.nix)
+ ];
systemd.services.nixos-upgrade = {
description = "NixOS Upgrade";
restartIfChanged = false;
script = ''
set -e
+
+ # Chill for awhile before applying updates. If applying an update
+ # badly breaks things, we want a window in which an operator can
+ # intervene either to fix the problem or disable automatic updates.
+ sleep 2h
+
(
cd /etc/nixos
- git pull --ff-only
+ ${pkgs.keyedgit cfg.key}/bin/git pull --ff-only --verify-signatures
pinch update channels
)