With massive copy-paste from the Nix Pills. This post is under the same CC-BY-SA-4.0 . (Co-)Authors list.
This post is intended to be a quick reference for arch-to-nix beginner (me).
§ Nix Subsystem for Arch
I’m learning and playing with nix to decide if I should hop to NixOS for my new work laptop.
arch install
# insteall `nix` for archlinux (native)
pacman -S nix
systemctl enable --now nix-daemon.service
env. variables
export PATH=$HOME/.nix-profile/bin:$PATH
# I prefer the nixos channel instead of the unstable.
# otherwise it could be:
# export NIX_PATH=`nixpkgs=channel:unstable`
export NIX_PATH=`nixpkgs=channel:nixos`
install nix (again?) well, because from this point I’ll use nix as a
self-contained unit independent of the arch system package. Also this won’t work
if you use the unstable channel
nix-channel add https://nixos.org/channels/nixos-25.05
nix-channel --update
nix-env -iA nix
environment: The user environment is defined by manifest.nix.. I don’t
think it’s meant to be human readable.. Uninstalling from the environment
doesn’t remove the package itself. (If I understand correctly it simply creates
a new generation that has no package).
$ nix-env -e '*' # danger, this removes everything from the env
to undo this, manually locate the nix-env binary and rollback.
/nix/store/q7v3i9ii8mp6pjasxwip4ybq79hzxj1q-nix-2.28.4/bin/nix-env --rollback
channels
frequently used commands
nix-env -iA <pkg> # install pkg for (all) users
# Queries
nix-env --list-generations
nix-env -q # query installed packages
nix-env -q --out-path # also shows their _actual_ locations
nix-env --rollback # rollback to the previous generation
# The argument points to something in the nix-store
nix-store -q --references $(which hello) # runtime dependencies of hello
nix-store -qR [...] # the closure, recursive deps
nix-store -q --tree [...] # closure in tree display
nix-store -q --referrers $(which hello) # the reverse dependencies of hello
Caveats
- they recommand you to use the
unstablechannel but this can be very broken. For example the manpages are missing. - Never ever try to manually modify
/nix/store/*