sisyphus/nixos/modules/nix/gc/default.nix

25 lines
699 B
Nix

{ config, lib, pkgs, ... }:
let
cfg = config.sisyphus.nix.gc;
in {
options.sisyphus.nix.gc = {
weekly.enable = lib.mkEnableOption "Scheduled Nix garbage-collection";
onFull.enable = lib.mkEnableOption "Nix garbage-collection when disk is almost full";
};
config.nix = {
# If the disk has less than 100MiB, free up to 2GiB by garbage-collecting.
extraOptions = lib.mkIf cfg.onFull.enable ''
min-free = ${toString (100 * 1024 * 1024)}
max-free = ${toString (2048 * 1024 * 1024)}
'';
# Scheduled garbage-collect
gc = lib.mkIf cfg.weekly.enable {
automatic = true;
dates = "weekly";
options = "--delete-older-than 30d";
};
};
}