Files
nixos/README.md
2026-01-02 20:43:09 +01:00

156 lines
4.9 KiB
Markdown

> [!CAUTION]
> ### ⚠️ Wichtige Hinweise zur Bootfähigkeit
>
>
> **zwingend manuell anpassen**
> * **Hardware-Konfiguration.nix**: Die Datei `hardware-configuration.nix` muss für jedes Gerät individuell generiert werden. (Generierte vom System nehmen)
> * **Hibernation.nix**: Die Werte für `boot.resumeDevice` (UUID) und `resume_offset` in der `modules/hibernation.nix` sind physikalisch an die aktuelle Festplatte gebunden. (erstmal auskommentieren in configuration.nix dann anpassen)
> * **nvidia.nix**: Muss angepasst je nach GPU
> * **boot.nix**: nutzt drm nvidia treiber muss ausgetauscht werden initdr anpassen ob amd oder nvidia!
> * **Virtualisierung.nix**: Die USB-IDs für die Kinesis-Tastatur und Keychron-Maus in der `modules/virtualization.nix` funktionieren nur mit diesen spezifischen Geräten. (erstmal egal)
>
>
# ███╗ ██╗██╗██╗ ██╗ ██████╗ ███████╗
# ████╗ ██║██║╚██╗██╔╝██╔═══██╗██╔════╝
# ██╔██╗ ██║██║ ╚███╔╝ ██║ ██║███████╗
# ██║╚██╗██║██║ ██╔██╗ ██║ ██║╚════██║
# ██║ ╚████║██║██╔╝ ██╗╚██████╔╝███████║
# ╚═╝ ╚═══╝╚═╝╚═╝ ╚═╝ ╚═════╝ ╚══════╝
# ❄️ Nils' Modular NixOS Config
<p align="center">
<img src="./cosmic_desktop.png" width="450" alt="Desktop View">
<img src="./cosmic_terminal.png" width="450" alt="Terminal View">
<img src="./owl_desktop.png" width="450" alt="Desktop View">
<img src="./owl_terminal.png" width="450" alt="Terminal View">
</p>
---
## TODO
* [ ] Waybar reload Tray spawn beheben
* [ ] swaync dynamisch reloading
## Struktur
Die Konfiguration ist in logische Module unterteilt, um die Wartung und Übertragbarkeit zu erleichtern:
**`configuration.nix`**: Zentraler Einstiegspunkt für das System.
**`modules/`**: Systemweite Konfigurationen (Boot, NVIDIA, Virtualisierung, Hibernation).
**`home/`**: Benutzerspezifische Konfigurationen via Home-Manager (Hyprland, Waybar, App-Configs).
**`icons-wallpapers/`**: Icons, Wallpapers und System-Assets.
**`templates/`**: Vorlagen für die dynamische Farberzeugung mit Matugen.
---
## Installation & Setup
### 1. Repository klonen
```bash
git clone https://github.com/DEIN_USERNAME/nixos-config.git ~/nixos
cd ~/nixos
```
### 2. Symlink erstellen
NixOS erwartet seine Konfiguration standardmäßig unter `/etc/nixos`. Wir verlinken unser lokales Verzeichnis dorthin:
```bash
sudo ln -s /home/nils/nixos /etc/nixos
```
### 3. Konfiguration anwenden
Verwende für normale Änderungen `switch`. Wenn du jedoch **Kernel-Parameter** (wie für Hibernate) oder den **Bootloader** änderst, ist der `boot`-Befehl sicherer:
```bash
# Empfohlen nach Änderungen an der hibernation.nix oder boot.nix:
sudo nixos-rebuild boot --flake .#nixos
```
---
## Updates & Wartung
Um die externen Programme und das Basissystem (nixpkgs) auf den neuesten Stand zu bringen, müssen die Flake-Inputs aktualisiert werden:
1. **Inputs aktualisieren**:
```bash
nix flake update
```
Dieser Befehl prüft alle Quellen in der `flake.nix` auf Aktualisierungen und schreibt die neuen Versionen in die `flake.lock`.
2. **Änderung registrieren**:
```bash
git add flake.lock
```
3. **System aktualisieren**:
```bash
sudo nixos-rebuild switch --flake .#nixos
```
---
## Workflow
Wenn du Änderungen vornimmst, folge immer diesem Ablauf:
1. **Dateien bearbeiten** (in `/home/nils/nixos`).
2. **Änderungen registrieren**: `git add .` (Ohne diesen Schritt findet NixOS neue Dateien oder Änderungen in Flakes nicht!).
3. **Anwenden**:
* `sudo nixos-rebuild switch --flake .#nixos` (für sofortige Änderungen).
* `sudo nixos-rebuild boot --flake .#nixos` (schreibt den Boot-Eintrag für den nächsten Neustart).
---
### Was wurde ergänzt?
* **Pfad-Klarheit**: Es wird explizit auf `/home/nils/nixos` hingewiesen.
* **Git-Pflicht**: Der Hinweis auf `git init` und die Notwendigkeit von `git add` für Flakes ist jetzt prominenter.
* **Boot-Befehl**: Die Unterscheidung zwischen `switch` und `boot` wurde hinzugefügt, da du für das Hibernation-Setup zwingend den `boot`-Parameter benötigst, um die Kernel-Parameter (`resume_offset`) im Bootloader zu registrieren.
Soll ich noch einen Abschnitt hinzufügen, wie man überprüft, ob der Symlink korrekt gesetzt wurde?
### 3. Hardware-Konfiguration
Die `hardware-configuration.nix` ist spezifisch für jedes Gerät. Sie wird automatisch generiert und sollte im Hauptverzeichnis bleiben.
* Die Datei wird beim ersten Setup automatisch eingebunden.
* **Wichtig:** Falls du das System auf neuer Hardware aufsetzt, generiere sie mit `nixos-generate-config` neu.
### 4. Konfiguration anwenden
```bash
sudo nixos-rebuild switch --flake .#nixos
```