No description
- Nix 100%
| configuration.nix | ||
| flake.lock | ||
| flake.nix | ||
| hardware-configuration.nix | ||
| home.nix | ||
| packages.nix | ||
| README.md | ||
NixOS Konfiguration
Deklarative NixOS-Systemkonfiguration mit Flakes und Home-Manager.
Zielumgebung: Proxmox VM (später erweiterbar auf Bare-Metal mit Nvidia Optimus).
Dateistruktur
/etc/nixos/
├── flake.nix # Einstiegspunkt – Inputs (nixpkgs, home-manager) und Outputs
├── flake.lock # Lockfile – pinnt exakte Versionen (automatisch generiert)
├── configuration.nix # System: Boot, Netzwerk, Desktop, Dienste, User
├── hardware-configuration.nix # Hardware-spezifisch (wird bei Installation generiert)
├── packages.nix # Alle System-Pakete – getrennt für Übersichtlichkeit
└── home.nix # User-Konfiguration via Home-Manager (Shell, Git, Tools)
Voraussetzungen
- Proxmox VE mit OVMF (UEFI) Support
- NixOS Minimal ISO (oder Netboot.xyz)
- Netzwerkzugang für Paket-Downloads
Installation (Proxmox VM)
1. VM in Proxmox erstellen
| Einstellung | Wert |
|---|---|
| OS Type | Linux 6.x |
| BIOS | OVMF (UEFI) |
| Disk | 40+ GB, VirtIO SCSI |
| RAM | 4+ GB |
| CPU | 2+ Kerne, Typ host |
| Display | VirtIO-GPU |
| Netzwerk | VirtIO, Bridge |
Nach der Installation eine EFI Disk hinzufügen (ohne Pre-Enroll Keys).
2. Ins Live-System booten
# Root-Shell starten
sudo -i
# Tastatur auf Deutsch setzen
loadkeys de
# Internetverbindung prüfen
ping -c 3 nixos.org
3. Disk partitionieren
# GPT-Partitionstabelle erstellen
parted /dev/vda -- mklabel gpt
# EFI-Partition (512 MB)
parted /dev/vda -- mkpart ESP fat32 1MiB 512MiB
parted /dev/vda -- set 1 esp on
# Root-Partition (Rest)
parted /dev/vda -- mkpart primary 512MiB 100%
4. Formatieren und mounten
# Formatieren
mkfs.fat -F32 /dev/vda1
mkfs.ext4 /dev/vda2
# Mounten
mount /dev/vda2 /mnt
mkdir -p /mnt/boot
mount /dev/vda1 /mnt/boot
5. Konfiguration erstellen
# Hardware-Konfiguration automatisch generieren
nixos-generate-config --root /mnt
# Config-Dateien anlegen/bearbeiten
nano /mnt/etc/nixos/flake.nix
nano /mnt/etc/nixos/configuration.nix
nano /mnt/etc/nixos/packages.nix
nano /mnt/etc/nixos/home.nix
6. System installieren
nixos-install --flake /mnt/etc/nixos#nixos-vm
# Root-Passwort setzen wenn gefragt
# Neustarten
reboot
7. Nach dem ersten Boot
# Passwort ändern falls nötig
passwd
# System aktualisieren
sudo nix flake update --flake /etc/nixos
sudo nixos-rebuild switch --flake /etc/nixos
Täglicher Workflow
Config ändern und anwenden
# 1. Datei bearbeiten (z.B. Paket hinzufügen)
sudo nano /etc/nixos/packages.nix
# 2. System neu bauen
rebuild
# 3. Änderungen committen und pushen
sudo git -C /etc/nixos add .
sudo git -C /etc/nixos commit -m "paket xyz hinzugefügt"
sudo git -C /etc/nixos push
Wichtige Befehle
| Befehl | Beschreibung |
|---|---|
rebuild |
System neu bauen und aktivieren |
rebuild-test |
Testen ohne permanent zu setzen (wird beim Reboot verworfen) |
update |
Flake-Inputs (nixpkgs, home-manager) aktualisieren |
garbage |
Alte Generationen und ungenutzten Store aufräumen |
Pakete verwalten
# Paket suchen
nix search nixpkgs firefox
# Paket temporär nutzen (ohne Installation)
nix-shell -p python3
# Dev-Shell starten (aus flake.nix)
nix develop
Nützliche Konzepte
Generationen
NixOS speichert bei jedem rebuild eine neue Generation. Beim Booten kannst du jederzeit eine ältere Generation auswählen – perfektes Rollback.
# Alle Generationen anzeigen
sudo nix-env --list-generations --profile /nix/var/nix/profiles/system
# Alte Generationen aufräumen
sudo nix-collect-garbage -d
Flake-Struktur
Der #nixos-vm Teil im Rebuild-Befehl referenziert den Namen in flake.nix:
nixosConfigurations.nixos-vm = nixpkgs.lib.nixosSystem { ... };
Für mehrere Rechner einfach weitere Einträge hinzufügen:
nixosConfigurations.nixos-vm = ...;
nixosConfigurations.gaming-laptop = ...;
nixosConfigurations.homeserver = ...;
Und mit --flake /etc/nixos#gaming-laptop das jeweilige System bauen.
Vorbereitung: Bare-Metal mit Nvidia
Für den Wechsel auf echte Hardware (Ryzen 5xxxH + RTX 3080 Laptop):
- Repo klonen
hardware-configuration.nixneu generieren- Nvidia-Block in
configuration.nixeinkommentieren und Bus-IDs anpassen:
# Bus-IDs finden (Dezimal, nicht Hex!)
lspci | grep -E "VGA|3D"
hardware.nvidia = {
modesetting.enable = true;
open = false;
prime = {
offload.enable = true;
offload.enableOffloadCmd = true;
amdgpuBusId = "PCI:x:x:x"; # anpassen
nvidiaBusId = "PCI:x:x:x"; # anpassen
};
};
services.xserver.videoDrivers = [ "nvidia" ];
hardware.graphics.enable = true;
hardware.graphics.enable32Bit = true;
- Gaming-Pakete in
packages.nixeinkommentieren (Steam, MangoHud, Gamemode, etc.)