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

74
modules/optional/install.sh Executable file
View File

@@ -0,0 +1,74 @@
#!/usr/bin/env bash
module_description() {
printf "Optional Software - select and install additional packages\n"
}
module_required() { return 1; }
module_should_skip() { return 1; }
module_prereqs() {
return 0
}
module_main() {
log_section "Optional Software Selection"
tui_format "#{bold}Select software to install:#{normal}"
tui_format "Use space to select, enter to confirm."
tui_format ""
local choices
choices="$(
gum choose --no-limit \
--header "Select optional packages (space to toggle, enter to confirm)" \
"Obsidian" \
"Neovim" \
"Visual Studio Code" \
"Spotify" \
"Brave Browser" \
"Chromium" \
"VLC" \
"PipeWire Tools" \
"Docker" \
"Blender" 2>&1
)"
if [[ -z "$choices" ]]; then
log_info "No optional software selected"
return 0
fi
log_info "Selected: $(printf '%s' "$choices" | tr '\n' ' ')"
while IFS= read -r selection; do
[[ -z "$selection" ]] && continue
local module_script="$OMERON_PROJECT_DIR/modules/optional/packages/$(echo "$selection" | tr '[:upper:]' '[:lower:]' | tr ' ' '-').sh"
if [[ -f "$module_script" ]]; then
log_info "Running installer for: $selection"
module_run "$module_script"
else
log_warn "No installer found for: $selection"
local pkg_name="${selection,,}"
pkg_name="${pkg_name// /-}"
install_standard_package "$selection" "$pkg_name"
fi
done <<< "$choices"
log_success "Optional software installation complete"
}
install_standard_package() {
local display_name="$1"
local pkg_name="$2"
if tui_confirm "Install $display_name (searching pacman)?"; then
if pacman -Si "$pkg_name" >/dev/null 2>&1; then
install_pacman "$pkg_name"
log_success "$display_name installed"
else
log_info "$pkg_name not in pacman, trying AUR..."
install_aur "$pkg_name" 2>/dev/null || log_warn "Could not install $display_name"
fi
fi
}