- NixOS basiert auf dem Nix-Paketmanager und ist so aufgebaut, dass sich das gesamte System als Code definieren und jederzeit in einen deterministischen, reproduzierbaren Zustand zurückversetzen lässt.
- Alle Konfigurationen und Pakete werden in einer einzigen deklarativen Konfigurationsdatei verwaltet, sodass sich dieselbe Umgebung auch auf neuer Hardware aus einer einzigen Quelle neu aufbauen lässt.
- Es bietet stabile Releases im 6-Monats-Rhythmus, automatische Updates und bei Bedarf Experimente mit aktueller Software über den unstable-Kanal.
- Es stellt isolierte Entwicklungsumgebungen bereit, in denen sich verschiedene Sprachen und Tools ohne Systemverschmutzung ausprobieren lassen, und sorgt für eine konsistente Developer Experience über macOS und Linux hinweg.
- Auch zum LLM-Coding-Zeitalter passt es gut: Trotz schnell wechselnder Tools ermöglicht es mit einem im Vergleich zu Docker deterministischeren und geschichteten Build-Modell Konsistenz bis hin zum Deployment.
Die Philosophie und der Reiz von NixOS
- Der Kern von NixOS ist nicht die Linux-Distribution, sondern der Nix-Paketmanager.
- NixOS ist das Ergebnis eines deterministischen und reproduzierbaren funktionalen Paketmanagers, mit dem sich anhand der eingegebenen Nix-DSL das gesamte Betriebssystem konfigurieren lässt.
- Das System lässt sich vollständig neu aufbauen oder teilweise ändern, und wenn das Ergebnis nicht gefällt, ist ein Rollback möglich.
- Während die meisten Betriebssysteme mit der Zeit instabiler werden, kann NixOS seinen Zustand definieren und bauen.
- Dadurch wird verhindert, dass sich durch Paketinstallationen, Konfigurationsänderungen sowie das Hinzufügen und Entfernen von Tools ein unklarer Zustand ansammelt.
- Da das System als Code definiert ist, lässt sich jederzeit dasselbe Ergebnis reproduzieren.
Deklarative Konfiguration und Verwaltung aus einer einzigen Quelle
- In NixOS lässt sich das gesamte System — Pakete, Einstellungen, Keyboard-Mappings und mehr — in einer einzigen deklarativen Konfiguration definieren.
- Selbst Detailverhalten wie Einstellungen für GNOME-Erweiterungen oder Keyboard-Mappings lässt sich in der Nix-DSL beschreiben.
- Auch auf einem neuen Rechner lässt sich das gesamte System aus einer einzigen Quelle neu aufbauen.
- Ohne manuelle Einrichtung oder verstreut verwaltete Skripte lässt sich so ein konsistenter Systemzustand beibehalten.
Stabilität und Update-Management
- NixOS hält einen vorhersehbaren Release-Zyklus von 6 Monaten ein und unterstützt automatische Updates.
- Probleme wie Instabilität bei typischen OS-Upgrades, störende Benachrichtigungen oder System Drift werden minimiert.
- Bei Bedarf kann der unstable-Kanal aktiviert werden, um aktuelle Software experimentell zu nutzen.
- Auch auf einem HP-Laptop ist die Hardware-Kompatibilität und Stabilität hoch, sodass es ohne zusätzliche Konfiguration sofort einsetzbar ist.
Experimente und isolierte Entwicklungsumgebungen
- NixOS bietet sichere und kostengünstige Experimentierumgebungen.
- Pakete müssen nicht direkt im System installiert werden, sondern können in einer isolierten Shell-Umgebung ausgeführt werden.
- Mit der Nix-DSL lassen sich Abhängigkeiten, Build-Schritte und Artefakte deklarativ definieren, wodurch eine saubere Entwicklungsumgebung ohne Verschmutzung erhalten bleibt.
- Da sich derselbe Nix-Paketmanager sowohl unter macOS als auch unter Linux nutzen lässt, bleibt die Verwaltung von Development-Tools und Abhängigkeiten konsistent.
- Es gibt auch Community-Support für FreeBSD.
Warum es gut zum LLM-Coding-Zeitalter passt
- LLM-basierte Coding-Tools erfordern häufig den Wechsel zwischen bestimmten Versionen von Utilities, Compilern und Runtimes.
- Nix behandelt diese Anforderungen als deklarative Inputs für Tools und führt sie in isolierten Umgebungen aus.
- Beim Build eines Rust-Sprach-zu-Text-Agenten kann Nix zum Beispiel automatisch die Rust-Toolchain laden und eine isolierte Build-Umgebung bereitstellen.
- Die Systemumgebung (
~/.cargo, ~/.rustup, PATH usw.) wird dabei nicht verändert.
- Mit
flake.nix und nix flake check lässt sich die Experimentierumgebung eines Agenten als reproduzierbares Artefakt fixieren.
- Dadurch werden temporäre Sessions in verifizierbare Build-Einheiten überführt.
Deployment und ein konsistentes Entwicklungsmodell
- Nix bietet ein im Vergleich zu Docker deterministischeres und geschichtetes Image-Build-Modell.
- Mit
dockerTools.buildLayeredImage lassen sich kleine und reproduzierbare Docker-Images erzeugen.
- Mit derselben Konfiguration kann auf unterschiedlichen Architekturen dasselbe Ergebnis gebaut werden.
- Dasselbe Modell gilt konsistent für Laptops, Shells, Projektabhängigkeiten, CI-Pipelines und Deployment-Artefakte.
- Statt viele verschiedene Tools zu kombinieren, lässt sich das gesamte Softwaresystem mit einer einzigen Denkweise verwalten.
Fazit
- NixOS ist eine konkrete Umsetzung eines deklarativen, reproduzierbaren, rücksetzbaren und stabilen Systems.
- Experimente und Upgrades lassen sich ohne Angst durchführen, und selbst in sich schnell verändernden Tool-Umgebungen verschmutzt es das System nicht.
- Auch für moderne Entwicklungs-Workflows wie LLM-Coding-Agenten bietet es gleichzeitig Stabilität und Flexibilität.
- NixOS ist die vollständigste Alltagsumsetzung dieser Philosophie.
8 Kommentare
Ich hatte früher auch etwa ein halbes Jahr lang NixOS benutzt, bin dann aber wieder zu Arch zurückgekehrt, weil ich bei NixOS selbst für eine sehr einfache Aufgabe, für die man bei anderen Betriebssystemen nicht einmal extra suchen müsste, trotz endlosem Googeln keine Lösung finden konnte. Dann habe ich in einem NixOS-Forum die von irgendeinem NixOS-Experten? dokumentierte Lösung gesehen, und als ich sah, dass diese Dutzende Zeilen lange, hackige Lösung die meisten Likes bekommen hatte, wurde mir ziemlich düster, wie mein weiteres Leben mit NixOS wohl aussehen würde...
Und ich erinnere mich nicht mehr genau, aber ich glaube, es war
flakeoder irgendeine andere Funktion, bei der es an einem Ort als Best Practice, an einem anderen als experimentell und wieder woanders als beides bezeichnet wird, und als ich gesehen habe, dass das seit Jahren so weitergeht, war der steinige Weg ziemlich offensichtlich..Natürlich hat es Spaß gemacht, die komplette Desktop-Umgebung einfach als Code abbilden zu können
Sogar Firebase Studio verwendet Nix
Oh ... ich verstehe!
Übrigens: R.I.P., Firebase Studio T_T
Viel zu schwierig, ich habe es ein bisschen ausprobiert und dann aufgegeben T_T
(I use Arch btw)
Wer es kennt, nutzt es heimlich still und leise, haha
Ein reproduzierbares Setup, umgesetzt mit einer deklarativen funktionalen Sprache
Die Lernkurve ist absurd steil. So sehr Reproduzierbarkeit garantiert wird, so hoch sind auch die Anforderungen.
Selbst mit
flakeist es noch anspruchsvoll.Außerdem scheint intern etwas wie SQLite verwendet zu werden, und dessen Performance schwankt wiederum, sodass es bei der Zeit, die eine erneute Reproduktion der Umgebung dauert, gewisse Schwankungen gibt.
Hacker-News-Kommentare
Ich denke, NixOS ist in Bezug auf die Kompatibilität mit AI-Tools einzigartig.
Bei anderen Betriebssystemen ist es schwer, einer AI die Systemkonfiguration anzuvertrauen, aber dank der deklarativen und rollback-fähigen Struktur von NixOS kann man sich darauf verlassen.
Einen Wechsel von Pulseaudio zu Pipewire oder die Installation von Hyprland würde ich Claude oder Codex nicht überlassen, aber bei NixOS hätte ich sogar genug Vertrauen, es Grok zu übergeben.
Entscheidend ist die Stabilität, Änderungen vorab prüfen und jederzeit zurückrollen zu können.
Entwicklerinnen und Entwickler, die von einem „AI-verwalteten Linux-Desktop“ träumen, sollten NixOS ausprobieren. Am besten beginnt man damit, Claude zu sagen: „Erstelle mir eine Flake-basierte Gnome-Konfiguration, die ich in einer VM demonstrieren kann.“
Es ist beeindruckend zu sehen, wie Claude die dconf-Einstellungen von GNOME deklarativ anpasst.
Allerdings versteht die AI den komplexen Kontext des Nix-Ökosystems oft nicht und produziert deshalb manchmal seltsame Ergebnisse.
Man merkt, dass die unstrukturierte Lambda-Struktur von Nix und die impliziten Scopes zwischen Modulen nicht nur für Menschen, sondern auch für AI schwierig sind.
Deshalb ist es wichtig, die Struktur und Muster eines Projekts klar zu definieren. Trotzdem ist das Erstellen Nix-basierter Templates angenehm und produktiv.
Muss man für die Installation von Hyprland wirklich ein LLM einsetzen? Ein einfaches
sudo dnf install hyprlandreicht doch völlig aus.Es wirkt weniger so, als wäre Nix „AI-freundlich“, sondern eher so, als würde man ein LLM verwenden, weil Nix für Menschen umständlich direkt zu handhaben ist.
Ich verwalte die Konfigurationen mehrerer Maschinen als „Business-Profile“ und verteile automatisch die jeweils benötigten Repos und Einstellungen.
Ein Kollege im Unternehmen war ursprünglich Windows-Nutzer, verwendet inzwischen aber ganz selbstverständlich NixOS im Alltag.
Auch sämtliche Hardware-Einstellungen werden deklarativ verwaltet, und meine Konfiguration liegt in diesem öffentlichen GitHub-Repository. Feedback ist willkommen.
Auch beim Umziehen der Konfiguration in eine neue Struktur oder beim Erstellen mehrerer WM/DE-Testumgebungen übernimmt Claude den Großteil der wiederkehrenden Arbeit.
Inzwischen ist mein System vollständig stabil, sodass ich kaum noch etwas manuell tun muss.
Bei anderen Betriebssystemen hätte ich dieses Vertrauen nicht.
Stattdessen habe ich meine Entwicklungsumgebung mit Docker-Skripten verwaltet, aber inzwischen fühlt sich die Kombination aus Nix und AI perfekt an.
Ich glaube, in Zukunft werden viele Softwaresysteme erscheinen, die sich mit AI deutlich leichter bedienen lassen.
Nach 30 Jahren mit Windows bin ich vor einem Jahr komplett zu Nix gewechselt.
Jetzt gibt es für mich überhaupt keinen Gedanken mehr daran, zu Windows zurückzukehren.
Ich liebe es, dass die komplette OS-Konfiguration in einem Git-Repository liegt.
Ohne Nix zu entwickeln ist genauso ineffizient wie Programmieren ohne Git.
Wenn man es einmal eingerichtet hat, ist das Aufsetzen neuer Systeme danach sehr einfach.
Ich möchte jede App in einer unabhängigen Umgebung ausführen, ohne dass das gesamte System beeinflusst wird.
Ich denke, NixOS ist einer der Wege in genau diese Zukunft.
Auch Nvidia-GPUs funktionieren gut, und es ist deutlich stabiler als Gamescope.
nix-shellnutzt, um Python-Skripte schnell auszuführen. Ich lerne noch, wie Python und NixOS zusammenspielen.Ich würde NixOS gern mehr mögen, aber das größte Problem ist die mangelnde Dokumentation.
Informationen sind über verschiedene Foren, alte Blogs und Issues verstreut.
Beide werden aktualisiert, aber je nach Suche wirkt jedes Mal ein anderes aktueller.
nixpkgszu klonen und direkt zu lesen ist am schnellsten.Ich habe NixOS als Laptop-OS ausprobiert und dabei sehr klare Vor- und Nachteile erlebt.
Die deklarative Konfiguration und die Snapshot-Funktionen sind revolutionär, aber die Trennung zwischen Paketen und Services sowie das Flake-Konzept waren verwirrend.
Bei der KDE-Installation wurde nur eine Minimal-Konfiguration installiert, sodass zusätzliche Einrichtung nötig war, und die Dokumentation unterschied sich je nach Version so stark, dass sie schwer nachzuvollziehen war.
Am Ende habe ich aufgegeben, weil ich eine stabile Maschine brauchte, aber für Systemadministratoren scheint es eine hervorragende Wahl zu sein.
Der Installer von Determinate Systems aktiviert Flake standardmäßig.
Man kann die Konfiguration aus
/etc/nixosin ein Git-Repository verschieben, und mit dem Befehlnixos-install --flake <repo>lässt sich eine vollständige Konfiguration ausrollen.Mit Home-manager kann man sogar das Benutzerverzeichnis deklarativ verwalten.
Dateien in
/etclassen sich überenvironment.etcverwalten, Dateien in.configüber Home-manager-Optionen.Relevante Links: Option
environment.etc, Home-manager-OptionenmkOutOfStoreSymlinkgesucht habe und die Antwort lautete, das sei „so einfach, dass es keine Dokumentation brauche“.Trotzdem sind die Vorteile von NixOS so groß, dass ich gerade vollständig umziehe: Homelab → Laptop → Desktop.
Die Dokumentationslage bleibt allerdings weiterhin hoffnungslos.
Es übernimmt also auf Nix-Ebene die Rolle von package.json und einer Lock-Datei.
Ich mochte NixOS schon früher, aber seit dem LLM-Zeitalter noch mehr.
Wenn ich Codex sage: „Ändere diese Serverkonfiguration so, dass Wildcard-Zertifikate funktionieren“, ist das in 5 Minuten erledigt.
Reproduzierbare Serververwaltung war noch nie so einfach.
Seit ich zu NixOS gewechselt bin, fühlt sich die Zeit mit apt oder brew wie Technik aus der Steinzeit an.
Auch mit AI-Tools wie Copilot harmoniert es hervorragend.
Um Probleme zu lösen, braucht man ein tieferes Verständnis als bei gewöhnlichem Linux.
Dafür bezahlt man die Komplexität einmal im Voraus.
Mit
nix-shelltemporär etwas zu installieren oder in einer einzigen Konfigurationsdatei alle installierten Pakete zu sehen, ist großartig.Dank automatischer Snapshots habe ich keine Angst vor Experimenten. Wenn etwas schiefgeht, boote ich einfach die vorherige Generation.
Früher hatte ich Angst davor, Kernel-Parameter zu ändern, heute probiere ich es einfach aus.
Weil ich Lisp mag, habe ich auch Guix System in Betracht gezogen, aber in der Praxis ist NixOS nutzbarer.
Ich wünschte nur, NixOS hätte nicht diese ungewöhnliche Dateisystemstruktur.
Dieser Ansatz soll zwar das Problem lösen, mehrere Python-Versionen gleichzeitig zu nutzen, aber für mich ist das unnötig.
Ich möchte einfach nur auf allen Maschinen dieselbe Konfiguration beibehalten.
Aktuell experimentiere ich mit Fedora-bootc-Images und Podman, aber dort fehlt eine sofort wirksame Funktion wie
nixos-rebuild switch, was unpraktisch ist.Am Ende ist es ein Trade-off zwischen leicht experimentierbarem Nix und Fedora mit Standard-Dateisystem.
Der größte Vorteil von NixOS ist die deterministische Reproduzierbarkeit des CI-Caches.
Man muss Pakete nicht jedes Mal neu bauen, und auch das Einrichten von Entwicklungsumgebungen ist einfach.
Tangled hat zum Beispiel sein gesamtes CI-System mit Nix aufgebaut und damit die Caching-Probleme von GitHub Actions vollständig gelöst.
Ich nutze nicht das ganze System, aber devenv.sh sehr gern.
Damit lässt sich eine Entwicklungsumgebung viel einfacher aufsetzen als mit lokalen Containern.
Mir fehlt eine einfache Möglichkeit, Versionen wie in
.tool-versionsvon asdf abzugleichen.Im Nix-Umfeld heißt es oft: „Das ist der falsche Ansatz“, aber ich möchte einzelne Versionen trotzdem weiterhin pinnen.
pkgs.mkShellkann man eine ähnliche Umgebung bauen, daher frage ich mich, warum man unbedingt devenv nutzen sollte.Ich mag NixOS auch, aber Guix bevorzuge ich noch mehr.
Mit der Sprache Guile bin ich vertrauter, und auch die Dokumentation ist besser. Ich sehe die beiden Systeme als Schwesterprojekte.
Dass es eine echte Programmiersprache (Scheme) verwendet, ist ein großer Vorteil.
Das bietet eine viel stärkere Grundlage als eine bloße Konfigurationssprache.