156 lines
4.9 KiB
Markdown
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
|
|
|
|
```
|