# ᎾᎷᎬᏒᎾᏁ

**Modular System Setup Framework** für Arch/Hyprland

Omeron ist ein modulares, interaktives Setup-Framework, das Dotfiles-Konsolidierung,
Paketverwaltung und Systemkonfiguration in einem sauberen, wartbaren Projekt vereint.

---

## Features

- **Fresh-Install Detection** — Erkennt automatisch ein neues System und installiert Hyprland, GPU-Treiber + alle Dependencies
- **GPU-Erkennung** — Intel/AMD/NVIDIA via PCI Vendor-ID, installiert passende Treiber
- **Modularer Installer** — Jede Komponente ist ein eigenständiges Modul
- **Interaktive TUI** — Basierend auf `gum`, mit fallback auf einfaches CLI
- **Idempotent** — Beliebig oft ausführbar, Backup vor jeder Änderung
- **Dotfiles-Management** — Automatische Sicherung und Deployment
- **Homelab-Integration** — Unraid-Server-Konfiguration für das AGS Control Center
- **Theme-Engine** — Zwei vollständige Themes (Forest Neon, Rose Night)
- **Optionale Software** — Interaktive Auswahl via TUI
- **Logging** — Alle Schritte werden protokolliert
- **Erweiterbar** — Einfaches Plugin-System für eigene Module

---

## Projektstruktur

```
Omeron/
├── install.sh                # Main Installer (Einstiegspunkt)
├── README.md
├── config/
│   ├── omeron.yaml           # Installer-Konfiguration
│   └── homelab.yaml          # Homelab Standard-Konfiguration
├── lib/
│   ├── log.sh                # Logging-Framework
│   ├── tui.sh                # TUI-Wrapper (gum/basic)
│   ├── config.sh             # YAML/Shell-Konfiguration
│   ├── utils.sh              # Utility-Funktionen
│   └── modules.sh            # Modul-Manager
├── modules/
│   ├── core/                 # Core-Module (obligatorisch)
│   │   ├── preflight.sh      # System-Detection (GPU, Fresh-Install, AUR-Helper)
│   │   ├── packages.sh       # System-Pakete inkl. GPU-Treiber installieren
│   │   ├── dotfiles.sh       # Dotfiles deployen
│   │   ├── services.sh       # Systemd-Services aktivieren
│   │   └── sddm.sh           # SDDM-Theme installieren
│   ├── optional/
│   │   ├── install.sh        # Optionale Software-Auswahl
│   │   └── packages/         # Einzelpaket-Installer
│   ├── homelab/
│   │   └── setup.sh          # Homelab-Konfiguration
│   └── post/
│       └── apply-theme.sh    # Theme nach Installation anwenden
├── dotfiles/                 # Konsolidierte Dotfiles
│   ├── hypr/                 # Hyprland + AGS Widgets
│   ├── waybar/               # Waybar Status Bar
│   ├── wofi/                 # Application Launcher
│   ├── swaync/               # Notification Center
│   ├── kitty/                # Terminal
│   ├── gtk-3.0/              # GTK3-Theme
│   ├── gtk-4.0/              # GTK4-Theme
│   ├── qt5ct/                # Qt5-Theme
│   ├── qt6ct/                # Qt6-Theme
│   ├── starship.toml         # Shell Prompt
│   └── wallpapers/           # Mitgelieferte Wallpaper
└── templates/
    └── homelab/              # Config-Templates
```

---

## Installation

### Voraussetzungen

- **Arch Linux / CachyOS** (oder andere Arch-Derivate)
- `bash` >= 4.0
- `gum` (optional, aber empfohlen) — `sudo pacman -S gum`
- `git`

### Schnellstart

```bash
git clone <your-repo-url>/Omeron.git
cd Omeron
./install.sh
```

### Optionen

### Autodetect (Fresh Install)

Wird `./install.sh` auf einem frischen Arch-System ohne Hyprland ausgeführt, erkennt der Installer dies automatisch und installiert:

- **Hyprland** + alle Komponenten (Hyprlock, Hyprpaper, Hypridle)
- **GPU-Treiber** (Intel/AMD/NVIDIA automatisch erkannt)
- **Audio** (PipeWire + WirePlumber)
- **Netzwerk** (NetworkManager + Bluetooth)
- **Fonts & Themes** (Nerd Fonts, Papirus Icons)
- **Dotfiles** inkl. Theme und Services

Ohne `--fresh` und ohne `--modules` startet der interaktive Modus mit Step-by-Step Auswahl.

### Optionen

| Flag | Beschreibung |
|------|-------------|
| `--fresh` | Full System Setup (Hyprland + GPU + alle Dependencies) |
| `--modules m1,m2` | Nur bestimmte Module ausführen |
| `--skip m1,m2` | Bestimmte Module überspringen |
| `--skip-packages` | Paketinstallation überspringen |
| `--with-sddm` | SDDM-Theme inkludieren |
| `--list-modules` | Verfügbare Module anzeigen |
| `--help` | Hilfe anzeigen |

### Beispiele

```bash
# Automatisch: erkennt Fresh-Install oder interaktiv
./install.sh

# Fresh Install auf neuem System (oder forcieren)
./install.sh --fresh

# Nur Dotfiles und Theme deployen
./install.sh --modules core/dotfiles,post/apply-theme

# Komplette Installation ohne Pakete
./install.sh --skip-packages

# Mit SDDM-Theme
./install.sh --with-sddm
```

---

## Module Erstellen

Jedes Modul ist eine Bash-Datei in `modules/` mit folgenden Funktionen:

```bash
#!/usr/bin/env bash

module_description() { printf "My Module - does something\n"; }
module_required()     { return 1; }   # 0 = immer ausführen
module_should_skip()  { return 1; }   # 0 = überspringen
module_prereqs()      { require mycmd mypackage; }

module_main() {
  log_section "My Module"
  # Your code here
}
```

---

## Homelab-Konfiguration

Der Installer fragt beim Homelab-Modul ab:

- **Server-Adresse** (IP oder Domain)
- **SSH-Benutzername**

Gespeichert in `~/.config/homelab/config.yaml`:

```yaml
server:
  address: "192.168.1.100"
  username: "root"
  port: 22
```

---

## Themes

| Theme | Akzent | Hintergrund | Wallpaper |
|-------|--------|-------------|-----------|
| **Forest Neon** | `#00ff9c` (grün) | `#14141e` | `forest.jpg` |
| **Rose Night** | `#f38ba8` (pink) | `#18141f` | `rose-pink.jpg` |

Theme-Wechsel via:

```bash
~/.config/hypr/Scripts/theme-menu.sh
```

---

## Verzeichnis-Layout

| Pfad | Zweck |
|------|-------|
| `Omeron/.gitignore` | Git-Ignore-Regeln |
| `Omeron/install.sh` | Main Installer (Einstiegspunkt) |
| `Omeron/config/omeron.yaml` | Installer-Konfiguration |
| `Omeron/lib/` | Framework-Bibliotheken (Log, TUI, Config, Utils, Module) |
| `Omeron/modules/core/` | Core-Module (Preflight, Packages, Dotfiles, Services, SDDM) |
| `Omeron/modules/optional/` | Optionale Software-Auswahl |
| `Omeron/modules/homelab/` | Homelab-Konfiguration |
| `Omeron/dotfiles/` | Alle Konfigurationsdateien |
| `~/.config/hypr/` | Hyprland-Konfiguration + Scripts |
| `~/.config/hypr/Scripts/` | Alle Steuerungsskripte (19 Stück) |
| `~/.config/hypr/ags/` | AGS Widgets (Panel, Switcher, Package Manager, Homelab) |
| `~/.config/hypr/Themes/` | Theme-Definitionen |
| `~/.config/waybar/` | Status Bar |
| `~/.config/wofi/` | Application Launcher |
| `~/.config/swaync/` | Notification Center |
| `~/.config/starship.toml` | Shell Prompt |
| `~/.dotfiles-backup/` | Automatische Backups |
| `~/.config/homelab/config.yaml` | Homelab-Server-Konfiguration |
| `~/.local/share/omeron/` | Installer-Logs |

---

## Lizenz

MIT
