NixOS & Konfiguration

NixOS für Einsteiger: Meine configuration.nix verständlich erklärt

Konfiguration bleibt auf deinem Rechner

Du bearbeitest lokale Dateien. Nix kann beim Bauen Pakete und Quellen herunterladen; persönliche Dateien gehören nicht als Geheimnisse in die Systemkonfiguration.

In diesem Artikel
  1. Wie liest man eine configuration.nix?
  2. Pakete installieren und Dienste einschalten
  3. Was richten Plasma und PipeWire ein?
  4. Welche Teile sind persönlich oder hardwareabhängig?
  5. Eine kleine Änderung: jq ergänzen
  6. Wie nehme ich die Änderung zurück?
  7. Datenschutz, Generationen und stateVersion
  8. Konfiguration und weiterführende Quellen

Unter NixOS beschreibst du einen großen Teil deines Systems in einer Konfiguration: welche Programme vorhanden sind, welche Dienste laufen und wie der Desktop eingerichtet ist. Meine configuration.nix aus dem Cthulhu-Repository ist dafür ein konkretes Beispiel. Hinter der langen Datei stehen viele kleine, verständliche Entscheidungen.

Dieser Einstieg setzt eine bereits funktionierende NixOS-Installation voraus. Am Ende kannst du wichtige Blöcke zuordnen und eine einzelne Paketänderung testen. Die Beispiele beziehen sich auf die veröffentlichte Datei vom 7. Oktober 2026. Sie beschreibt Cthulhu mit Plasma und Radeon; andere Rechner brauchen ihre eigenen Hardwareangaben.

Wie liest man eine configuration.nix?

Die Datei ist ein NixOS-Modul. Der Anfang nimmt unter anderem pkgs entgegen, den Zugriff auf Pakete. Im folgenden Attributsatz stehen Einstellungen. Ein kleiner Ausschnitt sieht so aus:

{ config, pkgs, ... }:
{
  imports = [ ./hardware-configuration.nix ];
  networking.networkmanager.enable = true;
  time.timeZone = "Europe/Berlin";
}

Geschweifte Klammern gruppieren Einstellungen; eckige Klammern enthalten eine Liste. Zeichenketten stehen in Anführungszeichen, Wahrheitswerte heißen true und false. Zuweisungen enden mit einem Semikolon. Der Punkt in einem Namen führt zu einer untergeordneten Einstellung.

imports verbindet weitere Module mit der Datei. Die Hardwaredatei enthält etwa erkannte Dateisysteme und benötigte Module für diesen Rechner. Sie bleibt beim Lernen erhalten. Ergänze Beispiele innerhalb deiner vorhandenen Konfiguration, statt deren Hardwaregrundlage durch meine zu ersetzen.

Pakete installieren und Dienste einschalten

In meiner Datei stehen Alltagsprogramme in environment.systemPackages. Mit with pkgs; lassen sich ihre Namen ohne ein wiederholtes pkgs. schreiben. Hier ist die Liste bewusst auf wenige Einträge verkürzt:

environment.systemPackages = with pkgs; [
  kitty
  curl
  git
  tree
];

Das macht diese Programme systemweit verfügbar. Ein Hintergrunddienst hat zusätzliche Aufgaben: Er muss eingerichtet und gestartet werden. Dafür dienen passende NixOS-Module, etwa networking.networkmanager.enable = true;. Ein Paketname allein ist daher kein Ersatz für eine Dienstkonfiguration.

Auch Programme können ein eigenes Modul haben. In meiner Datei steht programs.firefox.enable = true;. Suche eine gewünschte Einstellung in der NixOS-Optionsuche und wähle die passende NixOS-Version. Ein Internetbeispiel kann einen inzwischen anders benannten Optionspfad verwenden.

Was richten Plasma und PipeWire ein?

Meine Datei aktiviert SDDM für die Anmeldung und Plasma 6 für den Desktop. Die entscheidenden Einstellungen sind:

services.displayManager.sddm.enable = true;
services.desktopManager.plasma6.enable = true;

Daneben sind Xserver-Unterstützung und ein deutsches XKB-Layout konfiguriert. Daraus folgt nicht, dass jede gestartete Plasma-Sitzung X11 verwendet. Desktop, Anmeldemanager und Sitzungsart sind verschiedene Teile des Aufbaus.

Für Audio aktiviert die Datei PipeWire, WirePlumber sowie ALSA- und PulseAudio-Kompatibilität. Der separate PulseAudio-Dienst ist deaktiviert. Programme mit einer PulseAudio-Schnittstelle können deshalb trotzdem Audio ausgeben. Bei einem Problem hilft zuerst die Frage, welcher Audioweg tatsächlich aktiv ist; mehrere konkurrierende Dienste machen den Aufbau schwerer verständlich.

Welche Teile sind persönlich oder hardwareabhängig?

Block in meiner DateiWas du daraus übernehmen kannst
Benutzer nebu und GruppenDas Prinzip eines normalen Benutzers und bewusst vergebener Rechte; Namen und Gruppen anpassen.
Zeitzone, Sprache und TastaturDie Trennung zwischen Sprache, Konsolentastatur und grafischem Tastaturlayout.
Radeon-Grafik und 32-Bit-UnterstützungDen Zweck der Optionen; den eigenen Grafiktreiber gesondert prüfen.
Mounts unter /mntWie Dateisysteme beschrieben werden; Labels und Einhängepunkte gehören zu meinen Laufwerken.
KVM, libvirt und virbr0Den Zusammenhang mit virtuellen Maschinen; die Netzwerkregel nur bei entsprechendem Aufbau verwenden.

Die Datei enthält außerdem einen aktuellen Kernel, ZRAM und persönliche Boot-Einstellungen. Diese Entscheidungen sind keine Voraussetzung für NixOS. Beginne mit deinem funktionierenden System und ändere einen Bereich nach dem anderen. So bleibt erkennbar, welche Änderung welches Ergebnis verursacht.

Eine kleine Änderung: jq ergänzen

Als Übung ergänzen wir das Kommandozeilenprogramm jq zum Lesen von JSON. Sichere zuerst deine bestehende Hauptdatei. Der Befehl erhält die vorherige Sicherungsdatei als nummerierte Kopie, falls sie bereits vorhanden ist:

sudo cp -a --backup=numbered /etc/nixos/configuration.nix /etc/nixos/configuration.nix.before-tutorial

Bei weiteren importierten Dateien sichere auch diese. Öffne danach deine Konfiguration im Editor und füge jq zur vorhandenen Paketliste hinzu. Der Ausschnitt ist verkürzt: Behalte deine anderen Paketnamen bei. Lege keinen zweiten Block mit derselben Zuweisung an.

environment.systemPackages = with pkgs; [
  kitty
  curl
  git
  tree
  jq
];

Die folgenden Befehle passen zur klassischen lokalen Konfiguration. Falls dein System Flakes verwendet, nutze dessen bestehenden Rebuild-Aufruf mit dem passenden --flake-Ziel. Baue zuerst, ohne die neue Konfiguration zu aktivieren:

sudo nixos-rebuild build

Ein erfolgreicher Build zeigt, dass Auswertung und Bau funktioniert haben. Er ersetzt noch keinen Funktionstest. Teste anschließend die Konfiguration in der laufenden Sitzung:

sudo nixos-rebuild test

test aktiviert Änderungen, legt sie aber nicht als neuen Boot-Standard fest. Dienste können dabei verändert werden. Prüfe jetzt das hinzugefügte Programm:

jq --version

Erscheint eine Versionsnummer und funktioniert der Rest des Systems wie erwartet, kannst du die Konfiguration dauerhaft als neue Systemgeneration übernehmen:

sudo nixos-rebuild switch

Wie nehme ich die Änderung zurück?

Entferne für diese Übung jq wieder aus der Liste und führe den Rebuild erneut aus. Du kannst stattdessen die gesicherte Datei zurückkopieren, wenn seitdem keine anderen Änderungen erhalten bleiben müssen:

sudo cp -a /etc/nixos/configuration.nix.before-tutorial /etc/nixos/configuration.nix

Nach dem Zurückkopieren der Datei baust und aktivierst du sie erneut mit sudo nixos-rebuild switch. Als Alternative zu diesem Neubau kannst du nach einem zuvor übernommenen switch die vorherige noch vorhandene Systemgeneration aktivieren:

sudo nixos-rebuild switch --rollback

Ein Rollback setzt deine bearbeitete Quelldatei nicht zurück und stellt keine persönlichen Dokumente wieder her. Ein späterer Rebuild verwendet wieder die Datei auf der Festplatte. Nach einem reinen test bleibt der bisherige Boot-Standard erhalten; ein Neustart startet normalerweise diesen Stand. Automatisches Zurückrollen während der Sitzung ist damit nicht verbunden.

Datenschutz, Generationen und stateVersion

Konfigurationen sind lokale Textdateien, können aber Benutzernamen, Laufwerkslabels oder Netzwerkangaben enthalten. Nix übernimmt viele ausgewertete Inhalte in den häufig lokal lesbaren Nix Store. Passwörter, private Schlüssel und Zugriffstoken gehören deshalb nicht als Klartext in diese Beispiele oder in ein öffentliches Repository.

system.stateVersion ist keine Auswahl der neuesten Paketversion. Die Einstellung beeinflusst Kompatibilitätsvorgaben für gespeicherten Systemzustand. Behalte den bewusst gesetzten Wert deines Systems, statt meine 26.05 beim Kopieren zu übernehmen. Generationen helfen beim Zurückgehen zu einem Systemstand, ersetzen jedoch keine Datensicherung. Dazu passt der Artikel über Konfigurations-Backups.

Konfiguration und weiterführende Quellen

Grundlage sind die veröffentlichte Cthulhu-Datei und die NixOS-Dokumentation, geprüft am 7. Oktober 2026. Die Übung ergänzt gezielt ein Paket; sie ist kein kompletter Ersatz für deine Systemkonfiguration.