Nochmal kurz in Erinnerung gerufen: NixOS trennt sauber zwischen zwei Ebenen:
| Ebene | Wer verwaltet |
|---|---|
System (configuration.nix, flake.nix) |
Admin (sudo) |
Benutzerumgebung (home.nix) |
Benutzer selbst |
Diese Trennung ermöglicht zwei sehr unterschiedliche Szenarien:
Einen Gastnutzer ohne Passwort dessen Umgebung der Admin vollständig
kontrolliert, und eine eigenständige Benutzerin die ihre Konfiguration
selbst verwaltet.
Im Beispiel habe ich die zusätzliche Nutzerin "Anna" getauft.
| Anna | Gast | |
|---|---|---|
| Eigene Programme installieren und updaten | ✅ selbst | ❌ nur Admin |
| Desktop-Einstellungen ändern | ✅ | ✅ |
Der Unterschied zwischen den zwei Szenarien
Anna (Standalone): Anna hat ihren eigenen unabhängigen Home Manager der nichts mit der flake.nix zu tun hat. Sie führt home-manager switch selbst aus.
Für Anna braucht NixOS nur zwei Dinge zu wissen:
- Dass der Benutzer
annaexistiert →configuration.nix - Welches Passwort sie hat →
sudo passwd anna
Alles andere – ihre Programme, ihr Theme, ihre Shell – ist Annas Privatangelegenheit und wird von ihr selbst über home-manager switch geregelt.
Gastnutzer (als NixOS-Modul): Hier definierst du, neben der configuration.nix, in der flake.nix, wie du mit Gästen umgehen möchtest. Du sagt NixOS: „Verwalte die Benutzerumgebung von gast mit dieser Datei (home-gast.nix)." NixOS baut die Gast-Umgebung beim nixos-rebuild dann automatisch ein.
Konfigurationsdateien zum Download
Wer das so umsetzen möchte, kann sich eine home-gast.nix, die home-anna.nix und einen Vorschlag für eine Nutzeranleitung HIER herunterladen.
Szenario A: Gastnutzer anlegen
Der Gastnutzer betritt das System ohne Passwort und bekommt eine feste
Ausstattung (Firefox, Thunderbird, LibreOffice) die nur der Admin ändern kann.
Schritt 1: Gastnutzer in configuration.nix anlegen
# In configuration.nix
users.users.gast = {
isNormalUser = true;
description = "Gast";
extraGroups = []; # Keine Berechtigungen – kein sudo!
password = ""; # Kein Passwort
};
# Leere Passwörter beim Login erlauben
security.pam.services.gdm-password.allowNullPasswords = true;
security.pam.services.login.allowNullPasswords = true;
Schritt 2: home-gast.nix erstellen
Einen Vorschlag für den Inhalt habe ich dir in einer home-gast.nix für den Download vorbereitet.
Du als Admin legst die Konfiguration des Gastnutzers nach deinen Vorstellungen an, editiere also ruhig meinen Vorschlag:
sudo nano /etc/nixos/home-gast.nix
Schritt 3: flake.nix um den Gastnutzer erweitern
Wenn ein Gastzugang auf allen Rechnern eingerichtet wird, dann geht das ungemein elegant durchg Ergänzen descommon-modules-Block in der flake.nix:
{
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.backupFileExtension = "backup";
home-manager.users.DEIN-USERNAME = import ./home.nix;
home-manager.users.gast = import ./home-gast.nix; # ← neu
}
Soll nur der Heimrechner (im Beispiel ist der Hostname nixos) mit einem Gastzugang ausgestattet werden, dann statt des obigen Eintrags nur den rechnerspezifischen Block ergänzen:
# Nur auf dem Heimrechner "nixos"
nixos = nixpkgs.lib.nixosSystem {
modules = common-modules ++ [
./nixos.nix
./hardware-configuration.nix
{ home-manager.users.gast = import ./home-gast.nix; } # ← nur hier
];
};
Schritt 4: Dateirechte setzen
Der Gastnutzer bekommt keine Schreibrechte auf seine Konfigurationsdatei –
nur der Admin darf sie ändern:
# home-gast.nix gehört root, kein Schreibrecht für andere
sudo chmod 644 /etc/nixos/home-gast.nix
sudo chown root:root /etc/nixos/home-gast.nix
Schritt 5: Rebuild und sichern
cd /etc/nixos
sudo git add home-gast.nix
update-push
Nach dem Rebuild erscheint gast im (GDM-)Anmeldebildschirm – ohne Passwortfeld,
einfach anklicken und einloggen.
Szenario B: Eigenständige Benutzerin Anna anlegen
Anna bekommt einen vollwertigen Account und verwaltet ihre Konfiguration
komplett selbst – ohne den Admin zu benötigen.
Schritt 1: Anna in configuration.nix anlegen
users.users.anna = {
isNormalUser = true;
description = "Anna";
extraGroups = [ "networkmanager" ]; # Kein "wheel" → kein sudo!
};
Kein
wheelinextraGroups– Anna bekommt kein sudo und kann damit
wedernixos-rebuildnoch Systemdateien ändern.
Schritt 2: Rebuild damit der Account existiert
update-push
Schritt 3: Passwort für Anna setzen
sudo passwd anna
Schritt 4: Initiale home-anna.nix vorbereiten
Wie eine home-anna.nix aussehen kann, habe ich ebenfalls als Download vorbereitet.
Du als Admin legst Annas initiale Konfiguration in ihrem Home-Verzeichnis ab:
sudo mkdir -p /home/anna/.config/home-manager
sudo cp /etc/nixos/home-anna.nix /home/anna/.config/home-manager/home.nix
sudo chown -R anna:users /home/anna/.config/home-manager
Anna bekommt damit eine fertige Startumgebung – alle auskommentierten
Programme kann sie nach Belieben selbst aktivieren.
Schritt 5: Anna richtet ihren eigenen Home Manager ein
Dir als Administrator empfehle ich, dass du dich einmal selbst als Anna anmeldest und die Umgebung im Terminal einrichtest - das würde sie selbst überfordern:
# Als anna – kein sudo!
nix-channel --add https://github.com/nix-community/home-manager/archive/release-25.11.tar.gz home-manager
nix-channel --update
nix-shell '' -A install
Damit Anna weiß, wie sie sich in NixOS zurechtfindet, habe ich ihr eine kleine Anleitung erstellt.
Die Kurzfassung für Anna:
# Programme hinzufügen: home.nix editieren, dann:
home-manager switch
Zusammenfassung: Welcher Weg für wen?
| Szenario | Ansatz | Konfiguration liegt in |
|---|---|---|
| Gastnutzer | Admin verwaltet alles | /etc/nixos/home-gast.nix |
| Eigenständige Benutzerin | User verwaltet selbst | ~/.config/home-manager/home.nixalso nicht in /etc/nixos |
| Admin (Du) | Home, Konfiguration, Flakes | /etc/nixos/home.nix /etc/nixos/configuration.nix /etc/nixos/flake.nix |
Alle drei Szenarien laufen friedlich nebeneinander – jeder Benutzer auf seiner eigenen Ebene.
Artikel der NixOS-Reihe
- NixOS - Setup-Guide, Teil 1
- NixOS - Setup-Guide, Teil 2
- NixOS - Setup-Guide, Teil 3
- NixOS - Codeberg-Kommunikation optimieren und Troubleshooting
- NixOS - Multi-User-Setup einrichten
- NixOS - Pakete aus 'unstable' einbinden und "Wegwerf-Pakete"
- NixOS - Das Multi-Host-Setup optimieren und individueller gestalten

Hi,
ich finde deine NixOS-Reihe echt klasse, danke dafür!!
Selbst benutze ich NixOS jetzt seit letztem August. Doch meine bisherige Nutzung beschränkt sich ausschließlich auf die configuration.nix und ich bin gerade dabei die Reihe "durch zu arbeiten", da meine config recht wild aussieht :D
Da kamen mir ein paar Fragen:
Nochmal besten Dank für die Reihe, ich bin gespannt, wie viel Potential noch ungenutzt lasse :)
Lieben Dank für das Interesse und die Blumen!
Wenn du dich bitte noch bis Freitag, 9.00 Uhr gedulden möchtest; da das Versions-Upgrade ja ganz aktuell ausgerollt wurde, habe ich das spontan in den kommenden Artikel mit aufgenommen.
Müsste es unter: Welcher Weg für wen? Eigenständige Benutzerin User verwaltet selbst ~/.config/home-manager/home-anna.nix
nicht nur home.nix heißen, weil Du auch vorher sudo cp /etc/nixos/home-anna.nix /home/anna/.config/home-manager/home.nix machst oder nimmt nix einfach die .nix Datei im .config/home-manger/ Verzeichnis egal wie sie heißt?
Lieber Udo, sehr aufmerksam, Danke! EDIT: Ich habe die Korrektur in den Text eingearbeitet! In der Tabelle stand home-anna.nix, aber nach dem cp-Befehl heißt die Datei auf Annas Rechner tatsächlich home.nix: bashsudo cp /etc/nixos/home-anna.nix /home/anna/.config/home-manager/home.nix Home Manager erwartet die Datei zwingend unter dem Namen home.nix – der Name ist nicht frei wählbar. home-anna.nix ist nur der Name im Admin-Repository /etc/nixos/ zur besseren Unterscheidbarkeit zwischen mehreren Nutzern. Nach dem Kopieren heißt sie auf Annas Rechner home.nix.
Hi,
Thank you for this series of articles (really great).
I just noticed that the download links for the sample configuration files seem to be broken (in Part 2 for configuration.nix, flake.nix, home.nix, but also in this multi-user section for home-anna.nix and home-gast.nix).
Thanks again for the series :)
I fixed it