#!/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

    tui_info "Updating system (pacman -Syu) on fresh VM..."
    sudo_run pacman -Syu --noconfirm

    if ! have paru && ! have yay; then
      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
}


