59 lines
1.7 KiB
Nix
59 lines
1.7 KiB
Nix
{
|
|
config,
|
|
lib,
|
|
pkgs,
|
|
...
|
|
}:
|
|
{
|
|
options.athenix = {
|
|
system.gc = {
|
|
enable = lib.mkOption {
|
|
type = lib.types.bool;
|
|
default = true;
|
|
description = "Whether to enable automatic garbage collection.";
|
|
};
|
|
frequency = lib.mkOption {
|
|
type = lib.types.str;
|
|
default = "weekly";
|
|
description = "How often to run garbage collection (systemd timer format).";
|
|
};
|
|
retentionDays = lib.mkOption {
|
|
type = lib.types.int;
|
|
default = 30;
|
|
description = "Number of days to keep old generations before deletion.";
|
|
};
|
|
optimise = lib.mkOption {
|
|
type = lib.types.bool;
|
|
default = true;
|
|
description = "Whether to automatically optimize the Nix store.";
|
|
};
|
|
};
|
|
|
|
host.buildMethods = lib.mkOption {
|
|
type = lib.types.listOf lib.types.str;
|
|
default = [ "installer-iso" ];
|
|
description = ''
|
|
List of allowed build methods for this host (used by installer/artifacts.nix).
|
|
Supported methods:
|
|
- "installer-iso": Generates an auto-install ISO that installs this configuration to disk.
|
|
- "iso": Generates a live ISO (using nixos-generators).
|
|
- "ipxe": Generates iPXE netboot artifacts (kernel, initrd, script).
|
|
- "lxc": Generates an LXC container tarball.
|
|
- "proxmox": Generates a Proxmox VMA archive.
|
|
'';
|
|
};
|
|
};
|
|
|
|
config = {
|
|
# Automatic Garbage Collection
|
|
nix.gc = lib.mkIf config.athenix.system.gc.enable {
|
|
automatic = true;
|
|
dates = config.athenix.system.gc.frequency;
|
|
options = "--delete-older-than ${toString config.athenix.system.gc.retentionDays}d";
|
|
};
|
|
|
|
# Optimize storage
|
|
nix.optimise.automatic = config.athenix.system.gc.optimise;
|
|
};
|
|
}
|