nix-config/nixos/_mixins/global/auto-upgrade.nix
Gregory Burd 86706b1fc7 wimpy-ified
inspired by wimpysworld nix-config
2023-09-25 14:05:07 -04:00

30 lines
921 B
Nix

{ 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"
];
flake = "git://github.com/gburd/nix-config?ref=release-${hostName}";
};
# 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")"
''
);
};
}