Distro-Test: NixOS 22.05

Some distributions gain a small, yet quite vocal fan following for reasons users tend to barely address or explain in such a way that makes those interested feel... quite stupid about themselves. NixOS is described as “a Linux distribution with a special approach to package and configuration management”, meaning its sole selling point is its unique package management called Nix and thus largely aimed at developers. Still, even more specialized distributions with the look-and-feel of a regular Desktop distribution for personal usage should be able to handle passive users just wanting to browse the web.

What its recent version distinguishes from its predecessors is the Calamares Installer, a new addition to simplify the installation process of the OS. This gave me a reason to finally try NixOS out, going for the Live ISO offering KDE Plasma.

Live System (VirtualBox) – First Attempt on Medion Akoya

Given that I also test the absolute limits of every distribution, I created a virtual machine with the most ridiculous specifications possible. Only one core, just a little more than 1.5 GB of RAM, and only 30 GB available space. NixOS' minimum requirements are not mentioned anywhere on the project's website.

As expected, the virtual environment barely managed to load and KDE Plasma was hardly responsive. Just to see how far I can push things, I attempted an installation, which would freeze the entire virtual machine once it reached 46%. Besides the Installer and a minimal set of tools, such as Konsole and Okular, the Live ISO does not offer many programs.

Live System (HP Pavilion)

On bare metal, the live system performed much smoother, with the boot process needing two minutes to finish. This quick test, however, ended as soon as the Installer opened, demanding an internet connection to install the system (and this machine does not support wireless internet).

I briefly checked how well KDE Plasma was implemented. When idle, Plasma needs approximately 860 MB of RAM. Opening an application made the CPU jump to 31% before varying between 0.7 and 6%.

Live System (VirtualBox) – Second Attempt on Asus

Due to my main machine being the most outdated one, I decided to do another test on another machine with an active internet connection and a little – VERY little – more power. This time, I could grant the virtual machine three cores and 3 GB of RAM, which still is quite pathetic but not as horrendous as the first VM. Unfortunately, I would encounter the same issue my first VM experienced, with the installer first jumping straight to 46% and freezing at this point, with KDE Plasma now being just as sluggish as before and making the laptop overheat. This is where I decided to stop testing.

TL;DR

There is not really much to say, other than repeating the obvious: NixOS is aimed at developers wanting to explore different possibilities of package distribution and management. Personally, I got skeptical as soon as the Installer told me that an active internet connection is required, even though it is a Live ISO offering few core utilities. The project's homepage does not explicitly specify that all ISO's pretty much are netinstalls and requires users to simply get the brief and longer instructions instantly, so even power users not minding to create and maintain packages themselves usually struggle with finding their way through the system.

One reviewer in particular summarized his experience, calling it “the curse of NixOS”. The OS nails its main goal in providing a new and more efficient approach to software management, yet fails in all other aspects, such as requiring to learn an entirely new programming language without proper documentation offered by the project's maintainers. And:

“The second flaw is that NixOS does not actually provide real isolation. Running bash -c 'type $0' will get you bash is /nix/store/90y23lrznwmkdnczk1dzdsq4m35zj8ww-bash-interactive-5.1-p8/bin/bash — bash knows that it's running from the Nix store. This means that all software needs to be recompiled to work on NixOS, often with some terrifying hacks involved. It also means that it's impossible to statically know what other packages a given package might depend on. Currently, the way this is implemented is essentially grepping a package for /nix/store/ to try to figure out what the dependencies are, which is obviously... not great. It also means that binaries that link against /lib/ld-linux.so.2 or scripts that use #!/bin/bash won't work without patching.”

So, it is not suited for average users and not for developers. Ouch.


Hardware

Medion Akoya E4070 D

Processor: AMD A10–5700 APU @ 3.40 GHz

Display: Trinity (Radeon HD 7660D)

Memory: 4 GB RAM (3462 MiB)

Storage: 2 TB ASMT 2115 (Medion HDDrive’n’Go external HDD)

Network: RTL8111/8168/8411 PCI Express Gigabit Ethernet Control


HP Pavilion 500–344ng

Processor: AMD A8–6500 APU @ 3.50 GHz

Display: ATI Richland Radeon HD 8570D

Memory: 8 GB RAM (7.18)

Storage: 1 TB WD10EZEX-60M HDD

Network: RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller


Asus X553MA

Processor: Intel Pentium CPU N3540 @ 2.16 GHz

Display: Intel Atom Processor Z36xxx/Z37xxx Series Graphics & Display

Memory: 8 GB RAM (7.68)

Storage: 1 TB ATA ST1000LM024 HN-M HDD

Network: Qualcomm Atheros AR9485 Wireless Network Adapter