Libérer de l'espace disque Nix automatiquement
Le store Nix pesait 115 G sur un disque rempli à 94 %. Trois leviers : - Supprimer keep-outputs / keep-derivations : ces options retenaient les .drv et leurs inputs de build dans le store, ce qui annulait une grande partie du garbage collection. Les environnements direnv ne risquent rien : nix-direnv crée un gcroot par projet (_nix_add_gcroot), et un chemin protégé n'est jamais purgé. - activer auto-optimise-store : déduplique le store par hardlinks, ce qui vise les 26 G occupés par /nix/store/.links (fichiers dupliqués). - programmer un garbage collection hebdomadaire, qui supprime les générations de plus de 14 jours. `make gc` est aligné sur la même politique de rétention, au lieu de purger toutes les générations système, ce qui rendait tout rollback impossible. *Rédaction assistée par IA (LM-Code)* Co-Authored-By: LM-Code
This commit is contained in:
@@ -37,6 +37,7 @@ update:
|
||||
$(MAKE) gc
|
||||
|
||||
# Nettoyage Nix (générations > 14 jours + garbage collect)
|
||||
# Même politique que nix.gc.automatic dans nixos/configuration.nix.
|
||||
gc:
|
||||
@echo "=== Générations utilisateur ==="
|
||||
nix-env --list-generations
|
||||
@@ -51,7 +52,7 @@ gc:
|
||||
sudo nix-env --delete-generations 14d --profile /nix/var/nix/profiles/system
|
||||
@echo ""
|
||||
@echo "=== Garbage collection ==="
|
||||
sudo nix-collect-garbage
|
||||
sudo nix-collect-garbage --delete-older-than 14d
|
||||
@echo ""
|
||||
@echo "=== Espace disque /nix/store ==="
|
||||
du -sh /nix/store
|
||||
|
||||
@@ -206,15 +206,19 @@
|
||||
networking.firewall.allowedUDPPorts = [ 9003 ];
|
||||
# Or disable the firewall altogether.
|
||||
# networking.firewall.enable = false;
|
||||
# https://github.com/nix-community/nix-direnv/
|
||||
nix.extraOptions = ''
|
||||
keep-outputs = true
|
||||
keep-derivations = true
|
||||
'';
|
||||
nix.settings.extra-experimental-features = [
|
||||
"nix-command"
|
||||
"flakes"
|
||||
];
|
||||
nix.settings.auto-optimise-store = true;
|
||||
|
||||
# Les environnements direnv sont protégés par leurs propres gcroots
|
||||
# (nix-direnv "_nix_add_gcroot"), inutile de garder outputs/derivations.
|
||||
nix.gc = {
|
||||
automatic = true;
|
||||
dates = "weekly";
|
||||
options = "--delete-older-than 14d";
|
||||
};
|
||||
|
||||
# Cache binaire de https://github.com/lukasl-dev/pi.nix (cf. programs/pi.nix)
|
||||
nix.settings.extra-substituters = [ "https://pi.cachix.org" ];
|
||||
|
||||
Reference in New Issue
Block a user