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
|
$(MAKE) gc
|
||||||
|
|
||||||
# Nettoyage Nix (générations > 14 jours + garbage collect)
|
# Nettoyage Nix (générations > 14 jours + garbage collect)
|
||||||
|
# Même politique que nix.gc.automatic dans nixos/configuration.nix.
|
||||||
gc:
|
gc:
|
||||||
@echo "=== Générations utilisateur ==="
|
@echo "=== Générations utilisateur ==="
|
||||||
nix-env --list-generations
|
nix-env --list-generations
|
||||||
@@ -51,7 +52,7 @@ gc:
|
|||||||
sudo nix-env --delete-generations 14d --profile /nix/var/nix/profiles/system
|
sudo nix-env --delete-generations 14d --profile /nix/var/nix/profiles/system
|
||||||
@echo ""
|
@echo ""
|
||||||
@echo "=== Garbage collection ==="
|
@echo "=== Garbage collection ==="
|
||||||
sudo nix-collect-garbage
|
sudo nix-collect-garbage --delete-older-than 14d
|
||||||
@echo ""
|
@echo ""
|
||||||
@echo "=== Espace disque /nix/store ==="
|
@echo "=== Espace disque /nix/store ==="
|
||||||
du -sh /nix/store
|
du -sh /nix/store
|
||||||
|
|||||||
@@ -206,15 +206,19 @@
|
|||||||
networking.firewall.allowedUDPPorts = [ 9003 ];
|
networking.firewall.allowedUDPPorts = [ 9003 ];
|
||||||
# Or disable the firewall altogether.
|
# Or disable the firewall altogether.
|
||||||
# networking.firewall.enable = false;
|
# 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.settings.extra-experimental-features = [
|
||||||
"nix-command"
|
"nix-command"
|
||||||
"flakes"
|
"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)
|
# Cache binaire de https://github.com/lukasl-dev/pi.nix (cf. programs/pi.nix)
|
||||||
nix.settings.extra-substituters = [ "https://pi.cachix.org" ];
|
nix.settings.extra-substituters = [ "https://pi.cachix.org" ];
|
||||||
|
|||||||
Reference in New Issue
Block a user