NixOS - Setup-Guide, Teil 3

  Reto   Lesezeit: 6 Minuten  🗪 12 Kommentare Auf Mastodon ansehen

Im abschließenden Teil zeige ich, wie man in nur je 30 Minuten weitere eigene Rechner mit der vorhandenen NixOS Konfiguration von Null an aufsetzt und mit Codeberg synchron hält.

nixos - setup-guide, teil 3

Systemübertragung

Ich könnte jetzt Sternekoch Nixos beispielhaft Filialen einrichten lassen, möchte das aber nicht überstrapazieren. Daher gleich auf die Systemebene.

1. Installation

Nehmt euren Zweitrechner und folgt den Installationsschritten aus Teil 1:

  1. Graphical ISO image von https://nixos.org/download herunterladen (dazu bis zu NixOS runter scrollen)
  2. ISO auf USB-Stick schreiben und von diesem booten
  3. Internetverbindung herstellen
  4. Dem grafischen Installer wie gewohnt folgen. Empfehlung: "allow unfree software" zulassen
  5. Reboot
  6. Internetverbindung herstellen

2. Hostname ändern

Das ist ein sehr wichtiger Punkt. Wir dürfen keinesfalls den gleichen Hostname (z.B. nixos) mehrfach im Netzwerk nutzen!

In der Welt von NixOS gibt es für den Hostnamen – wie für vieles andere auch – keinen "Befehl" im klassischen Sinne (wie hostnamectl). Wenn du einen Befehl eintippst, wäre die Änderung nach dem nächsten Neustart sofort wieder weg, weil NixOS beim Booten alles so herstellt, wie es in deinen Konfigurationsdateien steht.
In einer Antwort auf einen Kommentar zu Teil 2 hatte ich dazu auch schon mal etwas geschrieben.
Als Faustregel kann man sich merken: Alles, was ich individuell für mich setzen möchte, kann ich in der Konfiguration (home.nix, entspricht ja ~/home) deklarativ festhalten, muss es aber nicht. Systemeinstellungen werden hingegen grundsätzlich "the Nix Way" festgeschrieben (configuration.nix, flake.nix).

Die Änderung des Hostnames ist ganz klar eine Systemeinstellung. Öffne die configuration.nix und suche die Zeile networking.hostName. Ändere den Wert in deinen Wunschnamen:

networking.hostName = "dein-neuer-name";

Danach System neu bauen und neu booten:

sudo nixos-rebuild switch
sudo reboot

NixOS schreibt damit die Datei /etc/hostname für dich neu. Dieser Schritt aktiviert gleichzeitig den normalen Rebuild – nötig als Vorstufe bevor wir später mit Flakes bauen.

3. Hardware-Konfiguration umbenennen

Ein sehr kritischer Punkt: Wir haben ja gelernt, dass die hardware-configuration.nix automatisch erstellt wird – und zwar individuell für jeden Rechner. Daher müssen wir die Datei umbenennen, sonst wird sie später mit derjenigen vom Erstrechner überschrieben!

Tipp: Nutze den neuen Hostname als eindeutige Kennung. Bei mehreren Rechnern gibt das eine konsistente Struktur.

cd /etc/nixos
sudo mv hardware-configuration.nix hardware-configuration-dein-neuer-name.nix

4. Git einrichten

4.1 Git temporär bereitstellen

Da Git noch nicht im System installiert ist, stellen wir es so wie in Teil 2 vorübergehend über eine temporäre Nix-Shell bereit:

nix-shell -p git

Du befindest dich jetzt in einer temporären Shell-Umgebung, in der Git verfügbar ist. In Teil 2 hatte ich das gar nicht erwähnt und hier auch nur kurz. Ich greife das Thema aber noch auf. Alle folgenden Schritte bis einschließlich 4.6 führst du innerhalb dieser Shell aus. Das Terminal also nicht beenden!

Nach dem Rebuild in Schritt 4.6 ist git dann dauerhaft im System verankert – es ja bereits in deiner "alten" configuration.nix enthalten, die wir gleich von Codeberg holen. Die temporäre Shell kannst du danach mit exit verlassen.

4.2 Git konfigurieren

sudo git config --global user.name "DEIN-USERNAME"
sudo git config --global user.email "deine@email.de"

4.3 Repository initialisieren und Konfiguration von Codeberg holen

# Git-Repo wird direkt in /etc/nixos initialisiert
cd /etc/nixos
sudo git init
sudo git remote add origin https://codeberg.org/DEIN-USERNAME/NixOS.git
sudo git fetch origin
sudo git reset --hard origin/master

4.4 Die flake.nix um den neuen Rechner erweitern

Nochmal zum Verständnis: Die flake.nix ist die Schaltzentrale. Hätte unser Sternekoch tatsächlich "McNixos" gegründet, dann wäre der Hauptsitz in Flake-Town, von wo aus er Marketing etc. zentral steuern würde.

In der flake.nix hatte ich den Block für den Zweitrechner bereits vorbereitet und erstmal auskommentiert. Die Auskommentierungen (die # am Zeilenanfang) entfernen und an den markierten Stellen dein-neuer-name eintragen:

      # --- Konfiguration für den Zweitrechner ---
      dein-neuer-name = nixpkgs.lib.nixosSystem {
        system = "x86_64-linux";
        modules = common-modules ++ [
          ./hardware-configuration-dein-neuer-name.nix
          { networking.hostName = "dein-neuer-name"; }
        ];
      };

Wichtig: Der Dateiname hardware-configuration-dein-neuer-name.nix hier in der flake.nix muss exakt mit dem Dateinamen übereinstimmen, den du in Schritt 3 vergeben hast. Flakes finden nur Dateien, die Git bekannt sind und deren Name stimmt – beides muss passen.

Sollen später noch mehr Rechner dazu kommen, einfach immer um einen neuen Block (siehe oben) erweitern.

4.5 Alle Dateien Git bekannt machen

Dies ist der entscheidende Schritt der gerne vergessen wird und zu Fehlermeldungen führt: Alle Dateien – insbesondere die umbenannte Hardware-Konfiguration – müssen Git bekannt sein bevor der Flake-Build gestartet wird. Flakes ignorieren Dateien die Git nicht kennt, auch wenn sie auf der Festplatte liegen.

cd /etc/nixos
sudo git add .    # Hier den Punkt nicht vergessen
sudo git commit -m "dein-neuer-name hinzugefügt"

4.6 System aufbauen

Jetzt wird das System Bit-genau nach der Konfiguration des Erstrechners aufgebaut. Das dauert beim ersten Mal etwas länger – alle Programme werden heruntergeladen und installiert.

sudo nixos-rebuild switch --flake .#dein-neuer-name

Was an dieser Stelle noch nicht geht, aber das lösen wir noch (siehe Ausblick). Wenn du Rechner mit sehr unterschiedlicher Hardware hast, im einfachsten Fall einen Laptop und einen Desktop-Rechner, dann möchtest du z. B. auf letzterem bei der Tastatur nicht unbedingt die Option "-nodeadkeys" haben. Das lässt sich aber mit den "Nixen" super in den Griff bekommen, du wirst sehen.

4.7 Konfiguration auf Codeberg sichern

# flake.lock hat sich durch den Rebuild aktualisiert
sudo git add flake.lock
sudo git commit -m "Konfiguration für dein-neuer-name finalisiert"
sudo git push origin master

Beim git push wirst du nach deinem Codeberg-Benutzernamen und einem Access Token gefragt – nicht nach deinem normalen Codeberg-Passwort. Einen Token erstellst du einmalig unter: Codeberg → Einstellungen → Anwendungen → Token generieren. Wie man die Kommunikation mit Codeberg dauerhaft und passwortlos einrichtet, zeige ich in einem späteren Teil.

Have fun

So, das war's. Ich hoffe, dass alles sauber durchgelaufen ist und du jetzt auch gerne in der Sterneküche kochst.

Für die ganzen Mühen nochmal eine Belohnung:

pull-update     # Skript 2

Du hast auf dem Rechner im Büro etwas an der Konfiguration geändert (ob das der Erst- oder Zweitrechner ist, spielt keine Rolle) und diese mit update-push ('Skript 1', siehe Teil 2) gesichert.

Zuhause angekommen machst du später noch was am Heimrechner: das neue 'Skript 2' pull-update (ebenfalls schon in der home.nix aktiv) holt nun automatisch die aktuelle Konfiguration von Codeberg und stößt den System-Build an. Damit hast du Bit-genau den Bürorechner auch zuhause.

Beide Skripte verwenden den Platzhalter hostname, so dass du nicht aufpassen musst, ob du am Erstrechner --flake .#nixos oder am Zweitrechner --flake .#dein-neuer-name sitzt.

Du brauchst also für die komplette Administration und Synchronisation aller Rechner nur noch zwei Befehle: update-push und pull-update. Das soll ein anderes System mal nachmachen. Jetzt sollte endgültig klar sein, warum mein Distro-Hopping wegen NixOS ein Ende gefunden hat.

Ausblick

Der initiale Setup ist hiermit abgeschlossen, aber natürlich gibt es noch unendlich viele weitere Optimierungsmöglichkeiten. Meine Möglichkeiten, meine Kompetenz und auch meine Zeit ist dagegen sehr endlich, trotzdem möchte ich euch an meiner Weiterentwicklung und damit auch der meines Systems bzw. der Multi-Host-Umgebung teilhaben lassen.

Artikel der NixOS-Reihe

Tags

Nix, NixOS, Flakes

Reto
Geschrieben von Reto am 16. Mai 2026 um 09:58

Auf Impuls des Core-Teams findet ihr nun immer am Ende eines Beitrags ein verlinktes Inhaltsverzeichnis zu allen schon erschienenen Artikeln der NixOS-Reihe.

evilware666
Geschrieben von evilware666 am 17. Mai 2026 um 07:58

Moin Moin!

Ich habe richtig Lust, das mal auszuprobieren, aber im Moment leider keine Zeit. Trotzdem spukt mir der Gedanke im Kopf herum, ob man für das Erstellen der Dateien nicht auch ein Programm mit GUI bauen könnte, das den Prozess deutlich dadurch vereinfacht und damit auch weniger versierten Nutzern den Einstieg in Nix/NixOS erleichtert.

Mfg: evilware666

mkl
Geschrieben von mkl am 17. Mai 2026 um 18:31

Für produktiven Einsatz als Admin sicherlich einen Blick wert. In SoHo Bereich absoluter Quatsch und auf Dauer bleibt da eh keiner dabei. Klar, wenn man das liest fixt einen das erstmal eventuell an. Ist was neues, was mystisches... Was "haben will". Aber mal ehrlich, die Euphorie ist nach wenigen Tagen dahin... Der Hype um nix zeigt es deutlich. Keiner mehr da...

TL;DR Viel Wind um Nix ;)

Reto
Geschrieben von Reto am 18. Mai 2026 um 11:19

Mal ehrlich: Jeder hat die frei Wahl - das ist das Schöne im Linux Universum. Werbung mache ich nicht, berichte nur. Das durch den Paradigmenwechsel gegebene Versprechen löst NixOS auf meiner Umgebung (3 Rechner) jedenfalls voll ein und zaubert mir jeden Tag aufs Neue ein Lächeln ins Gesicht; Systempflege ist ein No-Brainer (ein Befehl) und das bei maximaler Stabilität, selbst mit aktuellen Paketen aus 'unstable'.

mkl
Geschrieben von mkl am 18. Mai 2026 um 17:49

Getretene Hunde bellen. Ich verbiete niemanden zu installieren was er will. Aber ein Autor eines Artikels darf nicht nur Huldigung und Lobhudelei als Resonanz erwarten. Da musst du mit umgehen können.

kamome
Geschrieben von kamome am 19. Mai 2026 um 16:01

Bellen?! Wohl eher jemand, der im SoHo-Bereich mit dem System gut fährt?

kamome
Geschrieben von kamome am 19. Mai 2026 um 16:03

Danke für die ganze Serie, schöner praktischer Einblick!

Pedant: Ein „No-Brainer“ sollte Systempflege wohl immer sein (also, dass man sie vornimmt) – ob man dafür dann seinen Grips bemühen muss oder nicht, ist ein anderes Thema ;) Und wenn das mit NixOS gut läuft, wohl sicher mal einen Blick wert!

Adrian
Geschrieben von Adrian am 25. Mai 2026 um 14:27

Inhaltlich kann man geteilter Meinung sein – aber "absoluter Quatsch" ist keine konstruktive Kritik. Der Autor hat sich die Mühe gemacht, etwas aufzuschreiben, das verdient zumindest einen respektvollen Umgangston.

Inhaltlich widerspreche ich dir auch: Ich setze Nix selbst im SoHo-Bereich ein und bin alles andere als enttäuscht. Die Euphorie mag bei manchen verfliegen – wer sich aber einmal damit auseinandergesetzt hat, bleibt oft dabei, weil es echte Probleme löst.

Adrian
Geschrieben von Adrian am 25. Mai 2026 um 11:18

Schau dir mal https://github.com/nix-community/nixos-anywhere and damit geht die reremote installation noch viel einfacher. Dann noch kombinieren mit https://github.com/nix-community/nixos-anywhere und du kennst eine ganze homelab fleet managen

Reto
Geschrieben von Reto am 27. Mai 2026 um 10:49

Hallo Adrian, das hört sich sehr spannend an. Hast du damit Erfahrung? Wenn ja, wie wäre es mit einem kleinen Beitrag dazu in dieser NixOS-Reihe? Wenn du den Beitrag über 'Mitschreiben' (https://gnulinux.ch/mitschreiben) einreichst, könnten wir diesen in die Reihe (unter deinem Namen) einpflegen. Gruß, Reto

Adrian
Geschrieben von Adrian am 29. Mai 2026 um 08:15

Ja hab ich mach das allerdings in meinem eigenen blog :-) Konnten meinen Artikel natürlich ins Deutsch übersetzen und hier einpflegen. Ich schauen mir mal an

eFrame
Geschrieben von eFrame am 12. Juni 2026 um 15:57

Tschou zäme

Merci für den Artikel, sehr interessant. Kritik ist wichtig, aber nicht jeder Artikel mag jeden interessieren, dann ist Kritik auch nicht nötig.

nixOS hat mich schon seit längerem interessiert, und die Artikelserie hat mir den Einstieg vereinfacht wenn nicht sogar versüsst (Insbesondere der Blickwinkel aus Sicht einer Küche :)).

Die Frage ob es auch via GUI möglich ist finde ich berechtigt und interessant, da ein OS so für die unbedachteren User eben dann schwer oder gar nicht zugänglich ist. Und die Methoden von nix / nixOS finde ich essentiell und sehr zukunftsgerichtet, also relevant für ein sicheres, stabiles und einfach zu verwaltendes System.

Es würde mich freuen weitere Artikel zu nixOS zu lesen die das hier angefangene Universum erweitern.

Noch einmal ein grosses Merci an den Autor.

eFrame