Skip to content
aiarabicdev
Dev environments

NixOS

The whole machine as one config file, with a boot menu full of undo

NixOS is a Linux distribution where the entire system, from bootloader to services to installed packages, is declared in one file and built from it. Every rebuild is a new generation you can boot back into, so a broken configuration is a reboot rather than a reinstall. The cost is a functional language you have to learn and a filesystem layout most prebuilt binaries do not expect.

FreeMIT for Nixpkgs, LGPL-2.1 for the Nix package managerNixSelf hostable

Generations are the feature, the packaging is the means

You describe the machine you want and then realise it. Nothing is mutated in place: each rebuild produces a new generation, the previous ones stay in the boot menu, and an interrupted upgrade leaves you on one side or the other rather than halfway. That property is why people put up with the rest of it, and it is genuinely hard to get any other way.

The same idea works one level down without adopting the distribution at all. Per project shells give a repository its own pinned toolchain on any Linux or macOS machine, and that is the feature most people meet first. Trying it there is the sane way to find out whether the model suits you.

Two taxes you pay every week

The first is binaries. There is no ordinary library path and no standard loader at the place compiled programs expect one, so a binary you download will usually refuse to start. The fixes are well travelled and there are several of them, but every vendor SDK, proprietary tool and language version manager turns into a small packaging job rather than an install.

The second is the language. It is functional and lazily evaluated, which means an error often surfaces a long way from the line that caused it, and reading those traces is a skill you acquire rather than a thing you know. Worth adding that flakes, the mechanism nearly every current tutorial and template uses, is still formally experimental years after arriving, with no announced date for that changing.

The code kept shipping while the institutions came apart

This is the part a project page will not tell you. The founder stepped down in 2024 after an open letter, most of the moderation team resigned in September 2025 citing interference from the steering committee, and in August 2026 the Nixpkgs core team disbanded for the same stated reasons. A fork of the package manager now exists explicitly outside the foundation's control.

Set against that, the releases landed on time throughout and the package set kept growing, so this is not a project in technical trouble. It is a project whose volunteer structures have collapsed twice in a year over the same complaint, which is a real consideration if you are asking an organisation to standardise on it.

Reach for it when

  • you want a machine that can be rebuilt from a text file rather than remembered
  • you tinker hard enough that a guaranteed undo is worth a real learning curve
  • you already do infrastructure as code and the operating system is the last undeclared layer

Watch out for

  • a downloaded binary will usually not run, so vendor tools and SDKs become small packaging jobs instead of installs
  • flakes are what almost every tutorial uses and are still marked experimental, with no announced date for stabilising
  • the store keeps every generation you have not deleted, so disk use is traded directly against how far back you can roll
  • two volunteer bodies collapsed inside a year, the moderation team in 2025 and the Nixpkgs core team in 2026, both blaming governance
  • an unofficial and outdated wiki still ranks in search results, so check you are reading the one at wiki.nixos.org
Machroui

Building something? Launch it on Machroui

A free board for startups in the Middle East. List yours, the community votes, and the leaderboard resets every Monday. No pay to win.

Visit Machroui

Free to list. English and Arabic.