nix-super/doc/manual/src/command-ref/nix-env/delete-generations.md
John Ericson b55f26c65f Improve nix-env --delete-generations docs
Co-authored-by: Valentin Gagarin <valentin.gagarin@tweag.io>
2023-06-14 19:01:08 -04:00

2.3 KiB

Name

nix-env --delete-generations - delete profile generations

Synopsis

nix-env --delete-generations generations

Description

This operation deletes the specified generations of the current profile.

generations can be a one of the following:

  • <number>...:
    A list of generation numbers, each one a separate command-line argument.

    Delete exactly the profile generations given by their generation number. Deleting the current generation is not allowed.

  • The special value old

    Delete all generations older than the current one.

  • <days>d:
    The last days days

    Example: 30d

    Delete all generations older than days days. The generation that was active at that point in time is excluded, and will not be deleted.

  • +<count>:
    The last count generations up to the present

    Example: +5

    Keep the last count generations, along with any newer than current.

Periodically deleting old generations is important to make garbage collection effective. The is because profiles are also garbage collection roots — any store object reachable from a profile is "alive" and ineligible for deletion.

{{#include ./opt-common.md}}

{{#include ../opt-common.md}}

{{#include ./env-common.md}}

{{#include ../env-common.md}}

Examples

Delete explicit generation numbers

$ nix-env --delete-generations 3 4 8

Delete the generations numbered 3, 4, and 8, so long as the current active generation is not any of those.

Keep most-recent by count count

$ nix-env --delete-generations +5

Suppose 30 is the current generation, and we currently have generations numbered 20 through 32.

Then this command will delete generations 20 through 25 (<= 30 - 5), and keep generations 26 through 31 (> 30 - 5).

Keep most-recent in days

$ nix-env --delete-generations 30d

This command will delete all generations older than 30 days, except for the generation that was active 30 days ago (if it currently exists).

Delete all older

$ nix-env --profile other_profile --delete-generations old