Reproduceerbaar, frustrerend, en uiteindelijk meer waard dan gedacht. Na een jaar NixOS als dagelijks systeem — op een werkstation, een laptop en een thuisserver — heb ik genoeg om een eerlijk oordeel te vellen. Geen marketingpraatje, geen "dit is de toekomst van Linux". Gewoon wat ik tegenkwam, wat bleef hangen, en voor wie dit eigenlijk geen goed idee is.
Waarom ik overstapte
Mijn vorige setup was Arch Linux, bijna vier jaar oud. Goed onderhouden, rollende updates, nooit écht kapotgegaan. Maar toen ik een tweede machine wil instellen met exact dezelfde softwareversies en configuraties, merkte ik hoe weinig reproduceerbaar mijn "perfecte setup" eigenlijk was. Ik had dotfiles in een Git-repo, maar de installatie zelf hing aan een combinatie van een AUR-helper, een paar makepkg-stappen, manueel geïnstalleerde Python-omgevingen en drie jaar vergeten systemctl enable-commando's. Kopiëren naar een nieuwe machine nam een halve dag en het resultaat klopte nooit helemaal.
NixOS beloofde iets anders: één configuratiebestand dat je systeem volledig beschrijft. Alle pakketten, alle services, alle systeeminstellingen — declaratief vastgelegd, reproduceerbaar uitrolbaar. Op papier klinkt dat als iets voor infrastructuurbeheerders. In de praktijk bleek het net zo relevant voor thuisgebruik.
De installatie zelf verliep via het standaard ISO. In vergelijking met de Determinate Systems installer — een alternatieve Nix-installer die ondertussen meer dan zeven miljoen keer gedownload is en flakes standaard inschakelt — is de officiële aanpak spartaans. Voor NixOS zelf maak je het installatiemedium aan, partitioneer je handmatig, en genereert het systeem een basisconfiguratiebestand via nixos-generate-config. Daarna begin je eigenlijk pas.
Wat écht werkt
Het beste dat NixOS doet is rollbacks. Niet als noodrem — als dagelijks hulpmiddel. Elke keer dat je nixos-rebuild switch draait, maakt het systeem een nieuwe generatie aan. De vorige generatie blijft bestaan in het bootmenu. Heb je een update geïnstalleerd die iets breekt — een kernelversie die je wifi-driver niet meer herkent, een softwarebibliotheek die een andere versie trekt dan verwacht — dan herstart je gewoon naar de vorige generatie. Geen herstelpartitie nodig, geen live USB, geen stress.
Dat klinkt triviaal totdat het je een avond scheelt. Bij een kernelupgrade naar 6.12 verloor mijn Nvidia-kaart tijdelijk zijn externe monitor. Terwijl ik uitzocht wat er misging, werkte ik gewoon verder op generatie 47. Na het fixen van de module-parameter herstart ik naar generatie 48 en is het voorbij.
Het tweede grote voordeel is Home Manager. Dat is een community-project — niet officieel onderdeel van NixOS zelf — dat hetzelfde declaratieve principe toepast op je gebruikersomgeving. Je home.nix beschrijft welke pakketten je wil, hoe je shell eruitziet, je Git-config, je Neovim-configuratie, je SSH-sleutels. Alles. Op een nieuwe machine draai je home-manager switch en je bent operationeel. Dat is geen overdrijving: de derde keer dat ik een machine inrichtte, duurde het minder dan veertig minuten van kaal systeem naar volledig functionele werkomgeving.
"De eerste keer dat ik een machine opnieuw inrichtte met NixOS duurde het nog vijf uur. De derde keer minder dan veertig minuten."
Flakes zijn het derde element dat de zaak bij elkaar houdt. Technisch gezien zijn ze nog steeds een experimentele functie — dat label kleeft er al sinds 2021 aan, ondanks dat vrijwel iedereen ze gebruikt en de community ze als stabiel beschouwt. Met een flake.nix prik je de versies van nixpkgs en andere inputs vast in een flake.lock-bestand. Dat lock-bestand is je garantie: twee machines met dezelfde flake.lock krijgen exact dezelfde software. Niet "ongeveer hetzelfde", niet "dezelfde naam maar een andere commitversie". Identiek.
Voor softwareontwikkeling is dat bijzonder nuttig. Elke project-repo kan zijn eigen devShell meebrengen via een flake. Je zit in een directory, typt nix develop, en je shell krijgt automatisch de juiste versies van Node, Python, Rust, of wat het project nodig heeft — geïsoleerd van je systeem, zonder virtuele omgevingen die je zelf moet bijhouden.
Wat ik onderschat had
De leercurve is steiler dan ik verwachtte. Niet omdat NixOS ingewikkeld is — de concepten zijn vrij helder als je ze eenmaal begrijpt — maar omdat je twee dingen tegelijk moet leren: de Nix-taal en het NixOS-modulesysteem. Die combinatie is in het begin overweldigend.
Nix is een functionele, lazily evaluated taal met een syntaxis die op niets anders lijkt. Configuratieblokken zijn eigenlijk functie-aanroepen die attributensets teruggeven. Foutmeldingen zijn notoir cryptisch. Een typefoute optienaam geeft soms een fout op een volstrekt ander punt in de configuratie, waardoor je twintig minuten zoekt naar iets dat drie regels eerder staat. De 25.05-release (codenaam "Warbler", mei 2025) heeft verbeteringen meegebracht in foutmeldingen en moduledocumentatie, maar perfect is het nog niet.
Wat ik écht onderschat had is hoe anders het mentale model is. Op een traditioneel systeem repareer je dingen ter plekke: je bewerkt een configuratiebestand in /etc, herstart een service, klaar. Op NixOS doe je dat niet. Technisch kan het, maar elke manuele wijziging buiten configuration.nix wordt bij de volgende rebuild overschreven. Het systeem beheert /etc. Jij beheert de configuratie. Die scheiding is het hele punt — maar het vergt oefening om er niet steeds tegenin te werken.
Het pakketaanbod is enorm: nixpkgs heeft meer dan 120.000 pakketten, meer dan welk ander pakketbeheerder ook. Maar niet alles is even goed verpakt. Closed-source software die buiten de officiële kanalen wordt verspreid — sommige bedrijfssoftware, specifieke hardware-hulpprogramma's, obscure CLI-tools — moet je soms zelf verpakken in een eigen derivation. Dat is een vaardigheid op zich. De eerste keer dat ik een simpele tool moest verpakken omdat die niet in nixpkgs stond, verloor ik een avond aan begrip van hoe Nix builds werken. Daarna ging het een stuk sneller, maar die drempel bestaat.
Tot slot: NixOS 25.05 heeft Plasma 5 als deprecated gemarkeerd. Dat soort breaking changes zijn in NixOS netter afgehandeld dan op een rollend systeem — je kiest zelf wanneer je overgaat, de oude generaties blijven beschikbaar — maar je moet ze wel opvolgen. Je configuratiebestand is geen instellen-en-vergeten-document. Het vraagt periodiek onderhoud.
Voor wie dit geen goed idee is
NixOS is geen goed idee als je Linux wil gebruiken zonder Linux te leren. Dat klinkt voor de hand liggend, maar veel mensen die overstappen naar NixOS doen dat vanuit een distributie waar ze een paar jaar met apt of pacman hun weg hebben gevonden. Op NixOS werkt die aanpak niet. Je leert de tool-commando's niet los van de onderliggende filosofie. Als je dat niet wil, kies dan voor iets als Fedora of Ubuntu LTS — uitstekende systemen die goed werken zonder dat je er een functionele taal bij hoeft te leren.
Het is ook geen goed idee als je machine primair gebruikt wordt door iemand anders. De reproduceerbare opzet is een voordeel voor wie de configuratie beheert, maar voor een gedeelde computer — een gezinsapparaat, een machine die een partner of kind gebruikt — is het een onnodige complicatie. Softwareproblemen oplossen voor anderen via nixos-rebuild switch is anders dan via een packagemanager met een GUI.
Als je tijdkritisch bezig bent met een project en geen zin hebt in infrastructuurproblemen, is ook niet het goede moment om over te stappen. De leerfase — reken op twee tot drie maanden voordat het systeem voelt als een verlengstuk in plaats van een obstakel — kost echte aandacht. Plan dat in een rustige periode.
En als je specifieke hardware hebt waarvoor stuurprogramma's buiten de mainline kernel vallen — bepaalde Broadcom wifi-chips, sommige Realtek audioapparaten, niche-periferie — test dan van tevoren of die op NixOS werken. Niet dat het onmogelijk is, maar de documentatie is dunner dan bij grotere distributies en de community-oplossingen zijn soms minder goed onderhouden.
Veelgestelde vragen
Moet ik flakes gebruiken? Technisch gezien niet — NixOS werkt ook zonder. Maar de praktische gemeenschap is zo sterk naar flakes opgeschoven dat de meeste handleidingen, community-configuraties en nieuwe tooling ervan uitgaan dat je ze hebt ingeschakeld. Schakel ze in. De experimental-features = nix-command flakes regel in je configuratie is twee seconden werk en opent de hele moderne Nix-toolchain.
Wat is het verschil tussen Home Manager standalone en als NixOS-module? Als NixOS-module draait Home Manager als onderdeel van nixos-rebuild switch; jouw gebruikersconfiguratie wordt dus mee herbouwd bij elke systeemupdate. Standalone geeft je meer controle — je kunt de systeemconfiguratie en je thuisomgeving afzonderlijk bijwerken. Voor een single-user-werkstation maakt het weinig uit; voor een machine met meerdere gebruikers of voor iemand die graag granulaire controle heeft is standalone de betere keuze.
Is NixOS stabiel genoeg voor dagelijks gebruik? Ja, mits je de stable channel gebruikt (op dit moment 25.05). De unstable channel is functioneel maar vraagt meer aandacht voor breaking changes. Voor een werkstation: stable. Voor een testmachine of als je altijd de recentste versies wil: unstable, maar wees bewust van de trade-off.
Hoe groot is de configuratie na een jaar? Mijn gecombineerde configuratie — systeem plus Home Manager, gesplitst over een handvol modules — is rond de 800 regels Nix-code. Dat klinkt veel, maar het is volledig zelf-beschrijvend, versiegestuurd in Git, en ik begrijp elke regel ervan. Dat kan ik van mijn vier jaar Arch-setup niet zeggen.