- tui.sh: komplett überarbeitet mit _strip_format() für basic mode
- whiptail als mittleres Fallback-Backend hinzugefügt
- Alle #{bold}/#{normal}-Markups entfernt, saubere ANSI-API (tui_info/tui_bold/...)
- install.sh: detect_environment() installiert gum vor allen Prompts
- Kein seq-Dependency mehr (printf -v statt seq)
- packages.sh/preflight.sh/homelab.sh/optional.sh auf neue TUI-API migriert
104 lines
2.6 KiB
Bash
Executable File
104 lines
2.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
OMERON_FRESH_INSTALL=0
|
|
OMERON_DETECTED_GPU=""
|
|
|
|
module_description() {
|
|
printf "System Preflight - detect system state and missing dependencies\n"
|
|
}
|
|
|
|
module_required() { return 0; }
|
|
module_should_skip() { return 1; }
|
|
|
|
module_prereqs() {
|
|
require pacman pacman
|
|
is_arch || {
|
|
tui_error "This module requires an Arch-based system"
|
|
return 1
|
|
}
|
|
}
|
|
|
|
module_main() {
|
|
log_section "System Preflight Check"
|
|
|
|
OMERON_DETECTED_GPU="$(detect_gpu)"
|
|
export OMERON_DETECTED_GPU
|
|
|
|
system_summary
|
|
printf '\n'
|
|
|
|
if is_fresh_install; then
|
|
OMERON_FRESH_INSTALL=1
|
|
export OMERON_FRESH_INSTALL
|
|
|
|
tui_warn "Fresh system detected!"
|
|
tui_info "Hyprland is not installed and no desktop session is running."
|
|
printf '\n'
|
|
|
|
local gpu_name
|
|
gpu_name="$(lspci -nn 2>/dev/null | grep -E '\[0300\]|\[0302\]|\[0380\]' | sed 's/.*: //' | head -1 || echo "unknown")"
|
|
|
|
tui_bold "This installation will:"
|
|
tui_list \
|
|
"Hyprland compositor + tools" \
|
|
"GPU drivers for: ${gpu_name}" \
|
|
"Audio system (PipeWire)" \
|
|
"Network services (NetworkManager)" \
|
|
"Fonts and icon themes" \
|
|
"Dotfiles deployment"
|
|
printf '\n'
|
|
|
|
if ! tui_confirm "Proceed with full system setup?"; then
|
|
tui_info "Fresh installation aborted by user"
|
|
exit 0
|
|
fi
|
|
|
|
if ! have paru && ! have yay; then
|
|
tui_info "No AUR helper found. Installing paru..."
|
|
install_aur_helper
|
|
fi
|
|
|
|
if ((!OMERON_HAS_GUM)) && have pacman; then
|
|
tui_install_gum 2>/dev/null || true
|
|
fi
|
|
|
|
tui_success "Preflight complete — ready for full installation"
|
|
else
|
|
tui_success "Existing Hyprland system detected"
|
|
tui_info "Will check for missing packages and updates."
|
|
fi
|
|
}
|
|
|
|
install_aur_helper() {
|
|
if have paru || have yay; then
|
|
return 0
|
|
fi
|
|
|
|
if ! command -v git >/dev/null 2>&1; then
|
|
sudo_run pacman -S --needed --noconfirm git base-devel
|
|
fi
|
|
|
|
local build_dir
|
|
build_dir="$(mktemp -d)"
|
|
|
|
tui_info "Building paru from AUR..."
|
|
sudo_run pacman -S --needed --noconfirm rustup 2>/dev/null || true
|
|
|
|
if have rustup; then
|
|
rustup default stable >/dev/null 2>&1 || true
|
|
fi
|
|
|
|
if git clone https://aur.archlinux.org/paru.git "$build_dir/paru" 2>/dev/null; then
|
|
(cd "$build_dir/paru" && makepkg -si --needed --noconfirm) 2>&1 | tail -5 || {
|
|
tui_warn "paru build failed, trying yay..."
|
|
if git clone https://aur.archlinux.org/yay.git "$build_dir/yay" 2>/dev/null; then
|
|
(cd "$build_dir/yay" && makepkg -si --needed --noconfirm) 2>&1 | tail -5 || {
|
|
tui_warn "yay build failed too. Install manually: paru -S paru-bin"
|
|
}
|
|
fi
|
|
}
|
|
fi
|
|
|
|
rm -rf "$build_dir"
|
|
}
|