Split nix garbage-collection settings

This commit is contained in:
ItsDrike 2024-03-22 15:17:57 +01:00
parent d53ef7e4c4
commit 1538f5719a
Signed by: ItsDrike
GPG key ID: FA2745890B7048C0
2 changed files with 35 additions and 23 deletions

View file

@ -3,44 +3,30 @@
imports = [ imports = [
./cachix.nix ./cachix.nix
./gc.nix
]; ];
system.autoUpgrade.enable = false; system.autoUpgrade.enable = false;
nix = { nix = {
settings = { settings = {
# nix often takes up a lot of space, with /nix/store growing beyond reasonable sizes
# this turns on automatic optimisation of the nix store that will run during every build
# (alternatively, you can do this manually with `nix-store --optimise`)
auto-optimise-store = true;
# enable flakes support # enable flakes support
experimental-features = [ "nix-command" "flakes" ]; experimental-features = [ "nix-command" "flakes" ];
# Keep all dependencies used to build # Keep the built outputs of derivations in Nix store, even if the package is no longer needed
# - prevents the need to rebuild/redownload if it becomes a dependency again
# - helps with debugging or reverting to previous state
keep-outputs = true; keep-outputs = true;
# Keep the derivations themselves too. A derivation describes how to build a package.
# - allows inspecting the build process of a package for debugging or educational purposes
# - allows rebuilding a package from its exact specification without having to fetch again
# - ensures we can reproduce a build even if the original online source goes down/changes
keep-derivations = true; keep-derivations = true;
# Give these users/groups additional rights when connecting to the Nix daemon # Give these users/groups additional rights when connecting to the Nix daemon
# like specifying extra binary caches # like specifying extra binary caches
trusted-users = [ "root" "@wheel" ]; trusted-users = [ "root" "@wheel" ];
}; };
# Enable automatic garbage collection, deleting entries older than 14 days
# you can also run this manually with `nix-store --gc --delete-older-than 14d`.
# If a result still exists in the file system, all the dependencies used to build
# it will be kept.
gc = {
automatic = true;
dates = "weekly";
options = "--delete-older-than 14d";
};
# Also run garbage colleciton whenever there is not enough space left,
# freeing up to 1 GiB whenever there is less than 512MiB left.
extraOptions = ''
min-free = ${toString (512 * 1024 * 1024)}
max-free = ${toString (1024 * 1024 * 1024)}
'';
}; };
nixpkgs.config.allowUnfree = true; nixpkgs.config.allowUnfree = true;
@ -48,4 +34,3 @@
# Git is needed for flakes # Git is needed for flakes
environment.systemPackages = [ pkgs.git ]; environment.systemPackages = [ pkgs.git ];
} }

27
system/nix/gc.nix Normal file
View file

@ -0,0 +1,27 @@
_: {
nix = {
settings = {
# nix often takes up a lot of space, with /nix/store growing beyond reasonable sizes
# this turns on automatic optimisation of the nix store that will run during every build
# (alternatively, you can do this manually with `nix-store --optimise`)
auto-optimise-store = true;
};
# Enable automatic garbage collection, deleting entries older than 14 days
# you can also run this manually with `nix-store --gc --delete-older-than 14d`.
# If a result still exists in the file system, all the dependencies used to build
# it will be kept.
gc = {
automatic = true;
dates = "weekly";
options = "--delete-older-than 14d";
};
# Also run garbage colleciton whenever there is not enough space left,
# freeing up to 1 GiB whenever there is less than 512MiB left.
extraOptions = ''
min-free = ${toString (512 * 1024 * 1024)}
max-free = ${toString (1024 * 1024 * 1024)}
'';
};
}