Meine NixOS Konfiguration mit Installationsanleitung

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.

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 → Fesplatte Löschen
              → Swap ohne Ruhezustand
              → ext4
System nicht verschlüsseln!
Installieren
 →  →  →  →  →  →  →  →  →  →  →  →  →  →  →  →  →  →  →  →  →  →  →  →  →  →
Bevor das NixOS-Post-Installations-Skript ausgeführt werden kann:
Die Datei /etc/nixos/configuration.nix mit Kate öffnen.
Unterhalb der Zeile environment.systemPackages = with pkgs; [
Das # vor wget entfernen.
Die /etc/nixos/configuration.nix speichern
Konsole öffnen und folgenden Befehl ausführen:
  sudo nixos-rebuild switch

Nun ist wget, welches für den Skript-Download benötigt wird, installiert.
Mit folgender Befehlszeile das NixOS-Post-Installations-Skript herunterladen und ausführen:
Stand: 24.08.2026
  wget -nd https://austriahosting.com/downloads/.nixos/nixos.sh -P ~/nixos && sh nixos/nixos.sh
Um es nur herunterzuladen ohne es gleich auszuführen:
  wwget -nd https://austriahosting.com/downloads/.nixos/nixos.sh -P ~/nixos
Danach startet man es mit:
  sh nixos/nixos.sh

Hierbei werden noch weitere Skripte heruntergeladen und im Ordner ~/scripts/ abgelegt.
nixinstall.sh, colors.sh, gc.sh, timer.sh, fix-icons.sh, check-flatpaks.sh
nixinstall.sh erledigt die Post-Installation und Konfiguration von NixOS.
colors.sh dient nur zur Verbesserung der Darstellung.
Die andern vier 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 Nix-Pakete, und hält das System sauber.
  • lg         → Listet die aktuell verfügbaren Generationen auf.
  • gc        → Bereinigt das System. Löscht Benutzer-Profile, Generationen, Journal-Logs älter als 7 Tage
  • 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 open-vm-tools kdePackages.filelight kdePackages.kfind kdePackages.kalk kdePackages.isoimagewriter nil usbimager fastfetch ffmpeg-full btop eza duf pika-backup

ZSH inkl. powerlevel10k wird installiert und konfiguriert.

Office-Software: libreoffice-qt-fresh hunspell hunspellDicts.de_AT hyphen hyphenDicts.de_AT pdfarranger

Internet-Anwendungen: firefox (vorkonfiguriert) thunderbird chromium (etwas vorkonfiguriert) filezilla
Via Fatpak: app.zen_browser.zen

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 kdePackages.kdenlive
Via Fatpak: org.shotcut.Shotcut io.github.aandrew_me.ytdn com.github.unrud.VideoDownloader

Fernwartungs-Software: anydesk rustdesk-flutter

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).

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.
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 können schon während der Installation (oder auch danach) die /etc/nixos/configuration.nix und die /etc/nixos/configuration.nix.bkp (Sicherungsdatei) öffnen, und Ihre "timeZone" und "defaultLocale" in die /etc/nixos/configuration.nix zurück kopieren. Aber bitte nichts Weiteres von der Sicherungsdatei kopieren. Denn alle weiteren Konfigurationen sind in der /etc/nixos/default-settings.nix eingetragen. Doppelte Einträge könnten zu Problemen fü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 das # vor flatpaks.nix setzen.
Danach den Konsolenbefehl "switch" oder "sudo nixos-rebuild switch" ausführen.
flatpak.nix  → Sorg 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 Skripts zur nachträglichen Konfiguration von Mounts, Samba und Shares:

Laufwerk (HDD/SSD) dauerhaft mounten: Ausführen mit ./scripts/mount-disk.sh oder sh 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 ./scripts/mount-share.sh oder sh 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 nur dann mehrfach ausgeführt werden, wenn die in der Datei /etc/nixos/.credentials bereits hinterlegten Zugangsdaten ident sind mit den Zugangsdaten des neu einzubindenden Netzlaufwerks. Ansonst werden die Zugangsdaten für die bereits zuvor eingehängte Netzwerkfreigabe überschrieben. Alternativ können Sie vorher dieses Skript bearbeiten und .credentials in z.B. .credentials2 umbenennen.
Wichtig sind folgende Zeilen wo .credentials vorkommt und geändert werden sollte:
Zeile 34: sudo touch /etc/nixos/.credentials
Zeile 35: echo "username=$usr" | sudo tee -a /etc/nixos/.credentials
Zeile 36: echo "password=$pwd" | sudo tee -a /etc/nixos/.credentials
Zeile 37: sudo chmod 600 /etc/nixos/.credentials
Zeile 47: echo "      'credentials=/etc/nixos/.credentials'" | sudo tee -a /etc/nixos/mount-share.nix
Zeile 66: sudo cat /etc/nixos/.credentials


Nur für den Fall das folgender Punk bei nixinstall.sh übersprungen wurde!
Samba-Service installieren und Samba-Benutzer erstellen:
 Ausführen mit ./scripts/samba.sh oder sh scripts/samba.sh
Das muss gemacht werden bevor Netzwerkfreigaben erstellt werden!


Netzwerkfreigabe auf einer Disk einrichten: Ausführen mit ./scripts/share-disk.sh oder sh scripts/share-disk.sh
Dabei wird von Ihnen der Einhängepunkt und der Freigabeordner abgefragt.
Der Einhängepunkt (wird angezeigt) lautet z.B. /mnt/Daten
Als Freigabename (Ordner wird automatisch erstellt) könnte man nehmen z.B. Nix-Daten
Der Eintrag für /etc/nixos/share-disk.nix wird generiert und hinzugefügt, und die Freigabe ist sofort erreichbar.

Dieses Skript kann mehrfach ausgeführt werden. Jedes Mal wird eine weitere Netzwerkfreigabe erstellt.

Netzwerkfreigabe im Persönlichen Ordner einrichten: Ausführen mit ./scripts/share-home.sh oder sh 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.

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

Aktuell installierte Version anzeigen lassen:
  sudo nix-channel --list | grep nixos

Wenn eine neue Version verfügbar ist, wechseln Sie den Channel 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.