Meine NixOS Konfiguration
Meine NixOS Konfiguration mit Installationsanleitung
Zuletzt aktualisiert am 08.10.2026
Zur Post-Installation und Konfiguration von NixOS habe ich ein bash-script erstellt.
Dieses ist geeignet für ein NixOS mit KDE Plasma Desktop.
NixOS muss natürlich zuvor installiert worden sein. https://nixos.org
Die Installation erfolgt über den einfach bedienbaren Calamares Installer.
Manch einer wird sich jetzt möglicherweise fragen: Was ist an NixOS besonders?
Meine Erfahrung damit: NixOS ist unzerstörbar, solange nicht die Hardware versagt. Wenn doch mal etwas schiefgeht, rollt man das System einfach via Boot-Menü und einer vorhergehenden Generation zurück.
Eine Neuinstallation von NixOS inkl. der Ausführung des NixOS-Post-Installations-Skripts dauert weniger als 30 Minuten (abhängig von der Internetanbindung).
Wer mag kann sich das Skript gerne mal ansehen oder testen. Es richtet sich an Linux-Quereinsteiger als auch an erfahrene Linux-User welche mit NixOS noch wenig in Berührung gekommen sind.
So installiere ich NixOS:
→ → → → → → → → → → → → → → → → → → → → → → → → → →
Nach dem Booten vom Installationsmedium beginnt auch schon die Installation:
Sprache → Deutsch
Standort → Europe → Vienna
Tastatur → German (Austria) → Default
Benutzer → Benutzerdaten eingeben → Nutze das gleiche Passwort auch für das Administratorkonto
Desktop → Plasma
Unfree software → Allow unfree software
Partition → Festplatte Löschen
→ Swap ohne Ruhezustand
→ ext4
System nicht verschlüsseln!
Installieren
Nach der Installation das System neu starten und das Installations-Medium entfernen.
→ → → → → → → → → → → → → → → → → → → → → → → → → →
Zum Herunterladen der Konfigurationsdateien wird wget benötigt.
Das Skript wird wget automatisch installieren. Das klappt aber nur wenn NixOS mit KDE-Plasma installiert worden ist.
In der /etc/nixos/configuration.nix können Sie wget auch manuell aktivieren.
Nur bei manueller Aktivierung von wget: Danach Konsole öffnen und sudo nixos-rebuild switch ausführen.
Mit folgender Befehlszeile das NixOS-Post-Installations-Skript herunterladen und ausführen:
bash <(curl https://austriahosting.com/downloads/nixos.sh)
Bevor die tatsächliche Installation startet, bekommen Sie noch die Möglichkeit sich das Skript anzusehen, gegebenenfalls abzuändern oder die Installation abzubrechen.
Skript nur herunterladen ohne es auszuführen (dazu muss wget, wie oben beschrieben, zuvor manuell installiert worden sein):
wget -nd https://austriahosting.com/downloads/nixos.sh -P ~/nixos
Danach Skript ausführen mit:
sh nixos/nixos.sh
Hierbei werden noch weitere Skripte heruntergeladen und im Ordner ~/scripts/ abgelegt:
channel.sh, check-flatpaks.sh, colors.sh, fix-icons.sh, gc.sh, mount.sh, mount-disk.sh, mount-share.sh, nixinstall.sh, samba.sh, share.sh, share-disk.sh, share-home.sh, timer.sh und timer-fp.sh.
nixinstall.sh erledigt die Post-Installation und Konfiguration von NixOS.
colors.sh dient nur zur Verbesserung der Darstellung.
Einige der anderen Skripte werden als Aliase in ZSH eingebunden.
Nachdem das Skript nixos.sh schon mal ausgeführt, die Installation aber abgebrochen wurde, dieses nicht nochmals starten um die Installation fertigzustellen! Sondern stattdessen fahren Sie fort mit:
./scripts/nixinstall.sh
Für ZSH werden zusätzliche Aliase hinzugefügt.
Hier die wichtigsten zusätzlich hinterlegten Konsolenbefehle:- check → Zeigt die verfügbaren Flatpak-Updates an.
- switch → Übernimmt Änderungen an der NixOS-Konfiguration
- update → Installiert Updates für Flatpaks und NixOS-Pakete.
- lg → Listet die aktuell verfügbaren Generationen auf.
- gc → Bereinigt das System. Löscht alte Benutzer-Profile, alte Generationen und alte Journal-Logs.
- gcc → Vorsicht: Löscht ALLE Generationen bis auf die Aktuelle.
- fix → Bring fehlende Symbole der Fensterleiste wieder zurück (Ein Symbol pro Ausführung).
- timer → Zeigt an wann nächste automatische Updates, Bereinigungen und Store-Optimierungen erfolgen.
Bis auf switch und fix ist nur selten etwas davon nötig. fix auch nur in den ersten Wochen nachdem eine Anwendung an die Fensterleiste angeheftet wurde.
gc ausführen, wenn der Speicherplatz knapp wird. gcc ausführen wenn's nicht anders geht.
Folgendes wird installiert und konfiguriert:
Systempakete: wget man-db man-pages kdePackages.filelight kdePackages.kfind kdePackages.kalk kdePackages.isoimagewriter nil bash-language-server usbimager fastfetch ffmpeg-full btop eza duf pika-backup
Diese Pakete wurden in der /etc/nixos/environment.nix aktiviert.
Optional für die Installation in einer Virtual Machine (Auswahlmöglichkeit: j/N): open-vm-tools
ZSH inkl. powerlevel10k wird installiert und konfiguriert.
Die Konfiguration befindet sich in der /etc/nixos/zsh.nix.
Office-Software: libreoffice-qt-fresh hunspell hunspellDicts.de_AT hyphen hyphenDicts.de_AT pdfarranger
Diese Pakete wurden in der /etc/nixos/environment.nix aktiviert.
Internet-Anwendungen: firefox (vorkonfiguriert) thunderbird chromium (etwas vorkonfiguriert)
Optional via Flatpak (Auswahlmöglichkeit: j/N): app.zen_browser.zen
Der Brave-Browser kann in der /etc/nixos/configuration.nix aktiviert werden. Ebenso kann dort auch Firefox und Chromium deaktiviert werden.
Die Konfiguration befindet sich in der firefox.nix, chromium.nix, brave.nix und flatpaks.nix.
Multimedia-Software: gst_all_1.gstreamer gst_all_1.gst-libav gst_all_1.gst-plugins-base gst_all_1.gst-plugins-good gst_all_1.gst-plugins-bad gst_all_1.gst-plugins-ugly xnviewmp gimp vlc
Diese Pakete wurden in der /etc/nixos/environment.nix aktiviert.
Videoschnitt-Software (Auswahlmöglichkeit: j/N): kdePackages.kdenlive
Via Fatpak: io.github.aandrew_me.ytdn com.github.unrud.VideoDownloader org.shotcut.Shotcut
Diese Pakete werden in der environment.nix und flatpaks.nix aktiviert.
Videoaufzeichnungs-Software OBS-Studio installieren (Auswahlmöglichkeit: j/N).
Dieses Paket wird in der /etc/nixos/default-settings.nix aktiviert.
Fernwartungs-Software (Auswahlmöglichkeit: j/N): anydesk rustdesk-flutter
Diese Pakete werden in der /etc/nixos/environment.nix aktiviert.
Drucker- und Scanner-Service wird aktiviert.
Zusätzliche Treiberpakete können in der /etc/nixos/cups-sane.nix aktiviert werden.
Samba-Service und Samba-Benutzer (Auswahlmöglichkeit: j/N).
Die Konfiguration wird bei der Installation in der /etc/nixos/samba.nix hinterlegt.
GRUB_TIMEOUT wird auf 2 Sekunden gesetzt.
Dolphin-Menüeintrag "Öffne alle Medien in VLC" wird erstellt.
XnView MP wird ins Startmenü eingebunden.
Dauerhafte AnyDesk- und RustDesk-Verknüpfungen am Desktop werden erstellt (falls sie installiert sind).
KDE-Wallet wird deaktiviert. Dabei wird die Datei ~/.config/kwalletrc erstellt und befüllt.
Nach dem Neustart des Systems, noch die Konsole öffnen um die Konfiguration von powerlevel10k für ZSH abzuschließen.
Hinweis zu Persönlichen- bzw. Länder-Einstellungen:
Gleich nachdem die Installation mittels ./scripts/nixinstall.sh begonnen hat wird die Datei /etc/nixos/configuration.nix erstellt.
Hier gibt es wahrscheinlich etwas das Sie anpassen möchten:
Zeile 27:
time.timeZone = "Europe/Vienna";
Zeile 30-41:
i18n.defaultLocale = "de_AT.UTF-8";
i18n.extraLocaleSettings = {
LC_ADDRESS = "de_AT.UTF-8";
LC_IDENTIFICATION = "de_AT.UTF-8";
LC_MEASUREMENT = "de_AT.UTF-8";
LC_MONETARY = "de_AT.UTF-8";
LC_NAME = "de_AT.UTF-8";
LC_NUMERIC = "de_AT.UTF-8";
LC_PAPER = "de_AT.UTF-8";
LC_TELEPHONE = "de_AT.UTF-8";
LC_TIME = "de_AT.UTF-8";
Zeile 61 + 62:
# Automatische Benutzer-Anmeldung aktivieren.
services.displayManager.autoLogin.enable = true;
services.displayManager.autoLogin.user = "IhrBenutzername";
Wenn Sie die automatische Benutzer-Anmeldung nicht deaktivieren möchten, dann ist hier nichts zu tun. Ihr richtiger Benutzer ist schon hinterlegt.
Sie sollten die /etc/nixos/configuration.nix und die /etc/nixos/configuration.nix.orig (Sicherungsdatei) öffnen, und Ihre "timeZone" und "defaultLocale" in die /etc/nixos/configuration.nix zurück kopieren. Aber bitte nichts Anderes von der Sicherungsdatei kopieren. Denn alle weiteren Konfigurationen wurden bereits in der /etc/nixos/default-settings.nix eingetragen. Doppelte Einträge könnten zu Problemen führen. Danach Konsole öffnen und sudo nixos-rebuild switch oder, das bereits hinterlegte Alias, switch ausführen.
Hinweis zu Update und Wartung des Systems:
Die Einstellung dazu habe ich in der /etc/nixos/auto-upgrade.nix hinterlegt.
Automatische Updates jeden Montag, oder an nächsten Tag wenn das Gerät hochgefahren wird.
Automatische Systembereinigung (löscht Generation älter als 30 Tage) jeden Montag, oder an nächsten Tag wenn das Gerät hochgefahren wird.
Automatische Store-Optimierung jeden Montag, oder an nächsten Tag wenn das Gerät hochgefahren wird.
Größe der Journal-Logs begrenzen auf 200 MiB.
Diese Konfiguration können Sie nach Ihren Bedürfnissen anpassen.
Natürlich kann alternativ mit dem Konsolenbefehl update jederzeit ein Update, und mit dem Konsolenbefehl gc jederzeit eine Bereinigung durchgeführt werden.
Hinweis zu Installation, Update und Wartung von Flatpaks:
Zuständig dafür ist die /etc/nixos/flatpaks.nix.
Die Flatpaks werden hierbei deklarativ installiert. Das bedeutet, nur Flatpaks welche eingetragen sind, sind auch dauerhaft installiert.
Man kann natürlich weiterhin Flatpaks mit Discover installieren. Beim nächsten System-Update sind diese dann aber wieder weg.
Also, alle Flatpaks die man haben möchte werden in die /etc/nixos/flatpaks.nix reingeschrieben.
Update und Bereinigung der Flatpaks wird automatisch mit dem System-Update durchgeführt.
Wer stattdessen Flatpaks weiterhin manuell installieren möchte, kann das mit der /etc/nixos/flatpak.nix tun.
Dazu die /etc/nixos/configuration.nix öffnen das # vor ./flatpak.nix entfernen und dafür ein # vor flatpaks.nix setzen.
Danach den Konsolenbefehl switch oder sudo nixos-rebuild switch ausführen.
flatpak.nix → Sorgt für Flatpak-Updates (täglich) und Bereinigung verwaister Pakete (wöchentlich).
flatpaks.nix → Ist deklarativ und sorgt für Updates und Bereinigung mit dem System-Update.
Hier sind noch weitere Skripte zur nachträglichen Konfiguration von Mounts, Samba und Shares:
Laufwerk (HDD/SSD) dauerhaft mounten:
Ausführen mit Konsolenbefehl: mnt
Das dafür zuständige Skript ist: ~/scripts/mount-disk.sh
Dabei wird von Ihnen die UUID des Laufwerks (wird angezeigt und kann kopiert werden), das Dateisystem (wird angezeigt) und der Einhängepunkt abgefragt.
Der Einhängepunkt ist ein Ordner (wird automatisch erstellt) im Verzeichnis /mnt, z.B. Daten
Der Eintrag für /etc/nixos/mount-disk.nix wird generiert und hinzugefügt, und das Laufwerk ist sofort zugriffsbereit.
Dieses Skript kann mehrfach ausgeführt werden. Jedes Mal wird ein weiteres Laufwerk gemountet.
CIFS-Netzwerkfreigabe dauerhaft mounten:
Ausführen mit Konsolenbefehl: mnt
Das dafür zuständige Skript ist: ~/scripts/mount-share.sh
Dabei wird von Ihnen der Benutzernamen, das Passwort, der Pfad zur Netzwerkfreigabe und der Einhängepunkt abgefragt.
Pfad zur Netzwerkfreigabe kann z.B. so aussehen: //192.168.16.100/Freigabe
Der Einhängepunkt ist ein Ordner (wird automatisch erstellt) im Verzeichnis /mnt, z.B. NAS-Daten
Benutzernamen und Passwort werden in der Datei /etc/nixos/.credentials (chmod 600) hinterlegt.
Der Eintrag für /etc/nixos/mount-share.nix wird generiert und hinzugefügt, und das Netzlaufwerk ist sofort zugriffsbereit.
Dieses Skript kann mehrfach ausgeführt werden. Jedes Mal wird ein weiteres Netzlaufwerk gemountet.
Ordner im Netzwerk freigeben:
Für den Fall das die Samba-Installation bei nixinstall.sh übersprungen wurde!
Ausführen mit Konsolenbefehl: smb
Dies ist erforderlich um Netzwerkfreigaben erstellen zu können!
Die Konfiguration wird bei der Installation in der /etc/nixos/samba.nix hinterlegt.
Netzwerkfreigabe auf einer Disk erstellen:
Ausführen mit Konsolenbefehl: share
Das dafür zuständige Skript ist: ~/scripts/share-disk.sh
Dabei wird von Ihnen der Einhängepunkt, der Freigabeordner und der Freigabename abgefragt.
Der Einhängepunkt (wird angezeigt) lautet z.B. /mnt/Daten
Als Freigabeordner (Ordner wird automatisch erstellt) könnte man nehmen z.B. Nix-Daten
Der Freigabename ist der Name welcher im Netzwerk angezeigt wird (kann auch ident mit Freigabeordner sein).
Der Eintrag für /etc/nixos/share-disk.nix wird generiert und hinzugefügt, und die Freigabe ist sofort erreichbar.
Auf die Netzwerkfreigabe hat ausschließlich der erstellte Samba-Benutzer Zugriff.
Dieses Skript kann mehrfach ausgeführt werden. Jedes Mal wird eine weitere Netzwerkfreigabe erstellt.
Netzwerkfreigabe im Persönlichen Ordner erstellen:
Ausführen mit Konsolenbefehl: share
Das dafür zuständige Skript ist: ~/scripts/share-home.sh
Dabei wird von Ihnen der Freigabeordner und der Freigabename abgefragt.
Der Freigabeordner (wird automatisch erstellt) im Persönlichen Ordner könnte sein, z.B. Öffentlich
Der Freigabename ist der Name welchen andere Geräte im Netzwerk sehen, z.B. Freigabe
Der Eintrag für /etc/nixos/share-home.nix wird generiert und hinzugefügt, und die Freigabe ist sofort erreichbar.
Auf die Netzwerkfreigabe hat ausschließlich der erstellte Samba-Benutzer Zugriff.
Dieses Skript kann mehrfach ausgeführt werden. Jedes Mal wird eine weitere Netzwerkfreigabe erstellt.
WICHTIG:
NixOS ist kein Rolling Release wie Arch Linux, sondern es kommt alle 6 Monate eine neue Version heraus. Dies geschieht üblicherweise Ende Mai und Ende November. Der Wechsel zum neuen Release muss manuell vorgenommen werden. Dies sollte innerhalb eines Monats gemacht werden. Danach gibt’s keine Updates mehr. Und das geht so:
Hier sehen Sie den aktuellen Channel:
https://search.nixos.org/packages
Wechsel durchführen mit Konsolenbefehl: channel
Oder manuell mit folgenden Befehlen:
Aktuell verwendeten Kanal der NixOS-Installation anzeigen lassen:
sudo nix-channel --list | grep nixos
Wenn eine neue Version verfügbar ist, wechseln Sie den Kanal mit z.B.:
sudo nix-channel --add https://channels.nixos.org/nixos-26.11 nixos
Und danach das Upgrade durchführen mit:
sudo nixos-rebuild switch --upgrade
So, das war's auch schon.
Anmerkungen und/oder Verbesserungsvorschläge gerne an linux@austriahosting.com senden.