System Refactor, GPU & Terminal Overhaul

- Bug Fixes: Rewrote `install_gaming_bullseye()` in `modules/bullseye/legacy.sh` to use a unified `_checklist` flow (matching Debian 12/13) with automatic i386 architecture detection and driver installation. Fixed greetd "Back" menu crash on Debian 11 by adding version-specific conditional logic in `desktop_display.sh`. Corrected ZRAM text overflow in `zram.sh` using `\n` line breaks for terminal wrapping. Updated Kernel Backports warning message in `debianito.sh` to clarify Bullseye limitations.

- Architecture & Repositories: Refactored Debian 11 repository configuration (`configure_repos_bullseye`) to reuse modern submenus (`_repos_enable_components`, `_branch_migration`), eliminating ~44 lines of hardcoded logic and duplicate source list management. Restricted `non-free-firmware` component availability to Debian 12+ in `modules/repos.sh`. Implemented mandatory `apt autoremove -y` and `apt autoclean` execution immediately after enabling non-free/contrib components (`_repos_enable_components`).

- UI & Menus: Added a new "Communication" menu (Option 4) between Internet and Media Players, featuring Signal, Telegram (with Trixie backports warning), and Hexchat. Moved all terminal emulators from System Tools to the "Customization System" -> Terminals submenu (`modules/extras/terminals/terminals.sh`) with version-specific logic (Alacritty 12+, Blackbox/Ptyxis 13+). Added Joplin installer in Office & Productivity for Debian 12/13 only. Integrated Synaptic into Software Centers menu alongside GNOME and Plasma stores. Unified Essential Pack UI across versions, switching between `fastfetch` (Trixie) and `neofetch` (Bookworm/Bullseye).

- Hardware Drivers: Replaced deprecated `install_gpu_drivers()` in `modules/gpu.sh` with `_install_amd_intel_stack()` and `_install_nvidia_stack()`. Implemented specific logic for Debian 13 (Trixie): Blackwell GPUs now enable the official NVIDIA CUDA repository; Maxwell/Pascal on Backports forces a stable kernel path to ensure driver compatibility. Deprecated `install_nvidia_driver()` in favor of new stack functions while preserving global state variables (`NVIDIA_DRIVER_MODE`).

- Utilities & Cleanup: Added `gdebi` and `bleachbit` to System Tools (GUI-only). Standardized menu headers across 15 files using a centralized `SCROLL_HINT` variable. Ensured VLC installation is conditional on headless status checks in Essential Pack modules.
This commit is contained in:
stornic56
2026-07-19 00:57:57 -05:00
committed by GitHub
parent d8878b67e1
commit 92d0eb7467
19 changed files with 442 additions and 261 deletions
+2 -2
View File
@@ -58,7 +58,7 @@ After running the script:
| **8** | [ZRAM](/docs/zram.md)| Configure compressed RAM for memory optimization| | **8** | [ZRAM](/docs/zram.md)| Configure compressed RAM for memory optimization|
| **9** | [Swap Management](/docs/swap.md)| Manage swap file or partition size and enable/disable swap space for system stability| | **9** | [Swap Management](/docs/swap.md)| Manage swap file or partition size and enable/disable swap space for system stability|
| **10** | Install Programs and Software | Browse and install packages by category (Development, Themes, System Tools, etc.) using APT | | **10** | Install Programs and Software | Browse and install packages by category (Development, Themes, System Tools, etc.) using APT |
| **11** | [Boot Rescue + GRUB](/docs/boot.md))| Config and fix GRUB bootloader issues, chroot repair, or restore system boot configuration| | **11** | [Boot Rescue + GRUB](/docs/boot.md)| Config and fix GRUB bootloader issues, chroot repair, or restore system boot configuration|
| **12** | [Desktop & Display](/docs/desktops_display.md)| Install and configure desktops and display managers| | **12** | [Desktop & Display](/docs/desktops_display.md)| Install and configure desktops and display managers|
| **13** | Exit | Return to terminal | | **13** | Exit | Return to terminal |
@@ -71,7 +71,7 @@ The submenu offers the next categories:
| **0** | Essential Pack | Quick install of common tools (compression, system info, VLC, MS fonts)| | **0** | Essential Pack | Quick install of common tools (compression, system info, VLC, MS fonts)|
| **1** | Customization System | Desktop themes, icon themes, cursor themes, and fonts | | **1** | Customization System | Desktop themes, icon themes, cursor themes, and fonts |
| **2** | Download & Network | Downloaders (aria2, ytdlp, FileZilla) + Torrent clients (qBittorrent, Deluge, Transmission) | | **2** | Download & Network | Downloaders (aria2, ytdlp, FileZilla) + Torrent clients (qBittorrent, Deluge, Transmission) |
| **3** | Internet (Browsers, Email Clients, VPN) | Web browsers (Firefox/Mozilla, LibreWolf, Floorp, Chromium, Brave, Tor), email client (Thunderbird), and VPN tools (RiseUp, Proton, Mullvad)| | **3** | Internet (Browsers, Email Clients, VPN) | Web browsers (Firefox, LibreWolf, Floorp, Chromium, Tor), email client (Thunderbird), and VPN tools (RiseUp, Proton, Mullvad)|
| **4** | Media Players | Multimedia playback with VLC media player and MPV for advanced video/audio support | | **4** | Media Players | Multimedia playback with VLC media player and MPV for advanced video/audio support |
| **5** | Multimedia & Design | image editing (GIMP), video editing (Kdenlive, HandBrake), 3D modeling (Blender), audio recording (Audacity), and graphics design (Inkscape) | | **5** | Multimedia & Design | image editing (GIMP), video editing (Kdenlive, HandBrake), 3D modeling (Blender), audio recording (Audacity), and graphics design (Inkscape) |
| **6** | Code Editors & IDEs | vim, vim-gtk3, Neovim, Helix, nano, Emacs, Kate, Mousepad, Gedit, Geany, GNOME Text Editor, and VSCodium (VS Code open-source) | | **6** | Code Editors & IDEs | vim, vim-gtk3, Neovim, Helix, nano, Emacs, Kate, Mousepad, Gedit, Geany, GNOME Text Editor, and VSCodium (VS Code open-source) |
+14 -4
View File
@@ -91,13 +91,23 @@ main_menu() {
install_firmware || true install_firmware || true
fi fi
;; ;;
5) install_gpu_drivers || true; STATE_REFRESHED=true ;; 5)
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
;;
6) 6)
if [ "$DEBIAN_VERSION" = "11" ]; then if [ "$DEBIAN_VERSION" = "11" ]; then
_msg "Not Available" \ _msg "Not Available" \
"Backports Kernel is not available on Debian 11 Bullseye.\n\n\ "Backports Kernel is not available on Debian 11 Bullseye.\n\nThe stable kernel provided by Bullseye is the only option." 10 60
Ultra Minimalist Rescue Mode does not include third-party\n\
kernels. Use the stable kernel provided by Bullseye." 10 60
else else
install_kernel_backports || true install_kernel_backports || true
fi fi
+43 -27
View File
@@ -4,18 +4,20 @@
# ── Essential Pack (Bullseye) ── # ── Essential Pack (Bullseye) ──
_quick_install_bullseye() { _quick_install_bullseye() {
_msg "Essential Pack — Bullseye" \ _msg "Essential Pack" \
"Install basic programs:\n\n\ "Install basic programs:\n\n\
- Compression (zip, unrar, p7zip-full)\n\ - Compression (zip, unrar, 7z)\n\
- System tools (htop, inxi, neofetch, bpytop)\n\ - System tools (htop, inxi, neofetch)\n\
- VLC media player\n\ - Networking (curl, wget, ufw)\n\
- Microsoft fonts" 13 60 - CA certs & GPG\n\
- VLC media player" 13 60
local quick_pkgs=( local quick_pkgs=(
zip unzip rar unrar p7zip-full p7zip-rar zip unzip rar unrar p7zip-full p7zip-rar
neofetch bpytop htop inxi vlc neofetch htop inxi curl wget ufw
ttf-mscorefonts-installer ca-certificates gnupg lsb-release
) )
_is_headless || quick_pkgs+=(vlc)
_run_install_batch "${quick_pkgs[@]}" _run_install_batch "${quick_pkgs[@]}"
echo -e "${GREEN}Essential Pack installed.${NC}" echo -e "${GREEN}Essential Pack installed.${NC}"
} }
@@ -64,6 +66,7 @@ _cat_customization_bullseye() {
"2" "Icon Themes" \ "2" "Icon Themes" \
"3" "Cursor Themes" \ "3" "Cursor Themes" \
"4" "Fonts" \ "4" "Fonts" \
"5" "Terminals" \
) )
[ -z "$sub" ] && return [ -z "$sub" ] && return
case $sub in case $sub in
@@ -71,6 +74,7 @@ _cat_customization_bullseye() {
2) _cat_icons_bullseye ;; 2) _cat_icons_bullseye ;;
3) _cat_cursors_bullseye ;; 3) _cat_cursors_bullseye ;;
4) _cat_fonts_bullseye ;; 4) _cat_fonts_bullseye ;;
5) _cat_terminals ;;
esac esac
} }
@@ -418,7 +422,7 @@ _cat_security_bullseye() {
} }
_cat_general_bullseye() { _cat_general_bullseye() {
local item_count=18 local item_count=22
local lista_alto=$((item_count > TUI_ALTO_LISTA ? TUI_ALTO_LISTA : item_count)) local lista_alto=$((item_count > TUI_ALTO_LISTA ? TUI_ALTO_LISTA : item_count))
local choices local choices
choices=$(_checklist "System Tools (Bullseye)" "Select system utilities${SCROLL_HINT}:" $TUI_ALTO $TUI_ANCHO $lista_alto \ choices=$(_checklist "System Tools (Bullseye)" "Select system utilities${SCROLL_HINT}:" $TUI_ALTO $TUI_ANCHO $lista_alto \
@@ -432,6 +436,7 @@ _cat_general_bullseye() {
"gparted" "Partition editor" "$(_state gparted)" \ "gparted" "Partition editor" "$(_state gparted)" \
"htop" "Interactive process viewer" "$(_state htop)" \ "htop" "Interactive process viewer" "$(_state htop)" \
"inxi" "System information tool" "$(_state inxi)" \ "inxi" "System information tool" "$(_state inxi)" \
"jq" "JSON command-line processor" "$(_state jq)" \
"kvm" "QEMU/KVM virtualization" "$(_state virt-manager)" \ "kvm" "QEMU/KVM virtualization" "$(_state virt-manager)" \
"lshw" "List hardware details" "$(_state lshw)" \ "lshw" "List hardware details" "$(_state lshw)" \
"mc" "Midnight Commander" "$(_state mc)" \ "mc" "Midnight Commander" "$(_state mc)" \
@@ -441,6 +446,8 @@ _cat_general_bullseye() {
"timeshift" "System restore snapshots" "$(_state timeshift)" \ "timeshift" "System restore snapshots" "$(_state timeshift)" \
"tmux" "Terminal multiplexer" "$(_state tmux)" \ "tmux" "Terminal multiplexer" "$(_state tmux)" \
"wine" "Windows compatibility layer" "$(_state wine)" \ "wine" "Windows compatibility layer" "$(_state wine)" \
"bleachbit" "System cleaner (GUI)" "$(_state bleachbit)" \
"gdebi" "Install .deb packages with deps (GUI)" "$(_state gdebi)" \
) )
clear clear
[ -z "$choices" ] && return [ -z "$choices" ] && return
@@ -560,15 +567,16 @@ install_extras_bullseye() {
"1" "Customization System" \ "1" "Customization System" \
"2" "Download & Network" \ "2" "Download & Network" \
"3" "Internet (Browsers, Email)" \ "3" "Internet (Browsers, Email)" \
"4" "Media Players" \ "4" "Communication" \
"5" "Multimedia & Design" \ "5" "Media Players" \
"6" "Code Editors & IDEs" \ "6" "Multimedia & Design" \
"7" "Servers & Dev Tools" \ "7" "Code Editors & IDEs" \
"8" "Security & Networking" \ "8" "Servers & Dev Tools" \
"9" "Software Centers" \ "9" "Security & Networking" \
"10" "System Tools" \ "10" "Software Centers" \
"11" "Fetch / System Info" \ "11" "System Tools" \
"12" "Back to main menu" \ "12" "Fetch / System Info" \
"13" "Back to main menu" \
) )
[ -z "$cat_choice" ] && return [ -z "$cat_choice" ] && return
@@ -579,15 +587,16 @@ install_extras_bullseye() {
1) _cat_customization_bullseye ;; 1) _cat_customization_bullseye ;;
2) _cat_download_bullseye ;; 2) _cat_download_bullseye ;;
3) _cat_internet_bullseye ;; 3) _cat_internet_bullseye ;;
4) _cat_players_bullseye ;; 4) _cat_communication ;;
5) _cat_design_bullseye ;; 5) _cat_players_bullseye ;;
6) _cat_programming_bullseye ;; 6) _cat_design_bullseye ;;
7) _cat_dev_bullseye ;; 7) _cat_programming_bullseye ;;
8) _cat_security_bullseye ;; 8) _cat_dev_bullseye ;;
9) _cat_software_centers_bullseye ;; 9) _cat_security_bullseye ;;
10) _cat_general_bullseye ;; 10) _cat_software_centers_bullseye ;;
11) _cat_fetch_bullseye ;; 11) _cat_general_bullseye ;;
12) return ;; 12) _cat_fetch_bullseye ;;
13) return ;;
esac esac
clear clear
done done
@@ -595,12 +604,19 @@ install_extras_bullseye() {
_cat_software_centers_bullseye() { _cat_software_centers_bullseye() {
local sc_choice local sc_choice
sc_choice=$(_menu "Software Centers" "Choose a software store to install:" 12 65 2 \ sc_choice=$(_menu "Software Centers" "Choose a software store to install:" 12 65 3 \
"gnome-software" "Software Center for GNOME" \ "gnome-software" "Software Center for GNOME" \
"plasma-discover" "Software manager for Plasma" \ "plasma-discover" "Software manager for Plasma" \
"synaptic" "Classic APT package manager (GTK)" \
) )
[ -z "$sc_choice" ] && return [ -z "$sc_choice" ] && return
if [ "$sc_choice" = "synaptic" ]; then
_run_cmd "Install" "sudo apt install -y synaptic" "Installing synaptic..."
echo -e "${GREEN}synaptic installed.${NC}"
return
fi
_run_cmd "Install" "sudo apt install -y $sc_choice" "Installing ${sc_choice}..." _run_cmd "Install" "sudo apt install -y $sc_choice" "Installing ${sc_choice}..."
if _confirm "Flatpak Support" "Do you want to enable Flatpak support for this software center?"; then if _confirm "Flatpak Support" "Do you want to enable Flatpak support for this software center?"; then
+48 -87
View File
@@ -103,77 +103,22 @@ install_nvidia_bullseye() {
# 32-bit Mesa/NVIDIA + gamemode + mangohud + goverlay + lutris # 32-bit Mesa/NVIDIA + gamemode + mangohud + goverlay + lutris
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
install_gaming_bullseye() { install_gaming_bullseye() {
echo -e "${YELLOW}Lightweight Gaming (Bullseye mode).${NC}" echo -e "${YELLOW}Gaming setup (Bullseye)...${NC}"
local enable_32bit=false
if _confirm "32-bit Support" \
"Enable i386 architecture for 32-bit games?\n\n\
Required by Steam/Proton for 32-bit games.\n\
Installs matching 32-bit graphics drivers."; then
enable_32bit=true
fi
if $enable_32bit; then
echo "Enabling i386 multi-architecture support..."
if ! dpkg --print-foreign-architectures | grep -q i386; then
sudo dpkg --add-architecture i386
fi
_run_cmd "APT Update" "sudo apt update" "Updating package lists..."
if [ "$GPU_TYPE" = "nvidia" ]; then
local nv32_pkg="nvidia-driver-libs:i386"
local nv32_ver
nv32_ver=$(apt-cache policy "$nv32_pkg" 2>/dev/null | awk 'NR==3 {print $2; exit}')
if [ -n "$nv32_ver" ] && [ "$nv32_ver" != "(none)" ]; then
local msg="Source: Debian Bullseye Stable\n"
msg+="NVIDIA 32-bit Libraries ${nv32_ver}\n\n"
msg+="[+] nvidia-driver-libs:i386"
if _confirm "NVIDIA 32-bit" "$msg" 12 70; then
_run_cmd "32-bit NVIDIA" "sudo apt install -y ${nv32_pkg}" \
"Installing NVIDIA 32-bit libraries..."
fi
else
echo "nvidia-driver-libs:i386 not available on Bullseye."
fi
else
# Mesa 32-bit
local mesa_32=(
"mesa-vulkan-drivers:i386"
"libgl1-mesa-dri:i386"
"libglx-mesa0:i386"
"libegl-mesa0:i386"
"mesa-va-drivers:i386"
)
local ref_ver
ref_ver=$(apt-cache policy "mesa-vulkan-drivers:i386" 2>/dev/null | \
awk 'NR==3 {print $2; exit}')
local comp_line="Components: Vulkan:i386, OpenGL:i386, GLX:i386, EGL:i386, VA-API:i386"
local msg="Mesa 32-bit drivers for gaming.\n\n"
msg+="Source: Debian Bullseye Stable\n"
msg+="Mesa ${ref_ver}\n"
msg+="${comp_line}\n\n"
msg+="Install 32-bit drivers?"
if _confirm "Mesa 32-bit" "$msg" 14 70; then
_run_cmd "Mesa 32-bit" "sudo apt install -y ${mesa_32[*]}" \
"Installing Mesa 32-bit..."
fi
fi
fi
# Gaming tools checklist (no Steam, no Heroic)
local choices local choices
choices=$(_checklist "Gaming Tools — Bullseye" \ choices=$(_checklist "Gaming Setup — Bullseye" \
"Select gaming optimization tools:" $TUI_ALTO $TUI_ANCHO $TUI_ALTO_LISTA \ "Select gaming packages to install${SCROLL_HINT}:" $TUI_ALTO $TUI_ANCHO $TUI_ALTO_LISTA \
"gamemode" "Game performance optimization" ON \ "steam" "Steam (requires 32-bit support)" ON \
"gamemode" "Game performance optimization" OFF \
"mangohud" "Performance overlay (Vulkan/OpenGL)" ON \ "mangohud" "Performance overlay (Vulkan/OpenGL)" ON \
"goverlay" "MangoHud config GUI" ON \ "goverlay" "MangoHud config GUI" ON \
"lutris" "Game launcher/manager" OFF \ "java" "Minecraft Java Runtime" OFF \
"java" "Java Runtimes (8, 17, 21)" OFF) "lutris" "Lutris + Wine (requires 32-bit support)" OFF \
"retroarch" "RetroArch Emulator Frontend" OFF \
"i386" "Enable 32-bit (i386) architecture" ON)
if [ -z "$choices" ]; then if [ -z "$choices" ]; then
echo "No gaming tools selected." echo "No gaming packages selected."
_pause _pause
return return
fi fi
@@ -181,34 +126,50 @@ Installs matching 32-bit graphics drivers."; then
local cleaned local cleaned
cleaned=$(echo "$choices" | tr -d '"') cleaned=$(echo "$choices" | tr -d '"')
for pkg in $cleaned; do local need_32bit=false
for p in $cleaned; do
case $p in steam|lutris) need_32bit=true ;; esac
done
echo "$cleaned" | grep -qw i386 && need_32bit=true
local install_list
install_list=$(echo "$cleaned" | tr ' ' '\n' | grep -v '^i386$' | tr '\n' ' ')
install_list=${install_list% }
if $need_32bit && ! dpkg --print-foreign-architectures 2>/dev/null | grep -q i386; then
echo -e "${YELLOW}Enabling i386 architecture...${NC}"
sudo dpkg --add-architecture i386
_run_cmd "APT Update" "sudo apt update" "Updating package lists..."
fi
if $need_32bit; then
echo "Installing 32-bit graphics drivers..."
if [ "$GPU_TYPE" = "nvidia" ]; then
_install_nvidia_32bit
else
_install_mesa_32bit
fi
fi
for pkg in $install_list; do
case $pkg in case $pkg in
mangohud) steam)
local mh_pkgs="mangohud" if ensure_contrib_repo; then
if $enable_32bit; then install_steam
local mh32_ver else
mh32_ver=$(apt-cache policy mangohud:i386 2>/dev/null | \ echo -e "${YELLOW}Skipping Steam installation (contrib repository not enabled).${NC}"
awk 'NR==3 {print $2; exit}')
if [ -n "$mh32_ver" ] && [ "$mh32_ver" != "(none)" ]; then
mh_pkgs+=" mangohud:i386"
fi fi
fi
_run_cmd "MangoHud" "sudo apt install -y $mh_pkgs" "Installing MangoHud (64 + 32-bit)..."
;; ;;
gamemode) _run_cmd "GameMode" "sudo apt install -y gamemode" "Installing GameMode..." ;; java) install_minecraft_java ;;
goverlay) _run_cmd "GOverlay" "sudo apt install -y goverlay" "Installing GOverlay..." ;; mangohud) install_mangohud ;;
lutris) gamemode) install_gamemode ;;
local pkgs="lutris wine64" goverlay) install_goverlay ;;
if dpkg --print-foreign-architectures 2>/dev/null | grep -q i386; then lutris) install_lutris ;;
pkgs+=" wine32" retroarch) install_retroarch ;;
fi
_run_cmd "Lutris" "sudo apt install -y $pkgs" "Installing Lutris + Wine..."
;;
java) _install_gaming_java ;;
*) _run_install "$pkg" ;; *) _run_install "$pkg" ;;
esac esac
done done
echo -e "${GREEN}Lightweight gaming setup complete.${NC}" echo -e "${GREEN}Gaming setup complete.${NC}"
_pause _pause
} }
+15 -44
View File
@@ -3,48 +3,19 @@
# License GPL v3 # License GPL v3
configure_repos_bullseye() { configure_repos_bullseye() {
echo -e "${YELLOW}Repository configuration — Debian 11 Bullseye${NC}" while true; do
local repo_choice
local info="Repository configuration for Debian 11 Bullseye.\n\n" repo_choice=$(_menu "Configure Repositories — Bullseye" \
info+="Official repositories will be used with components\n" "Select an option:" $TUI_ALTO $TUI_ANCHO 6 \
info+="main, contrib and non-free (non-free-firmware excluded).\n" "1" "Enable Contrib & Non-Free Components" \
info+="DEB822 format is not used.\n" "2" "Migrate to SID/Testing branch" \
if $BULLSEYE_USE_ARCHIVE; then "3" "Back to main menu")
info+="\nArchive Mode: URLs will point to archive.debian.org\n" [ -z "$repo_choice" ] && break
info+="(Bullseye LTS ended on 31 Aug 2026)." clear
fi case "$repo_choice" in
_msg "Repositories — Bullseye" "$info" 12 65 1) _repos_enable_components ;;
2) _branch_migration || true ;;
if [ -f /etc/apt/sources.list ]; then 3) break ;;
if ! _confirm "Repositories" "/etc/apt/sources.list already exists.\n\nOverwrite with Bullseye configuration?"; then esac
echo "Keeping current configuration." done
return 0
fi
fi
local base_uri="https://deb.debian.org/debian"
local security_uri="https://security.debian.org/debian-security"
if $BULLSEYE_USE_ARCHIVE; then
base_uri="https://archive.debian.org/debian"
security_uri="https://archive.debian.org/debian-security"
fi
local content=""
content="# Oficial Repo\n"
content+="deb ${base_uri} bullseye main contrib non-free\n"
content+="#deb-src ${base_uri} bullseye main contrib non-free\n\n"
content+="# Security\n"
content+="deb ${security_uri} bullseye-security main contrib non-free\n"
content+="#deb-src ${security_uri} bullseye-security main contrib non-free\n"
echo -e "$content" | sudo tee /etc/apt/sources.list > /dev/null
echo "Updating package lists..."
if sudo apt update; then
echo -e "${GREEN}Debian 11 Bullseye repositories configured.${NC}"
else
echo -e "${RED}apt update failed. Check your network connection.${NC}"
return 1
fi
} }
+7 -1
View File
@@ -40,7 +40,13 @@ display_manager_menu() {
1) lightdm_config_menu ;; 1) lightdm_config_menu ;;
2) configure_gdm3 ;; 2) configure_gdm3 ;;
3) configure_sddm ;; 3) configure_sddm ;;
4) configure_greetd ;; 4)
if [ "$DEBIAN_VERSION" = "12" ] || [ "$DEBIAN_VERSION" = "13" ]; then
configure_greetd
else
break
fi
;;
5) break ;; 5) break ;;
esac esac
done done
+22 -20
View File
@@ -33,16 +33,17 @@ install_extras() {
"1" "Customization System" \ "1" "Customization System" \
"2" "Download & Network" \ "2" "Download & Network" \
"3" "Internet (Browsers, Email, VPN)" \ "3" "Internet (Browsers, Email, VPN)" \
"4" "Media Players" \ "4" "Communication" \
"5" "Multimedia & Design" \ "5" "Media Players" \
"6" "Code Editors & IDEs" \ "6" "Multimedia & Design" \
"7" "Servers & Dev Tools" \ "7" "Code Editors & IDEs" \
"8" "Security & Networking" \ "8" "Servers & Dev Tools" \
"9" "Software Centers" \ "9" "Security & Networking" \
"10" "Office & Productivity" \ "10" "Software Centers" \
"11" "System Tools" \ "11" "Office & Productivity" \
"12" "Fetch / System Info" \ "12" "System Tools" \
"13" "Back to main menu") "13" "Fetch / System Info" \
"14" "Back to main menu")
[ -z "$cat_choice" ] && return [ -z "$cat_choice" ] && return
clear clear
@@ -52,16 +53,17 @@ install_extras() {
1) _cat_customization ;; 1) _cat_customization ;;
2) _cat_download ;; 2) _cat_download ;;
3) _cat_internet ;; 3) _cat_internet ;;
4) _cat_players ;; 4) _cat_communication ;;
5) _cat_design ;; 5) _cat_players ;;
6) _cat_programming ;; 6) _cat_design ;;
7) _cat_dev ;; 7) _cat_programming ;;
8) _cat_security ;; 8) _cat_dev ;;
9) _cat_software_centers ;; 9) _cat_security ;;
10) _cat_office ;; 10) _cat_software_centers ;;
11) _cat_general ;; 11) _cat_office ;;
12) _cat_fetch ;; 12) _cat_general ;;
13) return ;; 13) _cat_fetch ;;
14) return ;;
esac esac
clear clear
done done
@@ -0,0 +1,86 @@
#!/usr/bin/env bash
# communication.sh — Signal, Telegram, HexChat
_install_signal() {
_ensure_extrepo
if [ ! -f /etc/apt/sources.list.d/extrepo_signal.sources ]; then
_run_cmd "Signal" "sudo extrepo enable signal" "Enabling Signal repository..."
fi
_run_cmd "APT Update" "sudo apt update" "Updating package lists..."
if ! is_installed "signal-desktop"; then
_run_cmd "Signal" "sudo apt install -y signal-desktop" "Installing Signal..."
echo -e "${GREEN}Signal installed.${NC}"
else
echo "Signal already installed."
fi
}
_install_telegram() {
if [ "$DEBIAN_VERSION" = "13" ]; then
if ! is_backports_enabled; then
_msg "telegram-desktop" \
"telegram-desktop is only available in Trixie-backports.\n\n\
Please enable backports first via:\n Main Menu → 3 Configure Repositories" 12 65
echo -e "${YELLOW}Skipping telegram-desktop.${NC}"
return
fi
if ! is_installed "telegram-desktop"; then
_run_cmd "Telegram" "sudo apt install -y -t ${DEBIAN_CODENAME}-backports telegram-desktop" \
"Installing telegram-desktop from backports..."
echo -e "${GREEN}telegram-desktop installed.${NC}"
else
echo "telegram-desktop already installed."
fi
else
if ! is_installed "telegram-desktop"; then
_run_install "telegram-desktop"
echo -e "${GREEN}telegram-desktop installed.${NC}"
else
echo "telegram-desktop already installed."
fi
fi
}
_cat_communication() {
local headless=false
_is_headless && headless=true
if $headless; then
echo "Communication apps require a GUI — skipping."
return
fi
local -a items=()
local signal_state; signal_state=$(_state "signal-desktop")
local telegram_state; telegram_state=$(_state "telegram-desktop")
local hexchat_state; hexchat_state=$(_state "hexchat")
items+=(
"signal-desktop" "Signal Private Messenger (extrepo)" "$signal_state"
"telegram-desktop" "Telegram Desktop messaging" "$telegram_state"
"hexchat" "IRC client (HexChat)" "$hexchat_state"
)
local item_count=${#items[@]}
local lista_alto=$((item_count > TUI_ALTO_LISTA ? TUI_ALTO_LISTA : item_count))
local choices
choices=$(_checklist "Communication" "Select communication apps${SCROLL_HINT}:" \
$TUI_ALTO $TUI_ANCHO $lista_alto "${items[@]}")
clear
[ -z "$choices" ] && return
local cleaned; cleaned=$(echo "$choices" | tr -d '"')
for pkg in $cleaned; do
case $pkg in
signal-desktop) _install_signal ;;
telegram-desktop) _install_telegram ;;
hexchat)
if ! is_installed "hexchat"; then
_run_install "hexchat"
echo -e "${GREEN}hexchat installed.${NC}"
else
echo "hexchat already installed."
fi
;;
esac
done
echo -e "${GREEN}Communication tools installed.${NC}"
}
+15 -6
View File
@@ -3,18 +3,27 @@
_quick_install() { _quick_install() {
local fetch_pkg local fetch_pkg
if [ "$DEBIAN_CODENAME" = "bookworm" ]; then if [ "$DEBIAN_CODENAME" = "trixie" ]; then
fetch_pkg="neofetch"
else
fetch_pkg="fastfetch" fetch_pkg="fastfetch"
else
fetch_pkg="neofetch"
fi
local comp_pkgs
if [ "$DEBIAN_CODENAME" = "trixie" ]; then
comp_pkgs="7zip 7zip-rar"
else
comp_pkgs="p7zip-full p7zip-rar"
fi fi
_msg "Essential Pack" \ _msg "Essential Pack" \
"Install basic programs:\n\n - Compression (zip, unrar, 7z)\n - System tools (htop, inxi, ${fetch_pkg}, $(_is_headless || echo "VLC"))\n - Microsoft fonts" 13 60 "Install basic programs:\n\n - Compression (zip, unrar, 7z)\n - System tools (htop, inxi, ${fetch_pkg})\n - Networking (curl, wget, ufw)\n - CA certs & GPG\n - VLC media player" 13 60
local quick_pkgs=( local quick_pkgs=(
zip unzip rar unrar p7zip-full p7zip-rar zip unzip rar unrar
"$fetch_pkg" htop inxi ttf-mscorefonts-installer $comp_pkgs
"$fetch_pkg" htop inxi curl wget ufw
ca-certificates gnupg lsb-release
) )
_is_headless || quick_pkgs+=(vlc) _is_headless || quick_pkgs+=(vlc)
_run_install_batch "${quick_pkgs[@]}" _run_install_batch "${quick_pkgs[@]}"
+25
View File
@@ -26,6 +26,25 @@ Version: ${ver:-unknown}"; then
fi fi
} }
# ── Joplin (extrepo, solo Debian 12+) ──
install_joplin() {
if [ "$DEBIAN_VERSION" != "12" ] && [ "$DEBIAN_VERSION" != "13" ]; then
_msg "Joplin" "Joplin via extrepo is only available on\nDebian 12 (Bookworm) and 13 (Trixie)." 10 60
return 1
fi
_ensure_extrepo
if [ ! -f /etc/apt/sources.list.d/extrepo_joplin.sources ]; then
_run_cmd "Joplin" "sudo extrepo enable joplin" "Enabling Joplin repository..."
fi
_run_cmd "APT Update" "sudo apt update" "Updating package lists..."
if ! is_installed "joplin"; then
_run_cmd "Joplin" "sudo apt install -y joplin" "Installing Joplin..."
echo -e "${GREEN}Joplin installed.${NC}"
else
echo "Joplin already installed."
fi
}
# ── LibreOffice (backports) ── # ── LibreOffice (backports) ──
install_libreoffice_bpo() { install_libreoffice_bpo() {
if [ "$DEBIAN_VERSION" != "12" ] && [ "$DEBIAN_VERSION" != "13" ]; then if [ "$DEBIAN_VERSION" != "12" ] && [ "$DEBIAN_VERSION" != "13" ]; then
@@ -68,6 +87,11 @@ _cat_office() {
"onlyoffice" "OnlyOffice Desktop Editors (extrepo)" OFF "onlyoffice" "OnlyOffice Desktop Editors (extrepo)" OFF
"libreoffice" "LibreOffice (backports on Bookworm/Trixie)" OFF "libreoffice" "LibreOffice (backports on Bookworm/Trixie)" OFF
) )
if [ "$DEBIAN_VERSION" = "12" ] || [ "$DEBIAN_VERSION" = "13" ]; then
items+=(
"joplin" "Joplin note-taking (extrepo)" OFF
)
fi
fi fi
local item_count=${#items[@]} local item_count=${#items[@]}
@@ -84,6 +108,7 @@ _cat_office() {
case $pkg in case $pkg in
onlyoffice) install_onlyoffice ;; onlyoffice) install_onlyoffice ;;
libreoffice) install_libreoffice_bpo ;; libreoffice) install_libreoffice_bpo ;;
joplin) install_joplin ;;
esac esac
done done
} }
+8 -1
View File
@@ -10,12 +10,19 @@ _cat_software_centers() {
local de_type local de_type
de_type=$(_detect_desktop_type) de_type=$(_detect_desktop_type)
local sc_choice local sc_choice
sc_choice=$(_menu "Software Centers" "Choose a software store to install:" 12 65 2 \ sc_choice=$(_menu "Software Centers" "Choose a software store to install:" 12 65 3 \
"gnome-software" "Software Center for GNOME" \ "gnome-software" "Software Center for GNOME" \
"plasma-discover" "Software manager for Plasma" \ "plasma-discover" "Software manager for Plasma" \
"synaptic" "Classic APT package manager (GTK)" \
) )
[ -z "$sc_choice" ] && return [ -z "$sc_choice" ] && return
if [ "$sc_choice" = "synaptic" ]; then
_run_cmd "Install" "sudo apt install -y synaptic" "Installing synaptic..."
echo -e "${GREEN}synaptic installed.${NC}"
return
fi
if { [ "$de_type" = "qt" ] && [ "$sc_choice" = "gnome-software" ]; } || \ if { [ "$de_type" = "qt" ] && [ "$sc_choice" = "gnome-software" ]; } || \
{ [ "$de_type" = "gtk" ] && [ "$sc_choice" = "plasma-discover" ]; }; then { [ "$de_type" = "gtk" ] && [ "$sc_choice" = "plasma-discover" ]; }; then
_msg "Warning" "Warning: This store requires extra background libraries \ _msg "Warning" "Warning: This store requires extra background libraries \
+6 -4
View File
@@ -40,6 +40,7 @@ _cat_general() {
local fwupd_state; fwupd_state=$(_state "fwupd") local fwupd_state; fwupd_state=$(_state "fwupd")
local htop_state; htop_state=$(_state "htop") local htop_state; htop_state=$(_state "htop")
local inxi_state; inxi_state=$(_state "inxi") local inxi_state; inxi_state=$(_state "inxi")
local jq_state; jq_state=$(_state "jq")
local kvm_state; kvm_state=$(_state "virt-manager") local kvm_state; kvm_state=$(_state "virt-manager")
local lshw_state; lshw_state=$(_state "lshw") local lshw_state; lshw_state=$(_state "lshw")
local mc_state; mc_state=$(_state "mc") local mc_state; mc_state=$(_state "mc")
@@ -59,6 +60,7 @@ _cat_general() {
"fwupd" "Firmware update daemon" "$fwupd_state" "fwupd" "Firmware update daemon" "$fwupd_state"
"htop" "Interactive process viewer" "$htop_state" "htop" "Interactive process viewer" "$htop_state"
"inxi" "System information tool" "$inxi_state" "inxi" "System information tool" "$inxi_state"
"jq" "JSON command-line processor" "$jq_state"
"kvm" "QEMU/KVM virtualization" "$kvm_state" "kvm" "QEMU/KVM virtualization" "$kvm_state"
"lshw" "List hardware details" "$lshw_state" "lshw" "List hardware details" "$lshw_state"
"mc" "Midnight Commander (file manager)" "$mc_state" "mc" "Midnight Commander (file manager)" "$mc_state"
@@ -69,27 +71,27 @@ _cat_general() {
"wine" "Windows compatibility layer" "$wine_state" "wine" "Windows compatibility layer" "$wine_state"
) )
if ! $headless; then if ! $headless; then
local alacritty_state; alacritty_state=$(_state "alacritty") local bleachbit_state; bleachbit_state=$(_state "bleachbit")
local conky_state; conky_state=$(_state "conky") local conky_state; conky_state=$(_state "conky")
local gdebi_state; gdebi_state=$(_state "gdebi")
local corectrl_state; corectrl_state=$(_state "corectrl") local corectrl_state; corectrl_state=$(_state "corectrl")
local dcgtk_state; dcgtk_state=$(_state "doublecmd-gtk") local dcgtk_state; dcgtk_state=$(_state "doublecmd-gtk")
local dcqt_state; dcqt_state=$(_state "doublecmd-qt") local dcqt_state; dcqt_state=$(_state "doublecmd-qt")
local disks_state; disks_state=$(_state "gnome-disk-utility") local disks_state; disks_state=$(_state "gnome-disk-utility")
local gparted_state; gparted_state=$(_state "gparted") local gparted_state; gparted_state=$(_state "gparted")
local hardinfo_state; hardinfo_state=$(_state "hardinfo") local hardinfo_state; hardinfo_state=$(_state "hardinfo")
local kitty_state; kitty_state=$(_state "kitty")
local psensor_state; psensor_state=$(_state "psensor") local psensor_state; psensor_state=$(_state "psensor")
local timeshift_state; timeshift_state=$(_state "timeshift") local timeshift_state; timeshift_state=$(_state "timeshift")
items+=( items+=(
"alacritty" "GPU-accelerated terminal" "$alacritty_state" "bleachbit" "System cleaner (GUI)" "$bleachbit_state"
"conky" "System monitor for desktop" "$conky_state" "conky" "System monitor for desktop" "$conky_state"
"gdebi" "Install .deb packages with deps" "$gdebi_state"
"corectrl" "AMD GPU control (CoreCtrl)" "$corectrl_state" "corectrl" "AMD GPU control (CoreCtrl)" "$corectrl_state"
"doublecmd-gtk" "Dual-panel file manager (GTK)" "$dcgtk_state" "doublecmd-gtk" "Dual-panel file manager (GTK)" "$dcgtk_state"
"doublecmd-qt" "Dual-panel file manager (Qt)" "$dcqt_state" "doublecmd-qt" "Dual-panel file manager (Qt)" "$dcqt_state"
"gnome-disk-utility" "Disk management GUI" "$disks_state" "gnome-disk-utility" "Disk management GUI" "$disks_state"
"gparted" "GNOME partition editor" "$gparted_state" "gparted" "GNOME partition editor" "$gparted_state"
"hardinfo" "Graphical system profiler" "$hardinfo_state" "hardinfo" "Graphical system profiler" "$hardinfo_state"
"kitty" "GPU-based terminal emulator" "$kitty_state"
"psensor" "Hardware temperature monitor" "$psensor_state" "psensor" "Hardware temperature monitor" "$psensor_state"
"timeshift" "System restore snapshots" "$timeshift_state" "timeshift" "System restore snapshots" "$timeshift_state"
) )
+43
View File
@@ -0,0 +1,43 @@
#!/usr/bin/env bash
# terminals.sh — Terminal emulators
_cat_terminals() {
local headless=false
_is_headless && headless=true
if $headless; then
echo "Terminals require a GUI — skipping."
return
fi
local -a items=()
for t in kitty deepin-terminal gnome-terminal lxterminal mate-terminal \
qterminal xfce4-terminal konsole terminator guake cool-retro-term \
tilix yakuake terminology rxvt-unicode xterm; do
items+=("$t" "" "$(_state "$t")")
done
if [ "$DEBIAN_VERSION" = "12" ] || [ "$DEBIAN_VERSION" = "13" ]; then
items+=("alacritty" "" "$(_state alacritty)")
fi
if [ "$DEBIAN_VERSION" = "13" ]; then
items+=("blackbox-terminal" "" "$(_state blackbox-terminal)")
items+=("ptyxis" "" "$(_state ptyxis)")
fi
local item_count=${#items[@]}
local lista_alto=$((item_count > TUI_ALTO_LISTA ? TUI_ALTO_LISTA : item_count))
local choices
choices=$(_checklist "Terminals" "Select terminal emulators${SCROLL_HINT}:" \
$TUI_ALTO $TUI_ANCHO $lista_alto "${items[@]}")
clear
[ -z "$choices" ] && return
for pkg in $(echo "$choices" | tr -d '"'); do
if ! is_installed "$pkg"; then
_run_install "$pkg"
else
echo "$pkg already installed."
fi
done
echo -e "${GREEN}Terminals installed.${NC}"
}
+2
View File
@@ -8,6 +8,7 @@ _cat_customization() {
"2" "Icon Themes" \ "2" "Icon Themes" \
"3" "Cursor Themes" \ "3" "Cursor Themes" \
"4" "Fonts" \ "4" "Fonts" \
"5" "Terminals" \
) )
[ -z "$sub" ] && return [ -z "$sub" ] && return
case $sub in case $sub in
@@ -15,5 +16,6 @@ _cat_customization() {
2) _cat_icons ;; 2) _cat_icons ;;
3) _cat_cursors ;; 3) _cat_cursors ;;
4) _cat_fonts ;; 4) _cat_fonts ;;
5) _cat_terminals ;;
esac esac
} }
+1 -1
View File
@@ -54,7 +54,7 @@ install_gaming() {
choices=$(_checklist "Gaming Setup" \ choices=$(_checklist "Gaming Setup" \
"Select gaming packages to install${SCROLL_HINT}:" $TUI_ALTO $TUI_ANCHO $TUI_ALTO_LISTA \ "Select gaming packages to install${SCROLL_HINT}:" $TUI_ALTO $TUI_ANCHO $TUI_ALTO_LISTA \
"steam" "Steam (requires 32-bit support)" ON \ "steam" "Steam (requires 32-bit support)" ON \
"gamemode" "Game performance optimization" ON \ "gamemode" "Game performance optimization" OFF \
"mangohud" "Performance overlay (Vulkan/OpenGL)" ON \ "mangohud" "Performance overlay (Vulkan/OpenGL)" ON \
"goverlay" "MangoHud config GUI" ON \ "goverlay" "MangoHud config GUI" ON \
"heroic" "Heroic Launcher (Epic/GOG)" OFF \ "heroic" "Heroic Launcher (Epic/GOG)" OFF \
+91 -59
View File
@@ -1,5 +1,5 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# Graphics Stack — sources submodules and provides install_gpu_drivers() # Graphics Stack — sources submodules, provides AMD/Intel and NVIDIA top-level functions
_GPU_DIR="${MODULES_DIR}/gpu" _GPU_DIR="${MODULES_DIR}/gpu"
source "${_GPU_DIR}/_helpers.sh" source "${_GPU_DIR}/_helpers.sh"
@@ -9,8 +9,7 @@ source "${_GPU_DIR}/nvidia.sh"
# Consumed by gaming.sh to know which NVIDIA driver path was taken # Consumed by gaming.sh to know which NVIDIA driver path was taken
NVIDIA_DRIVER_MODE="" NVIDIA_DRIVER_MODE=""
install_gpu_drivers() { _install_amd_intel_stack() {
# ── Unknown GPU / VM block ──
if [ "$GPU_TYPE" = "unknown" ] || [ -z "$GPU_TYPE" ]; then if [ "$GPU_TYPE" = "unknown" ] || [ -z "$GPU_TYPE" ]; then
local mesa_pkgs=(mesa-vulkan-drivers libgl1-mesa-dri libglx-mesa0 libegl-mesa0 mesa-va-drivers) local mesa_pkgs=(mesa-vulkan-drivers libgl1-mesa-dri libglx-mesa0 libegl-mesa0 mesa-va-drivers)
local ref_ver local ref_ver
@@ -50,9 +49,7 @@ install_gpu_drivers() {
return return
fi fi
# ── Detectable GPU: build plan ── local plan="The script has detected your graphics hardware.\n\n"
local plan="The script has automatically detected your graphics hardware\n"
plan+="and prepared a personalized installation plan.\n\n"
plan+="Detected GPUs:\n" plan+="Detected GPUs:\n"
local gpu_count=0 local gpu_count=0
while IFS= read -r gpu_line; do while IFS= read -r gpu_line; do
@@ -70,10 +67,7 @@ install_gpu_drivers() {
if $HAS_AMD; then if $HAS_AMD; then
plan+=" [+] AMD firmware (firmware-amd-graphics)\n" plan+=" [+] AMD firmware (firmware-amd-graphics)\n"
fi fi
if $HAS_NVIDIA; then plan+=" [+] Mesa (OpenGL/Vulkan/VA-API)\n"
plan+=" [+] NVIDIA driver (proprietary)\n"
fi
plan+=" [+] Mesa (version selected in next step)\n"
_msg "Graphics Stack — Plan" "$plan" 16 70 _msg "Graphics Stack — Plan" "$plan" 16 70
@@ -82,77 +76,115 @@ install_gpu_drivers() {
return return
fi fi
# ── Sequential firmware / driver installs ──
if $HAS_INTEL; then if $HAS_INTEL; then
install_intel_firmware install_intel_firmware
fi fi
if $HAS_AMD; then if $HAS_AMD; then
install_amd_firmware install_amd_firmware
fi fi
if $HAS_NVIDIA; then
if [ "$DEBIAN_VERSION" = "11" ]; then
if type install_nvidia_bullseye &>/dev/null; then
install_nvidia_bullseye
else
install_nvidia_driver
fi
elif [ "$DEBIAN_VERSION" = "12" ]; then
if [ "$(is_nvidia_kepler)" = "true" ]; then
if type _install_nvidia_bookworm_kepler &>/dev/null; then
_install_nvidia_bookworm_kepler
else
install_nvidia_driver
fi
elif [ "$(is_nvidia_fermi)" = "true" ]; then
_msg "NVIDIA Fermi — Bookworm" \
"Fermi GPUs (GF1xx) are not supported\nin Debian 12 (Bookworm).\nThe nvidia-legacy-390xx driver is\nnot available in this version.\n\nNo NVIDIA driver will be installed."
NVIDIA_DRIVER_MODE=""
else
install_nvidia_driver
fi
elif [ "$DEBIAN_VERSION" = "13" ]; then
if [ "$(is_nvidia_kepler)" = "true" ] || [ "$(is_nvidia_fermi)" = "true" ]; then
_msg "NVIDIA — Trixie" \
"Kepler and Fermi GPUs are not supported\nin Debian 13 (Trixie).\n\nThe nvidia-legacy drivers are not available\nin this version of Debian.\n\nNo NVIDIA driver will be installed."
NVIDIA_DRIVER_MODE=""
else
install_nvidia_driver
fi
else
install_nvidia_driver
fi
fi
# ── Mesa (once) ──
_install_mesa_backports _install_mesa_backports
# ── Refresh GPU_VERSION after Mesa install ──
local mesa_ver local mesa_ver
mesa_ver=$(dpkg -l libgl1-mesa-dri 2>/dev/null | awk '/^ii/ {print $3; exit}' | sed 's/-.*//') mesa_ver=$(dpkg -l libgl1-mesa-dri 2>/dev/null | awk '/^ii/ {print $3; exit}' | sed 's/-.*//')
[ -n "$mesa_ver" ] && GPU_VERSION="Mesa ${mesa_ver}" [ -n "$mesa_ver" ] && GPU_VERSION="Mesa ${mesa_ver}"
# ── Vendor-specific tools ──
if $HAS_INTEL; then if $HAS_INTEL; then
offer_intel_tools offer_intel_tools
fi fi
if $HAS_AMD; then if $HAS_AMD; then
offer_amd_tools offer_amd_tools
fi fi
if $HAS_NVIDIA; then if ! $HAS_INTEL && ! $HAS_AMD; then
offer_generic_tools offer_generic_tools
fi fi
# ── Build summary ── local summary="Mesa: ${GPU_VERSION:-not available}\n"
local summary=""
summary+="Mesa: ${GPU_VERSION:-not available}\n"
if $HAS_NVIDIA; then
local nv_mode="${NVIDIA_DRIVER_MODE:-unknown}"
summary+="NVIDIA: ${nv_mode}\n"
fi
summary+="Firmware: installed for detected GPUs\n" summary+="Firmware: installed for detected GPUs\n"
summary+="Tools: installed per vendor selection" summary+="Tools: installed per vendor"
_msg "Graphics Stack — Complete" "$summary" 12 65 _msg "Graphics Stack — Complete" "$summary" 12 65
} }
_install_nvidia_stack() {
if ! $HAS_NVIDIA; then
_msg "NVIDIA Not Found" "No NVIDIA GPU was detected.\n\nPlease check your hardware and try again." 10 60
return
fi
local plan="The script has detected your NVIDIA GPU.\n\n"
plan+="Detected GPUs:\n"
local gpu_count=0
while IFS= read -r gpu_line; do
gpu_count=$((gpu_count + 1))
local desc
desc=$(echo "$gpu_line" | sed -E 's/.*: //; s/ *\(rev.*//')
plan+=" GPU ${gpu_count}: ${desc}\n"
done < <(lspci -nn | grep -E "VGA|3D" || true)
plan+="\nPlanned:\n [+] NVIDIA proprietary driver"
_msg "NVIDIA Stack — Plan" "$plan" 14 65
if ! _confirm "NVIDIA Stack" "Install the NVIDIA proprietary driver?"; then
echo "Skipping NVIDIA driver installation."
return
fi
NVIDIA_DRIVER_MODE=""
if [ "$DEBIAN_VERSION" = "11" ]; then
install_nvidia_bullseye
elif [ "$DEBIAN_VERSION" = "12" ]; then
if [ "$(is_nvidia_kepler)" = "true" ]; then
if type _install_nvidia_bookworm_kepler &>/dev/null; then
_install_nvidia_bookworm_kepler
else
_install_nvidia_standard
fi
elif [ "$(is_nvidia_fermi)" = "true" ]; then
_msg "NVIDIA Fermi — Bookworm" \
"Fermi GPUs (GF1xx) are not supported\nin Debian 12 (Bookworm).\nThe nvidia-legacy-390xx driver is\nnot available in this version.\n\nNo NVIDIA driver will be installed."
NVIDIA_DRIVER_MODE=""
elif [ "$(is_backports_kernel)" = "true" ]; then
_install_nvidia_bookworm_bpo
else
_install_nvidia_standard
fi
elif [ "$DEBIAN_VERSION" = "13" ]; then
if [ "$(is_nvidia_blackwell)" = "true" ]; then
_install_nvidia_cuda_repo
elif [ "$(is_nvidia_kepler)" = "true" ] || [ "$(is_nvidia_fermi)" = "true" ]; then
_msg "NVIDIA — Trixie" \
"Kepler and Fermi GPUs are not supported\nin Debian 13 (Trixie).\n\nThe nvidia-legacy drivers are not available\nin this version of Debian.\n\nNo NVIDIA driver will be installed."
NVIDIA_DRIVER_MODE=""
elif [ "$(is_backports_kernel)" = "true" ]; then
if [ "$(is_nvidia_maxwell)" = "true" ] || [ "$(is_nvidia_pascal)" = "true" ]; then
local gpu_gen="Maxwell"
[ "$(is_nvidia_pascal)" = "true" ] && gpu_gen="Pascal"
_msg "NVIDIA — Trixie + Backports" \
"INCOMPATIBILITY DETECTED: Your NVIDIA ${gpu_gen} GPU\n\
is NOT supported by the modern v590 driver.\n\n\
To run NVIDIA safely on Debian 13 (Trixie), you MUST use\n\
the official Debian v550 driver, which requires the\n\
standard STABLE Kernel.\n\n\
Forcing the stable driver path." 14 70
_install_nvidia_standard
NVIDIA_DRIVER_MODE="stable"
else
_install_nvidia_cuda_repo
fi
else
_install_nvidia_standard
fi
else
_install_nvidia_standard
fi
if [ -n "$NVIDIA_DRIVER_MODE" ]; then
offer_generic_tools
local summary="NVIDIA: ${NVIDIA_DRIVER_MODE}\n"
summary+="Tools: nvtop + vainfo"
_msg "NVIDIA Stack — Complete" "$summary" 10 55
fi
}
+1
View File
@@ -5,6 +5,7 @@
# CASE B : Bookworm + backports kernel → Debian backports (-t bookworm-backports) # CASE B : Bookworm + backports kernel → Debian backports (-t bookworm-backports)
# CASE C : Kernel stable (any distro) → Debian stable (optional backports) # CASE C : Kernel stable (any distro) → Debian stable (optional backports)
# --- DEPRECATED (Replaced by _install_nvidia_stack in gpu.sh) ---
install_nvidia_driver() { install_nvidia_driver() {
echo -e "${YELLOW}NVIDIA GPU detected.${NC}" echo -e "${YELLOW}NVIDIA GPU detected.${NC}"
NVIDIA_DRIVER_MODE="" NVIDIA_DRIVER_MODE=""
+8
View File
@@ -374,8 +374,12 @@ popular software (like gaming platforms and proprietary tools)." 12 60; then
_pause _pause
return return
fi fi
if [ "$DEBIAN_VERSION" = "11" ]; then
components="main contrib non-free"
else
components="main contrib non-free non-free-firmware" components="main contrib non-free non-free-firmware"
fi fi
fi
bp_enabled=false bp_enabled=false
bp_location="none" bp_location="none"
@@ -398,6 +402,10 @@ popular software (like gaming platforms and proprietary tools)." 12 60; then
cleanup_repo_backup cleanup_repo_backup
echo -e "${GREEN}Repository components configured.${NC}" echo -e "${GREEN}Repository components configured.${NC}"
_repos_offer_upgrade _repos_offer_upgrade
echo -e "${GREEN}Cleaning old packages...${NC}"
sudo apt autoremove -y
sudo apt autoclean
echo -e "${GREEN}System packages cleaned.${NC}"
else else
restore_previous_repos restore_previous_repos
echo -e "${RED}apt update failed. Previous configuration restored.${NC}" echo -e "${RED}apt update failed. Previous configuration restored.${NC}"
+3 -3
View File
@@ -13,10 +13,10 @@ install_zram() {
local algo local algo
algo=$(_menu "ZRAM Configuration" \ algo=$(_menu "ZRAM Configuration" \
"ZRAM creates a compressed block device in RAM to use as swap. This reduces disk I/O and can significantly improve responsiveness on systems with limited memory (e.g., 4GB RAM or less), at the cost of a small amount of CPU usage." \ "ZRAM creates a compressed swap device in RAM to reduce disk I/O and boost speed. Data is stored compressed in memory. Choose an algorithm below to balance CPU usage and compression ratio:" \
$TUI_ALTO $TUI_ANCHO $TUI_ALTO_LISTA \ $TUI_ALTO $TUI_ANCHO $TUI_ALTO_LISTA \
"lz4" "Fastest compression/decompression. Lowest CPU overhead. (Default)" \ "lz4" "Fastest compression. Lowest CPU overhead. (Default)" \
"zstd" "Higher compression ratio. Saves slightly more memory but uses more CPU.") "zstd" "Higher compression ratio. Saves more RAM, uses more CPU.")
if [ -z "$algo" ]; then if [ -z "$algo" ]; then
echo "ZRAM configuration cancelled." echo "ZRAM configuration cancelled."