Add garbage-collect for home-manager
This commit is contained in:
@@ -35,6 +35,13 @@
|
|||||||
|
|
||||||
# systemd.user.startServices = "sd-switch"; # TODO: what is this
|
# systemd.user.startServices = "sd-switch"; # TODO: what is this
|
||||||
|
|
||||||
|
# Expire old hm generations
|
||||||
|
hm-expire = {
|
||||||
|
enable = true;
|
||||||
|
dates = "weekly";
|
||||||
|
expire = "-30 days";
|
||||||
|
};
|
||||||
|
|
||||||
programs = {
|
programs = {
|
||||||
home-manager.enable = true;
|
home-manager.enable = true;
|
||||||
git.enable = true;
|
git.enable = true;
|
||||||
|
|||||||
@@ -39,6 +39,20 @@
|
|||||||
"ca-derivations"
|
"ca-derivations"
|
||||||
];
|
];
|
||||||
|
|
||||||
|
# Expire old hm generations
|
||||||
|
hm-expire = {
|
||||||
|
enable = true;
|
||||||
|
dates = "weekly";
|
||||||
|
expire = "-30 days";
|
||||||
|
};
|
||||||
|
# Remove unused packets
|
||||||
|
services.nix-gc = {
|
||||||
|
enable = true;
|
||||||
|
automatic = true;
|
||||||
|
frequency = "weekly";
|
||||||
|
persistent = true;
|
||||||
|
};
|
||||||
|
|
||||||
# nix.settings. # warn-dirty = false; # TODO: do I want this
|
# nix.settings. # warn-dirty = false; # TODO: do I want this
|
||||||
#
|
#
|
||||||
# Ensure we can still build when missing-server is not accessible
|
# Ensure we can still build when missing-server is not accessible
|
||||||
|
|||||||
@@ -5,4 +5,5 @@
|
|||||||
colors = import ./colors.nix;
|
colors = import ./colors.nix;
|
||||||
hostname = import ./hostname.nix;
|
hostname = import ./hostname.nix;
|
||||||
non-nixos = import ./non-nixos.nix;
|
non-nixos = import ./non-nixos.nix;
|
||||||
|
hm-expire = import ./hm-expire.nix;
|
||||||
}
|
}
|
||||||
|
|||||||
46
modules/home-manager/hm-expire.nix
Normal file
46
modules/home-manager/hm-expire.nix
Normal 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"];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user