{ config, lib, ... }: let cfg = config.os.core.storage; in { options.os.core.storage = { enable = lib.mkEnableOption "enables storage management"; keepDays = lib.mkOption { type = lib.types.int; default = 14; description = "Number of days to keep old Nix generations before GC"; }; }; config = lib.mkIf cfg.enable { nix.settings.auto-optimise-store = true; programs.nh = { enable = true; clean.enable = true; clean.extraArgs = "--keep-days ${toString cfg.keepDays} --keep 5"; }; services.fstrim.enable = true; services.btrfs.autoScrub = { enable = true; fileSystems = [ "/" ]; }; boot.tmp = { useTmpfs = true; tmpfsSize = "50%"; }; }; }