Add garbage-collect for home-manager

This commit is contained in:
2026-03-13 07:51:57 +01:00
parent 977aa539a3
commit 54e0f94af5
4 changed files with 68 additions and 0 deletions

View File

@@ -5,4 +5,5 @@
colors = import ./colors.nix;
hostname = import ./hostname.nix;
non-nixos = import ./non-nixos.nix;
hm-expire = import ./hm-expire.nix;
}

View File

@@ -0,0 +1,46 @@
{
config,
lib,
pkgs,
...
}: let
cfg = config.hm-expire;
in {
options.hm-expire = {
enable = lib.mkEnableOption "Whether to enable hm-expire";
dates = lib.mkOption {
type = lib.types.str;
default = "weekly";
};
expire = lib.mkOption {
type = lib.types.str;
default = "-30 days";
};
};
config = lib.mkIf cfg.enable {
# This creates a user-level systemd service
systemd.user.services.cleanup-home-manager = {
Unit = {
Description = "Cleanup old Home Manager generations";
};
Service = {
Type = "oneshot";
ExecStart = "${pkgs.bash}/bin/bash -c '${pkgs.home-manager}/bin/home-manager expire-generations \"${cfg.expire}\"'";
};
};
systemd.user.timers.cleanup-home-manager = {
Unit = {
Description = "Weekly cleanup of Home Manager generations";
};
Timer = {
OnCalendar = cfg.dates;
Persistent = true;
};
Install = {
WantedBy = ["timers.target"];
};
};
};
}