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:
74
modules/optional/install.sh
Executable file
74
modules/optional/install.sh
Executable 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
|
||||
}
|
||||
18
modules/optional/packages/brave-browser.sh
Executable file
18
modules/optional/packages/brave-browser.sh
Executable file
@@ -0,0 +1,18 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
module_description() { printf "Install Brave Browser\n"; }
|
||||
module_required() { return 1; }
|
||||
module_should_skip() { return 1; }
|
||||
module_prereqs() { return 0; }
|
||||
|
||||
module_main() {
|
||||
log_info "Installing Brave Browser..."
|
||||
|
||||
if pacman -Si brave-browser >/dev/null 2>&1; then
|
||||
install_pacman brave-browser
|
||||
elif pacman -Si brave-bin >/dev/null 2>&1; then
|
||||
install_pacman brave-bin
|
||||
else
|
||||
install_aur brave-bin
|
||||
fi
|
||||
}
|
||||
11
modules/optional/packages/chromium.sh
Executable file
11
modules/optional/packages/chromium.sh
Executable file
@@ -0,0 +1,11 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
module_description() { printf "Install Chromium\n"; }
|
||||
module_required() { return 1; }
|
||||
module_should_skip() { return 1; }
|
||||
module_prereqs() { return 0; }
|
||||
|
||||
module_main() {
|
||||
log_info "Installing Chromium..."
|
||||
install_pacman chromium
|
||||
}
|
||||
11
modules/optional/packages/neovim.sh
Executable file
11
modules/optional/packages/neovim.sh
Executable file
@@ -0,0 +1,11 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
module_description() { printf "Install Neovim\n"; }
|
||||
module_required() { return 1; }
|
||||
module_should_skip() { return 1; }
|
||||
module_prereqs() { return 0; }
|
||||
|
||||
module_main() {
|
||||
log_info "Installing Neovim..."
|
||||
install_pacman neovim
|
||||
}
|
||||
17
modules/optional/packages/obsidian.sh
Executable file
17
modules/optional/packages/obsidian.sh
Executable file
@@ -0,0 +1,17 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
module_description() { printf "Install Obsidian\n"; }
|
||||
module_required() { return 1; }
|
||||
module_should_skip() { return 1; }
|
||||
module_prereqs() { return 0; }
|
||||
|
||||
module_main() {
|
||||
log_info "Installing Obsidian..."
|
||||
if pacman -Si obsidian >/dev/null 2>&1; then
|
||||
install_pacman obsidian
|
||||
elif pacman -Si obsidian-bin >/dev/null 2>&1; then
|
||||
install_pacman obsidian-bin
|
||||
else
|
||||
install_aur obsidian-bin
|
||||
fi
|
||||
}
|
||||
43
modules/optional/packages/pipewire-tools.sh
Executable file
43
modules/optional/packages/pipewire-tools.sh
Executable file
@@ -0,0 +1,43 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
module_description() { printf "Install PipeWire audio tools\n"; }
|
||||
module_required() { return 1; }
|
||||
module_should_skip() { return 1; }
|
||||
module_prereqs() { return 0; }
|
||||
|
||||
module_main() {
|
||||
log_section "PipeWire Audio Tools"
|
||||
|
||||
local packages=(
|
||||
pipewire
|
||||
pipewire-pulse
|
||||
pipewire-alsa
|
||||
pipewire-jack
|
||||
wireplumber
|
||||
pavucontrol
|
||||
helvum
|
||||
easyeffects
|
||||
)
|
||||
|
||||
local to_install=()
|
||||
local pkg
|
||||
|
||||
for pkg in "${packages[@]}"; do
|
||||
if pacman -Si "$pkg" >/dev/null 2>&1 && ! is_package_installed "$pkg"; then
|
||||
to_install+=("$pkg")
|
||||
fi
|
||||
done
|
||||
|
||||
if ((${#to_install[@]})); then
|
||||
log_info "Installing PipeWire tools: ${to_install[*]}"
|
||||
install_pacman "${to_install[@]}"
|
||||
log_success "PipeWire tools installed"
|
||||
else
|
||||
log_info "All PipeWire tools already installed"
|
||||
fi
|
||||
|
||||
if have systemctl; then
|
||||
systemctl --user enable --now pipewire pipewire-pulse wireplumber 2>/dev/null || true
|
||||
log_info "PipeWire services enabled"
|
||||
fi
|
||||
}
|
||||
18
modules/optional/packages/spotify.sh
Executable file
18
modules/optional/packages/spotify.sh
Executable file
@@ -0,0 +1,18 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
module_description() { printf "Install Spotify\n"; }
|
||||
module_required() { return 1; }
|
||||
module_should_skip() { return 1; }
|
||||
module_prereqs() { return 0; }
|
||||
|
||||
module_main() {
|
||||
log_info "Installing Spotify..."
|
||||
|
||||
if pacman -Si spotify >/dev/null 2>&1; then
|
||||
install_pacman spotify
|
||||
elif pacman -Si spotify-launcher >/dev/null 2>&1; then
|
||||
install_pacman spotify-launcher
|
||||
else
|
||||
install_aur spotify-launcher
|
||||
fi
|
||||
}
|
||||
18
modules/optional/packages/visual-studio-code.sh
Executable file
18
modules/optional/packages/visual-studio-code.sh
Executable file
@@ -0,0 +1,18 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
module_description() { printf "Install Visual Studio Code\n"; }
|
||||
module_required() { return 1; }
|
||||
module_should_skip() { return 1; }
|
||||
module_prereqs() { return 0; }
|
||||
|
||||
module_main() {
|
||||
log_info "Installing Visual Studio Code..."
|
||||
|
||||
if pacman -Si code >/dev/null 2>&1; then
|
||||
install_pacman code
|
||||
elif pacman -Si visual-studio-code-bin >/dev/null 2>&1; then
|
||||
install_pacman visual-studio-code-bin
|
||||
else
|
||||
install_aur visual-studio-code-bin
|
||||
fi
|
||||
}
|
||||
11
modules/optional/packages/vlc.sh
Executable file
11
modules/optional/packages/vlc.sh
Executable file
@@ -0,0 +1,11 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
module_description() { printf "Install VLC\n"; }
|
||||
module_required() { return 1; }
|
||||
module_should_skip() { return 1; }
|
||||
module_prereqs() { return 0; }
|
||||
|
||||
module_main() {
|
||||
log_info "Installing VLC..."
|
||||
install_pacman vlc
|
||||
}
|
||||
Reference in New Issue
Block a user