2023-09-15 14:53:38 +00:00
|
|
|
{ config, inputs, pkgs, lib, ... }:
|
|
|
|
let
|
|
|
|
inherit (config.networking) hostName;
|
|
|
|
# Only enable auto upgrade if current config came from a clean tree
|
|
|
|
# This avoids accidental auto-upgrades when working locally.
|
|
|
|
isClean = inputs.self ? rev;
|
|
|
|
in
|
|
|
|
{
|
|
|
|
system.autoUpgrade = {
|
|
|
|
enable = isClean;
|
|
|
|
dates = "hourly";
|
|
|
|
flags = [
|
|
|
|
"--refresh"
|
|
|
|
];
|
2023-09-19 17:05:08 +00:00
|
|
|
flake = "git://github.com/gburd/nix-config?ref=release-${hostName}";
|
2023-09-15 14:53:38 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
# Only run if current config (self) is older than the new one.
|
|
|
|
systemd.services.nixos-upgrade = lib.mkIf config.system.autoUpgrade.enable {
|
|
|
|
serviceConfig.ExecCondition = lib.getExe (
|
|
|
|
pkgs.writeShellScriptBin "check-date" ''
|
|
|
|
lastModified() {
|
|
|
|
nix flake metadata "$1" --refresh --json | ${lib.getExe pkgs.jq} '.lastModified'
|
|
|
|
}
|
|
|
|
test "$(lastModified "${config.system.autoUpgrade.flake}")" -gt "$(lastModified "self")"
|
|
|
|
''
|
|
|
|
);
|
|
|
|
};
|
|
|
|
}
|