Garbage Collector
Maintenant je pense qu'il est intéressant de se demander ce qu'il se passe lorsque l'on veut faire de l'espace sur le système.
Ce qu'il se passe pour faire de l'espace c'est que lorsque un élément du Nix store est lié quelque part, un lien se fait dans le dossier /nix/var/nix/gcroots/
. Ainsi lorsque l'on lance le garbage collector, il va supprimer tous les éléments qui ne sont pas référencé dans le dossier gcroots
.
Pour toujours permettre un rollback, tant qu'un profile a des générations comportant certains paquets, ces paquets sont aussi des gcroots
et ne peuvent donc pas être supprimé avant que leur génération associée soit supprimée.
Lorsque l'on lance nix-collect-garbage
c'est qu'il va regarder récursivement tous les raccourcis vers le Nix Store qui sont dans gcroots, pour chaque fichier n'y étant pas il va le déplacer dans le dossier /nix/store/trash
. Une fois tous transféré, les éléments sont supprimés.