mirror of
https://github.com/stornic56/debianito-post-install.git
synced 2026-09-14 06:02:35 +00:00
0e24e8f9ae
- Resolved NVIDIA driver management issues by expanding package detection patterns (including nvidia-open and nvidia-kernel-open-dkms), enhancing purge process to ensure clean uninstallation of v590/595 drivers, and adding conditional skip for manage menu when no driver is installed. - Enhanced Firefox variant selection in internet.sh using exact token matching (grep -qx) instead of substring search to prevent incorrect removal or unintended ESR/Firefox conflicts. - New XFCE install option with 4 options - Restructured Desktop Environment into two-level menu system with dispatcher and Xfce sub-menu for scalability, enabling future additions like GNOME/KDE without disrupting existing flows. - Added Polkit rules in desktop_display.sh to grant suspend permissions without password prompts on laptops, including idempotent group (backlight) creation and user membership management with || true fallbacks. - Enforced LC_ALL=C LANGUAGE=C environment variables for all dpkg-reconfigure commands across System Preferences and utils.sh to ensure native dialogues run consistently in English. - Fixed kernel backports menu option availability to only appear on Debian 13, preventing errors on Debian 12 where backports repositories are EOL. - Improved ZRAM module initialization sequence by ensuring swapoff and zram module removal occur before writing new configuration files to prevent race conditions during system setup.
169 lines
6.3 KiB
Bash
169 lines
6.3 KiB
Bash
#!/usr/bin/env bash
|
|
# Debianito — simple configurator script
|
|
set -euo pipefail
|
|
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
CYAN='\033[0;36m'
|
|
NC='\033[0m'
|
|
|
|
# TUI dimensions — fixed centered size for whiptail dialogs
|
|
TUI_ALTO=20
|
|
TUI_ANCHO=78
|
|
TUI_ALTO_LISTA=10
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
MODULES_DIR="${SCRIPT_DIR}/modules"
|
|
|
|
source "${MODULES_DIR}/utils.sh"
|
|
[ -f "${MODULES_DIR}/sysinfo.sh" ] && source "${MODULES_DIR}/sysinfo.sh"
|
|
source "${MODULES_DIR}/sudo_config.sh"
|
|
source "${MODULES_DIR}/repos/repo_detect.sh"
|
|
source "${MODULES_DIR}/repos.sh"
|
|
[ -f "${MODULES_DIR}/firmware.sh" ] && source "${MODULES_DIR}/firmware.sh"
|
|
[ -f "${MODULES_DIR}/bluetooth.sh" ] && source "${MODULES_DIR}/bluetooth.sh"
|
|
[ -f "${MODULES_DIR}/gpu.sh" ] && source "${MODULES_DIR}/gpu.sh"
|
|
[ -f "${MODULES_DIR}/kernel.sh" ] && source "${MODULES_DIR}/kernel.sh"
|
|
[ -f "${MODULES_DIR}/gaming.sh" ] && source "${MODULES_DIR}/gaming.sh"
|
|
[ -f "${MODULES_DIR}/extras.sh" ] && source "${MODULES_DIR}/extras.sh"
|
|
[ -f "${MODULES_DIR}/zram.sh" ] && source "${MODULES_DIR}/zram.sh"
|
|
[ -f "${MODULES_DIR}/extras/java.sh" ] && source "${MODULES_DIR}/extras/java.sh"
|
|
[ -f "${MODULES_DIR}/rescue.sh" ] && source "${MODULES_DIR}/rescue.sh"
|
|
[ -f "${MODULES_DIR}/swap.sh" ] && source "${MODULES_DIR}/swap.sh"
|
|
[ -f "${MODULES_DIR}/desktop_display.sh" ] && source "${MODULES_DIR}/desktop_display.sh"
|
|
[ -f "${MODULES_DIR}/system/system_prefs.sh" ] && source "${MODULES_DIR}/system/system_prefs.sh"
|
|
[ -f "${MODULES_DIR}/system/audio.sh" ] && source "${MODULES_DIR}/system/audio.sh"
|
|
|
|
# ── Bullseye-specific modules (loaded only on Debian 11) ──
|
|
if [ -d "${MODULES_DIR}/bullseye" ]; then
|
|
[ -f "${MODULES_DIR}/bullseye/legacy.sh" ] && source "${MODULES_DIR}/bullseye/legacy.sh"
|
|
[ -f "${MODULES_DIR}/bullseye/repos.sh" ] && source "${MODULES_DIR}/bullseye/repos.sh"
|
|
[ -f "${MODULES_DIR}/bullseye/extras.sh" ] && source "${MODULES_DIR}/bullseye/extras.sh"
|
|
fi
|
|
|
|
REPOS_CONFIGURED=false
|
|
DEBIAN_VERSION=""
|
|
DEBIAN_CODENAME=""
|
|
|
|
main_menu() {
|
|
# Auto-adjust TUI dimensions for small terminals
|
|
if [ "${LINES:-24}" -lt $((TUI_ALTO + 6)) ] || [ "${COLUMNS:-80}" -lt $((TUI_ANCHO + 6)) ]; then
|
|
TUI_ALTO=$(( ${LINES:-24} - 4 > 8 ? ${LINES:-24} - 4 : 8))
|
|
TUI_ANCHO=$(( ${COLUMNS:-80} - 4 > 50 ? ${COLUMNS:-80} - 4 : 50))
|
|
TUI_ALTO_LISTA=$((TUI_ALTO - 10 > 4 ? TUI_ALTO - 10 : 4))
|
|
fi
|
|
|
|
while true; do
|
|
sudo -v >/dev/null 2>&1 || true
|
|
local STATE_REFRESHED=false
|
|
local choice
|
|
choice=$(_menu "DEBIANITO — Simple Configurator Script" "" \
|
|
$TUI_ALTO $TUI_ANCHO $TUI_ALTO_LISTA \
|
|
"1" "System Information" \
|
|
"2" "User Privileges & Feedback" \
|
|
"3" "System Preferences" \
|
|
"4" "Configure Repositories" \
|
|
"5" "Firmware, Wireless & Bluetooth" \
|
|
"6" "Graphics Drivers & Mesa Stack" \
|
|
"7" "Kernel" \
|
|
"8" "Gaming Setup" \
|
|
"9" "ZRAM" \
|
|
"10" "Swap Management" \
|
|
"11" "Install Programs and Software" \
|
|
"12" "Boot Rescue + GRUB" \
|
|
"13" "Desktop & Display" \
|
|
"14" "Exit")
|
|
|
|
clear
|
|
|
|
case "$choice" in
|
|
1) _show_sysinfo ;;
|
|
2) config_sudo || true ;;
|
|
3) _system_preferences_menu ;;
|
|
4)
|
|
if [ "$DEBIAN_VERSION" = "11" ] && type configure_repos_bullseye &>/dev/null; then
|
|
configure_repos_bullseye || true
|
|
else
|
|
configure_repos || true
|
|
fi
|
|
STATE_REFRESHED=true
|
|
;;
|
|
5)
|
|
if [ "$DEBIAN_VERSION" = "11" ] && type install_firmware_bullseye &>/dev/null; then
|
|
install_firmware_bullseye || true
|
|
else
|
|
install_firmware || true
|
|
fi
|
|
;;
|
|
6)
|
|
local gpu_sub
|
|
gpu_sub=$(_menu "Graphics Drivers" "" 12 50 2 \
|
|
"1" "Radeon/Intel Mesa" \
|
|
"2" "NVIDIA Drivers")
|
|
[ -z "$gpu_sub" ] && continue
|
|
clear
|
|
case $gpu_sub in
|
|
1) _install_amd_intel_stack || true ;;
|
|
2) _install_nvidia_stack || true ;;
|
|
esac
|
|
STATE_REFRESHED=true
|
|
;;
|
|
7) show_kernel_menu || true ;;
|
|
8)
|
|
if [ "$DEBIAN_VERSION" = "11" ] && type install_gaming_bullseye &>/dev/null; then
|
|
install_gaming_bullseye || true
|
|
else
|
|
install_gaming || true
|
|
fi
|
|
STATE_REFRESHED=true
|
|
;;
|
|
9) zram_menu || true ;;
|
|
10) manage_swap || true; STATE_REFRESHED=true ;;
|
|
11)
|
|
if [ "$DEBIAN_VERSION" = "11" ] && type install_extras_bullseye &>/dev/null; then
|
|
install_extras_bullseye || true
|
|
else
|
|
install_extras || true
|
|
fi
|
|
;;
|
|
12) rescue_boot || true ;;
|
|
13) manage_desktop_display || true ;;
|
|
14) echo "Exiting."; exit 0 ;;
|
|
esac
|
|
if $STATE_REFRESHED; then
|
|
refresh_system_state
|
|
fi
|
|
done
|
|
}
|
|
|
|
check_root
|
|
check_sudo
|
|
if ! _check_network; then
|
|
echo -e "${YELLOW}──────────────────────────────────────────${NC}"
|
|
echo -e "${YELLOW} No internet connectivity detected.${NC}"
|
|
echo -e "${YELLOW} Package installation will fail without network.${NC}"
|
|
echo -e "${YELLOW} You can use: System Info, User Privileges, and${NC}"
|
|
echo -e "${YELLOW} other offline features.${NC}"
|
|
echo -e "${YELLOW}──────────────────────────────────────────${NC}"
|
|
fi
|
|
_ensure_time_synced
|
|
|
|
detect_debian_version
|
|
detect_cpu_ram
|
|
detect_kernel
|
|
detect_gpu
|
|
detect_network
|
|
detect_displayserver
|
|
detect_storage
|
|
detect_desktop_environment
|
|
_configure_lightdm
|
|
detect_audio_server
|
|
|
|
# ── Bullseye-specific init (archive phase) ──
|
|
if [ "$DEBIAN_VERSION" = "11" ] && type check_bullseye_archive_phase &>/dev/null; then
|
|
check_bullseye_archive_phase
|
|
fi
|
|
|
|
main_menu
|