Nix is a powerful package manager for Linux and other Unix systems that makes package management reliable and reproducible. I install Nix to use boot.
Nix can be installed both on Linux and MacOS. In my case I use Ubuntu 16.04. For MacOS the instructions should be the same.
Installation
Run the following command to install Nix:
1 | # You will be asked for sudo password since the command will create "/nix" directory |
After the installation finished, your “~/.bash_profile” file has the following added content:
1 | if [ -e /home/gang/.nix-profile/etc/profile.d/nix.sh ]; then . /home/gang/.nix-profile/etc/profile.d/nix.sh; fi # added by Nix installer |
If you are using “zsh” like me, copy the content to the end of your “~/.zshrc” file to make it take effect.
How to use
Then you can use Nix. For examples, with the following commands:
1 | # List the available packages. |
Note that, “nix-env” operations such as upgrades (-u) and uninstall (-e) never actually delete packages from the system. All they do (as shown above) is to create a new user environment that no longer contains symlinks to the “deleted” packages(from here).
Of course, since disk space is not infinite, unused packages should be removed at some point. You can do this by running the Nix garbage collector. It will remove from the Nix store any package not used (directly or indirectly) by any generation of any profile.
Note however that as long as old generations reference a package, it will not be deleted. After all, we wouldn’t be able to do a rollback otherwise. So in order for garbage collection to be effective, you should also delete (some) old generations. Of course, this should only be done if you are certain that you will not need to roll back.
To delete generations of your current profile, you can:
1 | # To delete all old (non-current) generations of your current profile: |
After removing appropriate old generations you can run the garbage collector as follows:
1 | nix-store --gc |
There is also a convenient little utility nix-collect-garbage, which when invoked with the -d (–delete-old) switch deletes all old generations of all profiles in /nix/var/nix/profiles. So:
1 | nix-collect-garbage -d |
is a quick and easy way to clean up your system.
Uninstallation
From here.
Run the following commands to remove Nix completely from your computer:
1 | # 1. As a normal user: |