Nyx-Tools/nyx/nyx-cleanup.nix
2025-08-13 11:40:03 +02:00

51 lines
1.3 KiB
Nix

{ config, lib, pkgs, ... }:
let
nyxCfg = config.nyx or {};
cfg = nyxCfg."nyx-cleanup" or {};
# Read the cleanup script template and replace tokens
cleanupScript =
let
src = builtins.readFile ./bash/nyx-cleanup.sh; # Script with @TOKENS@
in
builtins.replaceStrings
[
"@LOG_DIR@" "@KEEP_GENERATIONS@" "@AUTO_PUSH@" "@GIT_BIN@" "@VERSION@"
]
[
(toString nyxCfg.logDir)
(toString (cfg.keepGenerations or 5))
(if (nyxCfg.autoPush or false) then "true" else "false")
"${pkgs.git}/bin/git"
"1.2.0"
]
src;
in
{
options.nyx."nyx-cleanup" = {
enable = lib.mkEnableOption "Enable nyx-cleanup script";
keepGenerations = lib.mkOption {
type = lib.types.int;
default = 5;
description = "Number of NixOS *system* generations to keep.";
};
enableAlias = lib.mkOption {
type = lib.types.bool;
default = true;
description = "If true, add alias 'nc' for 'nyx-cleanup'.";
};
};
config = lib.mkIf ((nyxCfg.enable or false) && (cfg.enable or false)) {
environment.systemPackages = [
(pkgs.writeShellScriptBin "nyx-cleanup" cleanupScript)
];
environment.shellAliases = lib.mkIf (cfg.enableAlias or true) {
nc = "nyx-cleanup";
};
};
}