This seems like an obvious questions but I can’t find in manual / on discourse how to list all NixOS generations on my laptop and delete some.
I know about nix store gc but I’d like to for example delete generations from yesterday when I was experimenting but keep a generation from the day before.
I found some mention of nix-env that can do that but I’d prefer to use nix (the new version) if possible.
Go to /nix/var/nix/profiles/ and remove symlinks for generations you want to delete, then nix store gc.
Indeed I didn’t see an obvious place where this is documented - either I didn’t look in the right place yet or that might be something that’s worth improving
List generations: nix profile history --profile /nix/var/nix/profiles/system
Delete generations: sudo nix profile wipe-history --profile /nix/var/nix/profiles/system --older-than 14d.
Manuals: man nix3-profile-history and man nix3-profle-wipe-history.
Thank you very much both! I’ve just rebuilt twice in a row and nix profile history is showing only one new number - not two. So it’s working as I hoped it will.
Is it possible to see if I’m on the latest generation? For example if I run nixos-rebuild boot --flake ... I shouldn’t be and if I run nixos-rebuild switch --flake ... I should be.
Could you please confirm that this is supported / safe method? Asking since this is not a CLI command and I worry that I that brake something by messing with symlinks.
And I don’t want to use sudo nix profile wipe-history --profile /nix/var/nix/profile/system --older-than 14d since I want to keep a few older generations.
Deleting symlinks from /nix/var/nix/profiles/ is mostly safe. It might leave you with some broken entries in Grub, but those should be cleaned up with the next nixos-rebuild {boot|switch}.