Nix
Nix is a purely functional package manager that aims to make package management reliable and reproducible.
Installation
    
There are two choices for a Nix installation, one is supported by Arch Linux, and the other is officially supported by Nix.
Upstream installation script
    
Download the file with curl --proto '=https' --tlsv1.2 -sSfL https://nixos.org/nix/install -o nix-install.sh, view it: less ./nix-install.sh, and run the script ./nix-install.sh --daemon to start Nix installation.
curl some-url | sh, as the Nix documentation suggests, is considered as a security risk, because it executes unknown code. Therefore it is recommended to manually download the script and check it, before executing it.Configuration
    
To have the Nix daemon launched at boot time, enable nix-daemon.service.
Add required users to the nix-users group in order to access the daemon socket.
Add a channel and update it.
$ nix-channel --add https://nixos.org/channels/nixpkgs-unstable
$ nix-channel --update
    
Usage
    
With the shell configured, the following should install hello into your updated PATH: /nix/store/[hash]-hello-[version]/bin/hello.
If you installed Nix from the official repositories, you must add the ~/.nix-profile/bin directory to your PATH manually.
$ nix-env -iA nixpkgs.hello
Run hello and make sure it is in the right PATH. If it works, you can remove it simply by
$ nix-env --uninstall hello
Or you can check the list of installed program by (q stands for query)
$ nix-env -q
You can also check generations by
$ nix-env --list-generations
Check more details in the nix-env(1) manual.
Tips and tricks
    
    Max jobs
    
By default, nix only uses one builder. The following will allow nix to use as many jobs as the number of CPUs:
Graphical acceleration
    
To run OpenGL and Vulkan applications, use NixGL.
Desktop integration
    
For integrating Nix applications with your desktop environment, add the directory to your , for instance using .
Zsh integration for nix-shell
    
nix-shell starts Bash by default. zsh-nix-shell lets you use zsh as the default shell in a nix-shell environment. Some prompt plugins such as powerlevel10k  and pure provide a nix-shell indicator.
Command completion
    
    Zsh
    
nix-zsh-completions provides Zsh completions for nix commands such as nix-env and nix-shell.
Troubleshooting
    
    Permission denied
    
Running or as user produces
cannot connect to daemon at '/nix/var/nix/daemon-socket/socket: permission denied
If you just installed nix, you need to reboot.
Too many open files
    
Some builds may run into an error such as
error: opening directory '/nix/store/...': Too many open files
Edit nix-daemon.service and increase the file limit
[Service] LimitNOFILE=65536
Warning message about root user channels
    
warning: Nix search path entry '/nix/var/nix/profiles/per-user/root/channels' does not exist, ignoring
If the above message shows up when using Nix, the root user will need to update their channels.
# nix-channel --update
Other sandbox issues
    
error: while setting up the build environment: mounting /proc: Operation not permitted error: program '/usr/bin/nix-env' failed with exit code 1
1: package 'utils' in options("defaultPackages") was not found
2: package 'stats' in options("defaultPackages") was not found
Error: .onLoad failed in loadNamespace() for 'utils', details:
 call: system(paste(which, shQuote(names[i])), intern = TRUE, ignore.stderr = TRUE)
 error: cannot popen '/nix/store/fnkvlbls29d01jcx3wsdnhykyrl7087r-which-2.21/bin/which 'uname' 2>/dev/null', probable reason 'Cannot allocate memory'
The issue is known upstream: #2311, #3000, and #4636.
The most common fix is to disable sandboxing in the configuration file, then Restart the service.
Locale warnings
    
The Nix wiki recommends running . Alternatively, export the environment variable .