Initial commit: Omeron modular Hyprland setup framework

- Modular installer with gum-based TUI
- Fresh-install detection with auto GPU driver selection
- Preflight module for system detection (Intel/AMD/NVIDIA)
- Core modules: packages, dotfiles, services, SDDM
- Optional software installer (Obsidian, Neovim, VS Code, etc.)
- Homelab config module with dynamic AGS integration
- Two complete themes: Forest Neon and Rose Night
- 19 Hyprland control scripts + 4 AGS widgets
- Idempotent dotfile deployment with automatic backup
- YAML-based configuration, extensible module system
- Full logging to ~/.local/share/omeron/
This commit is contained in:
2026-05-27 20:51:58 +02:00
commit be7bffc1e5
86 changed files with 9984 additions and 0 deletions

52
modules/core/services.sh Executable file
View File

@@ -0,0 +1,52 @@
#!/usr/bin/env bash
module_description() {
printf "System Services - enable and start NetworkManager and Bluetooth\n"
}
module_required() { return 0; }
module_should_skip() {
have systemctl || return 0
return 1
}
module_prereqs() {
require systemctl systemd
}
module_main() {
log_section "System Services"
local services=("NetworkManager.service" "bluetooth.service")
if [[ -f "$OMERON_PROJECT_DIR/config/omeron.yaml" ]] && command -v python3 >/dev/null 2>&1; then
local raw_services
raw_services="$(python3 -c "
import yaml
with open('$OMERON_PROJECT_DIR/config/omeron.yaml') as f:
data = yaml.safe_load(f)
svcs = data.get('services', [])
print(' '.join(svcs))
" 2>/dev/null)"
if [[ -n "$raw_services" ]]; then
read -ra services <<< "$raw_services"
for i in "${!services[@]}"; do
if ! [[ "${services[$i]}" == *".service" ]]; then
services[$i]="${services[$i]}.service"
fi
done
fi
fi
for svc in "${services[@]}"; do
log_info "Enabling $svc..."
if sudo_run systemctl enable --now "$svc" >/dev/null 2>&1; then
log_success "$svc enabled and started"
else
log_warn "Failed to enable $svc (may already be running)"
fi
done
log_success "Services configured"
}