NixOS
Befehle
Apps suchen unter https://search.nixos.org/packages
| nix-shell -p bitwarden | zum installieren von Bitwarden |
| nix-env --install bitwarden | installiert Bitwarden im System permanent |
| sudo nixos-rebuild switch --upgrade | Update des Systems |
| sudo nixos-rebuild switch --rollback | Vorherigen Stand wiederherstellen. |
Programme Dauerhaft installieren
sudo nano /etc/nixos/configuration.nix
Füge das Programm hinzu
environment.systemPackages = with pkgs; {
htop
# andere Pakete hier hinzufügen
}
Aktualisiere die NixOs-Konfiguration
sudo nixos-rebuild switch
Nix Konfiguration im Homeordner
mkdir ~/nixos
sudo cp -r /etc/nixos/* ~/nixos/
kopiert die einstellungen in den Homeordner. Der kann leichter gesichert werden.
Git erstellen
cd ~/nixos
git init
git add .
git commit -m "Erster Stand"
2. Online-Repo erstellen (GitHub, GitLab, Gitea, Codeberg …)
3. Verknüpfen:
git remote add origin <URL>
git push -u origin main
Ab jetzt sicherst du Änderungen mit:
git add .
git commit -m "Update"
git push
⭐ Weg 2: Backup auf USB-Stick
git clone ~/nixos /media/usb/nixos-backup
⭐ Weg 3: Backup in einer Cloud (OneDrive, Dropbox, Nextcloud)
Den ganzen Ordner ~/nixos einfach in einen Sync‑Ordner legen:
mv ~/nixos ~/OneDrive/nixos
→ Git + Cloud = doppelte Sicherheit.
🔁 Wie stelle ich das System später wieder her?
Neue Maschine? Festplatte neu?
Du installierst NixOS minimal und machst danach:
git clone <repo-url> ~/nixos
cd ~/nixos
sudo nixos-rebuild switch --flake .
💥 Boom — dein ganzes System ist zurück.
🛡️ Was passiert mit deinen eigenen Skripten?
Wenn du deine eigenen Skripte in dein Git‑Repo legst, z. B.:
~/nixos/scripts/meinskript.sh
und in der Nix‑Konfiguration referenzierst:
- werden sie im Repo versioniert
- beim Rebuild in den Nix Store kopiert
- bei Neuinstallation automatisch wiederhergestellt
Damit ist das Problem „/home/hermann/bin existiert nicht“ sauber gelöst.
Du kannst deinen Konfigurationsordner z. B. so anlegen:
~/Nextcloud/nixos/
Und dann:
cd ~/Nextcloud/nixos
git init
git add .
git commit -m "Initial commit"
✔️ Wiederherstellung extrem einfach
Neue Maschine oder Neuinstallation?
cd ~/Nextcloud/nixos
sudo nixos-rebuild switch --flake .
⭐ Git + Nextcloud = doppelte Sicherheit
Der beste Setup ist:
-
Ordner in Nextcloud:
~/Nextcloud/nixos -
Git‑Repo in diesem Ordner:
cd ~/Nextcloud/nixos git init
⭐ Wichtiges Detail:
Du solltest den Ordner nicht gleichzeitig in /etc/nixos haben
Stattdessen:
-
Arbeite und speichere in:
~/Nextcloud/nixos -
Und verknüpfe
/etc/nixosmit deinem Ordner
z. B. via Symlink:
sudo rm -r /etc/nixos
sudo ln -s ~/Nextcloud/nixos /etc/nixos
Dann ist /etc/nixos nur ein Zeiger – und du bearbeitest alles dort, wo Nextcloud es sichert.
Nixpaket selber machen
{ stdenv }:
stdenv.mkDerivation {
name = "hello";
src = ./hello.sh;
installPhase = ''
mkdir -p $out/bin
cp $src $out/bin/hello
'';
}
Ein Skript selber einbinden über Flake
environment.systemPackages = [ self.packages.${system}.meinProgramm ];
Flakes
{
description = "Meine NixOS-Konfiguration";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
};
outputs = { self, nixpkgs }: {
packages.x86_64-linux.defaultPackage =
nixpkgs.legacyPackages.x86_64-linux.hello;
};
}
Konfiguration von einstellungen
über den Home-Manger
programs.bash.enable = true;
programs.bash.shellAliases = {
ll = "ls -la";
};
programs.bash.initExtra = ''
export EDITOR=nvim
'';
Ja, Hermann — du kannst die Fish‑Shell absolut mit Home Manager verwenden und das funktioniert sogar sehr komfortabel, viel besser als manuelles Dotfile‑Gebastel.
Ich zeige dir genau:
- ✔️ ob es geht (JA)
- ✔️ wie du Fish aktivierst
- ✔️ wie du deine eigene Konfiguration einbringst
- ✔️ wie du Plugins und Aliases verwaltest
- ✔️ warum Home Manager das perfekt unterstützt
⭐ Ja, Home Manager unterstützt die Fish‑Shell vollständig
Home Manager hat ein eigenes Modul:
programs.fish.enable = true;
Damit erzeugt Home Manager automatisch:
- deine
config.fish - dein Fish‑Init‑Skript
- deine Aliases
- deine Funktionen
- deine Plugins (über
oh-my-fishoder Fisher)
Du musst nicht mehr manuell in ~/.config/fish/config.fish arbeiten.
🧩 Beispiel: Fish in Home Manager aktivieren
In deiner Home‑Manager‑Config (z. B. home/hermann.nix):
Damit erledigt Home Manager:
- Shell aktivieren
- Konfiguration erzeugen
- Aliases setzen
- Init‑Code einfügen
⭐ Fish als Standardshell setzen
Zusätzlich in NixOS selbst:
users.users.hermann.shell = pkgs.fish;
Dann ist Fish auch beim Login (TTY oder GUI) aktiv.
🎣 Fish Plugins einbinden
Du kannst direkt Plugins definieren:
Oder mit Fisher:
Home Manager installiert alles sauber und reproduzierbar.
⭐ Eigene Konfiguration einfügen
Wenn du eigene Fish‑Funktionen oder eigene Konfigdateien hast:
Variante A — Inline-Konfiguration:
Variante B — ganze Dateien einbinden:
Home Manager legt diese Dateien automatisch an.
⭐ Warum Fish + Home Manager so gut zusammenpassen
- Keine Dotfiles mehr kopieren
- Keine Konflikte mehr
- Identische Shell überall (Laptop, PC, Server)
- Rollbacks funktionieren
- Plugins sauber versioniert
- Backups über Git + Nextcloud automatisch gesichert
Viele NixOS‑User nutzen Fish genau wegen Home Manager, weil das Zusammenspiel perfekt ist.
❗ Wichtiger Hinweis
Wenn Home Manager aktiv ist, solltest du niemals die Datei:
~/.config/fish/config.fish
manuell bearbeiten.
Home Manager überschreibt sie bei jedem „Rebuild“.
Alle Änderungen gehören in die Home‑Manager‑Config.
❓ Kontrollfrage
Wenn du Fish über Home Manager aktivierst — wo sollten deine Aliases, Plugins und Konfigurationen gespeichert werden?
a) Direkt in ~/.config/fish/config.fish
b) In der Home‑Manager‑Konfiguration (home/hermann.nix)
c) In /etc/nixos/configuration.nix
d) In /home/hermann/bin
Welcher Buchstabe ist richtig?