# ᎾᎷᎬᏒᎾᏁ **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 /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