Nix Package Manager

2026-04-30

I started testing out the Nix package manager to simplify the installation of packages on a new Linux machine. I am using Ansible today, and it works for the most part. But it requires a lot of maintenance and I am rarely able to use it to bootstrap a new Linux machine without any updates. The Nix approach is very attractive because each package installed using Nix brings all of its dependencies including shared libraries. Packages are built using build recipes; and these are publicly available. Builds are also cached, so not everything has to be built locally.

If every package can bring it’s shared libraries, then that simplifies running most programs (with a few caveats). This situation made itself very apparent recently when Spotify’s builds upgraded Libc to a version that existed only on the latest versions of Debian and Ubuntu.1 This single shared library version upgrade broke the Spotify Linux client. Nix did solve this problem on Ubuntu 22.04 LTS for me!

I have installed Rust based tools such as bat using Nix. I have also installed the latest version of qpwgraph using it. Spotify’s client finally started working again after being installed through Nix. (The Spotify build recipe is well worth a read! It ingeniously gets around Spotify’s restriction on distributing binaries on their behalf.)

Alacrity didn’t work because it doesn’t work on non-Nix OS systems by default: https://github.com/nix-community/home-manager/issues/4720 There is a way to get it working using a home manager wrapper. One step at a time!


  1. Spotify’s Linux client is not officially supported and apparently maintained by a few engineers at Spotify who want a Linux client themselves (?) I read this somewhere in Spotify’s support documentation. Even though this particular build did not work, thanks for the great work to whoever is maintaining the Spotify Linux client! ↩︎