summaryrefslogtreecommitdiff
path: root/modules/auto-update.nix
blob: b3703902d2a4f7553370ca43d596bc0f2f932060 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
{ pkgs, ... }:

{
  system.autoUpgrade = {
    enable = true;
    dates = "minutely";
    allowReboot = true;
    upgrade = false;
  };

  systemd.services.nixos-upgrade = {
    path = [ pkgs.git ];
    serviceConfig = {
      WorkingDirectory = "/etc/nixos";
      StateDirectory = "nixos-repo-update";
      ExecCondition = pkgs.writeShellScript "check-nixos-repo" ''
        set -euo pipefail
        git fetch || exit 255
        test "$(cat "$STATE_DIRECTORY/applied" 2>/dev/null || true)" != "$(git rev-parse '@{upstream}')"
      '';
    };

    preStart = "git pull --ff-only";
    postStart = ''git rev-parse HEAD > "$STATE_DIRECTORY/applied"'';
  };
}