Isso depende do que você entende por "perder um pacote".
Supondo que você queira dizer:
won't be able to run the commands provided by the package after deleting the generation
Se você excluir um perfil não atual, todos os comandos ainda estarão lá. O perfil é autônomo.
Para ver o que o perfil atual contém:
nix-store --query --references /nix/var/nix/profiles/per-user/$USER/profile
Esse é o perfil do usuário . Para ver o perfil do sistema:
nix-store --query --references /nix/var/nix/profiles/system
Pode haver uma maneira mais simples, mas usando o acima, podemos encontrar a resposta:
# Replace $1 by previous profile number
nix-store --query --references /nix/var/nix/profiles/{system,per-user/$USER/profile} > /tmp/current-packages
nix-store --query --references /nix/var/nix/profiles/{system,per-user/$USER/profile-$1-link} > /tmp/prev-packages
# The packages "lost" by changing profile from current to profile-$1-link is the set difference
comm -32 <(sort /tmp/current-packages) <(sort /tmp/prev-packages)
Se você quer dizer:
which packages will be "physically" deleted
Eu acho que é um pouco mais complicado. Um possível ponto de partida é usar nix-store --query --roots
em cada pacote no perfil a ser excluído.