From ad123cd12c7a96aa8ef2e36e24ededa90ad2922e Mon Sep 17 00:00:00 2001 From: Pierre Martin Date: Fri, 23 Oct 2026 13:12:20 +0200 Subject: [PATCH] =?UTF-8?q?Lib=C3=A9rer=20de=20l'espace=20disque=20Nix=20a?= =?UTF-8?q?utomatiquement?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- Makefile | 3 ++- nixos/configuration.nix | 14 +++++++++----- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index a36f2f5..46aa8be 100644 --- a/Makefile +++ b/Makefile @@ -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 diff --git a/nixos/configuration.nix b/nixos/configuration.nix index 5d50be2..3a1ab34 100644 --- a/nixos/configuration.nix +++ b/nixos/configuration.nix @@ -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" ];