add Debian 11 support

- Created dedicated modules/bullseye/` folder for legacy isolation (Debian 11 support).
- Implemented 4-block inclusive PCI range detection for Nvidia Kepler/Fermi to prevent black screens.
- Centralized system time verification checking against year 2026 before APT execution.
- Cleaned and purged modern package lists for the Bullseye extra software module.
- Updated main menu with conditional sourcing and fixed Option 7 (Gaming Lite) for Bullseye.
- Updated README.md with explicit TUI navigation instructions and full repository directory tree mapping.
This commit is contained in:
stornic56
2026-06-11 17:22:11 -05:00
committed by GitHub
parent ba72875960
commit 656f045163
10 changed files with 963 additions and 70 deletions
+52 -45
View File
@@ -2,7 +2,7 @@
<div align="center">
Debianito is a user-friendly post-installation automation script for Debian 12 (Bookworm) and Debian 13 (Trixie). It streamlines system configuration, driver installation (including NVIDIA drivers), repository setup with backports support, gaming tools integration, and more with an interactive menu-driven interface.
Debianito is a user-friendly post-installation automation script for Debian 11 (Bullseye), Debian 12 (Bookworm) and Debian 13 (Trixie). It streamlines system configuration, driver installation (including NVIDIA drivers with legacy support via rescue environment), repository setup with backports support, gaming tools integration, and more with an interactive menu-driven interface.
[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-red.svg?style=for-the-badge&logo=gnu&logoColor=white)](https://github.com/stornic56/debianito-post-install/blob/main/LICENSE)
@@ -14,8 +14,8 @@ Debianito is a user-friendly post-installation automation script for Debian 12 (
| Requirement | Specification |
|-------------|---------------|
| **OS** | Debian 12 (Bookworm), Debian 13 (Trixie) |
| **Privileges** | Normal user with `sudo` access, script validates root/sudo in `utils.sh`|
| **OS** | Debian 11 (Bullseye), Debian 12 (Bookworm), Debian 13 (Trixie) |
| **Privileges** | Normal user with `sudo` access, script validates root/sudo in utils.sh |
| **Terminal** | Any modern terminal emulator supporting ANSI colors and UTF-8 box-drawing characters |
| **Dependencies** | Standard Debian packages (`whiptail`, `lsb-release`); auto-installed if missing |
@@ -39,10 +39,11 @@ chmod +x debianito.sh && ./debianito.sh
After running the script:
1. **Select Option:** Use arrow keys or type `1-10`.
2. **Confirm Actions:** Installation prompts use `whiptail` for TUI confirmations.
3. **Review System Info:** Header displays detected Debian version `DEBIAN_CODENAME`, `DEBIAN_VERSION` and hardware summary before each action.
4. **Repeat as Needed:** Return to main menu at any time or exit when done.
1. **Select Option:** Use arrow keys or type 1-10.
2. **Navigation:** Use Arrow Keys (Up↑/Down↓) to move between list options and ENTER key to confirm selection.
3. **Confirm Actions:** Installation prompts use whiptail for TUI confirmations.
4. **Review System Info:** Header displays detected Debian version and hardware summary before each action.
5. **Repeat as Needed:** Return to main menu at any time or exit when done.
| Option | Description | What it does |
|--------|-------------|--------------|
@@ -87,44 +88,50 @@ The submenu offers 11 categories:
```bash
├── debianito.sh # Main entry point; TUI menu + system detection
── modules/
├── utils.sh # System info helpers: CPU/RAM/GPU/WiFi detection, Debian version check ([`detect_debian_version()`](utils.sh#L79))
├── sudo_config.sh # User group + pwfeedback setup
├── repos.sh # Repository configuration (deb822/classic format) with backup/restore
├── firmware.sh # WiFi microcode and chipset-specific support via [`firmware-linux-nonfree`](modules/firmware.sh)
├── gpu.sh # AMD/Intel/NVIDIA driver handling ([`detect_gpu()`](utils.sh#L168)); NVIDIA Kepler/Turing detection veto (line 203+)
├── kernel.sh # Update Kernel to Backports with NVIDIA compatibility warnings
├── gaming.sh # Steam, GameMode, MangoHud, Heroic Games Launcher
├── extras.sh # Dispatcher for the "Extras" submenu (Option 9)
├── zram.sh # ZRAM compressed swap configuration
└── extras/ # Category modules organized by function
├── _helpers.sh # Shared helpers: [`_inst()`](utils.sh#L418), [`_state()`] for package management
├── essential/ # Essential Pack (compression, system info, VLC, MS fonts)
── essential.sh # One-click essentials installation
├── system/ # System Tools (htop, btop, ncdu, timeshift, tmux, flatpak, extrepo, virtualization tools)
│ └── system.sh # 25+ system utility packages
── dev/ # Development & Servers (Docker, Nginx/Apache, PostgreSQL/MariaDB, SSH, fail2ban, Python)
│ └── dev.sh # 15 development/server tools
├── players/ # Media Players (VLC, MPV)
│ └── players.sh # Video player packages
├── internet/ # Internet: Firefox (Mozilla), LibreWolf, Floorp, Chromium, Thunderbird, Riseup VPN, Tor Browser
│ └── internet.sh # Browsers, email clients, VPN tools
├── themes/ # Customization submenu with 4 options
── themes.sh # Submenu dispatcher for customization categories
├── desktop-themes/ # Desktop Themes (GTK/KDE): Arc, Numix, Breeze GTK, Bluebird, Blackbird, Greybird, Orchis
│ └── desktop-themes.sh
├── icons/ # Icon Themes: Papirus, Numix, Elementary, Deepin, Suru, Obsidian, Breeze, Moka
│ └── icons.sh # 11-12 icon theme packages
├── cursors/ # Cursor Themes: Bibata, Breeze, Chameleon, DMZ, XCursor, Oxygen
│ └── cursors.sh # 6 cursor theme packages
── fonts/ # Fonts: Bebas Neue, Anonymous Pro, ADF Verana, 3270, Liberation, MS Core, Ubuntu, Recommended
└── fonts.sh # 8 font packages including MS Core fonts
├── fetch/ # Fetch Tools (Neofetch/Fastfetch, hyfetch, Linux logo, Screenfetch)
│ └── fetch.sh # System info display tools
├── download/ # Downloaders & Torrent Clients: aria2, ytdlp, FileZilla, qBittorrent, Deluge, Transmission, mktorrent
│ └── download.sh # Download manager + torrent client packages
└── design/ # Multimedia & Design (GIMP, Kdenlive, Blender, OBS Studio, Audacity, Inkscape, HandBrake)
└── design.sh # 12+ creative applications
── modules/
├── utils.sh # System info helpers: CPU/RAM/GPU/WiFi detection, Debian version check ([`detect_debian_version()`](utils.sh#L79))
├── sudo_config.sh # User group + pwfeedback setup
├── repos.sh # Repository configuration (deb822/classic format) with backup/restore
├── firmware.sh # WiFi microcode and chipset-specific support via [`firmware-linux-nonfree`](modules/firmware.sh)
├── gpu.sh # AMD/Intel/NVIDIA driver handling ([`detect_gpu()`](utils.sh#L168)); NVIDIA Kepler/Turing detection veto (line 203+)
├── kernel.sh # Update Kernel to Backports with NVIDIA compatibility warnings
├── gaming.sh # Steam, GameMode, MangoHud, Heroic Games Launcher
├── zram.sh # ZRAM compressed swap configuration
├── gpu/ # NVIDIA-specific modules for Debian 12+ (Bookworm/Trixie)
│ ├── _helpers.sh # Shared helpers including [`is_nvidia_kepler()`](gpu/_helpers.sh#LXX) with four isolated blocks for legacy detection
└── nvidia.sh # NVIDIA driver installation ([`_install_nvidia_bookworm_kepler()`](gpu/nvidia.sh#LXX))
├── bullseye/ # Legacy support modules for Debian 11 (Bullseye) with ultra-minimalist rescue environment
── legacy.sh # Fermi GPU detection (NVIDIA-390xx drivers), [install_gaming_bullseye](bullseye/legacy.sh#LXX) function
├── repos.sh # Classic `/etc/apt/sources.list` format with Archive Phase 2026 configuration
│ └── extras.sh # Utilities installation with purged package list for unavailable packages on Debian 11
── extras/ # Category modules organized by function (Option 9 submenu)
├── _helpers.sh # Shared helpers: [`_inst()`](utils.sh#L418), [`_state()`] for package management
├── essential/ # Essential Pack (compression, system info, VLC, MS fonts)
│ └── essential.sh # One-click essentials installation
├── system/ # System Tools (htop, btop, ncdu, timeshift, tmux, flatpak, extrepo, virtualization tools)
│ └── system.sh # 25+ system utility packages
├── dev/ # Development & Servers (Docker, Nginx/Apache, PostgreSQL/MariaDB, SSH, fail2ban, Python)
── dev.sh # 15 development/server tools
├── players/ # Media Players (VLC, MPV)
└── players.sh # Video player packages
├── internet/ # Internet: Firefox (Mozilla), LibreWolf, Floorp, Chromium, Thunderbird, Riseup VPN, Tor Browser
│ └── internet.sh # Browsers, email clients, VPN tools
├── themes/ # Customization submenu with 4 options
├── themes.sh # Submenu dispatcher for customization categories
── desktop-themes/ # Desktop Themes (GTK/KDE): Arc, Numix, Breeze GTK, Bluebird, Blackbird, Greybird, Orchis
└── desktop-themes.sh
├── icons/ # Icon Themes: Papirus, Numix, Elementary, Deepin, Suru, Obsidian, Breeze, Moka
│ └── icons.sh # 11-12 icon theme packages
├── cursors/ # Cursor Themes: Bibata, Breeze, Chameleon, DMZ, XCursor, Oxygen
│ └── cursors.sh # 6 cursor theme packages
└── fonts/ # Fonts: Bebas Neue, Anonymous Pro, ADF Verana, 3270, Liberation, MS Core, Ubuntu, Recommended
└── fonts.sh # 8 font packages including MS Core fonts
│ ├── fetch/ # Fetch Tools (Neofetch/Fastfetch, hyfetch, Linux logo, Screenfetch)
│ │ └── fetch.sh # System info display tools
│ ├── download/ # Downloaders & Torrent Clients: aria2, ytdlp, FileZilla, qBittorrent, Deluge, Transmission, mktorrent
│ │ └── download.sh # Download manager + torrent client packages
│ └── design/ # Multimedia & Design (GIMP, Kdenlive, Blender, OBS Studio, Audacity, Inkscape, HandBrake)
│ └── design.sh # 12+ creative applications
```
> 🤖 **AI-Assisted Development Note**
+51 -5
View File
@@ -25,6 +25,13 @@ source "${MODULES_DIR}/repos.sh"
[ -f "${MODULES_DIR}/extras.sh" ] && source "${MODULES_DIR}/extras.sh"
[ -f "${MODULES_DIR}/zram.sh" ] && source "${MODULES_DIR}/zram.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=""
@@ -58,13 +65,46 @@ main_menu() {
case "$choice" in
1) _show_sysinfo ;;
2) config_sudo || true ;;
3) configure_repos || true ;;
4) install_firmware || true ;;
3)
if [ "$DEBIAN_VERSION" = "11" ] && type configure_repos_bullseye &>/dev/null; then
configure_repos_bullseye || true
else
configure_repos || true
fi
;;
4)
if [ "$DEBIAN_VERSION" = "11" ] && type install_firmware_bullseye &>/dev/null; then
install_firmware_bullseye || true
else
install_firmware || true
fi
;;
5) install_gpu_drivers || true ;;
6) install_kernel_backports || true ;;
7) install_gaming || true ;;
6)
if [ "$DEBIAN_VERSION" = "11" ]; then
_msg "Not Available" \
"Backports Kernel is not available on Debian 11 Bullseye.\n\n\
Ultra Minimalist Rescue Mode does not include third-party\n\
kernels. Use the stable kernel provided by Bullseye." 10 60
else
install_kernel_backports || true
fi
;;
7)
if [ "$DEBIAN_VERSION" = "11" ] && type install_gaming_bullseye &>/dev/null; then
install_gaming_bullseye || true
else
install_gaming || true
fi
;;
8) install_zram || true ;;
9) install_extras || true ;;
9)
if [ "$DEBIAN_VERSION" = "11" ] && type install_extras_bullseye &>/dev/null; then
install_extras_bullseye || true
else
install_extras || true
fi
;;
10) echo "Exiting."; exit 0 ;;
esac
done
@@ -97,6 +137,7 @@ Network: ${network_info}" 13 65
check_root
check_sudo
check_system_time
sync_system_time
detect_debian_version
detect_cpu_ram
@@ -104,4 +145,9 @@ detect_kernel
detect_gpu
detect_network
# ── Bullseye-specific init (archive phase) ──
if [ "$DEBIAN_VERSION" = "11" ] && type check_bullseye_archive_phase &>/dev/null; then
check_bullseye_archive_phase
fi
main_menu
+475
View File
@@ -0,0 +1,475 @@
#!/usr/bin/env bash
# extras.sh — Bullseye: software purgado / solo repos oficiales
# License GPL v3
# ── Essential Pack (Bullseye) ──
_quick_install_bullseye() {
_msg "Essential Pack — Bullseye" \
"Instalar programas básicos:\n\n\
- Compression (zip, unrar, p7zip-full)\n\
- System tools (htop, inxi, neofetch, bpytop)\n\
- VLC media player\n\
- Microsoft fonts" 13 60
local quick_pkgs=(
zip unzip rar unrar p7zip-full p7zip-rar
neofetch bpytop htop inxi vlc
ttf-mscorefonts-installer
)
_run_install_batch "${quick_pkgs[@]}"
echo -e "${GREEN}Essential Pack installed.${NC}"
}
# ── Firmware (Bullseye) ──
install_firmware_bullseye() {
echo -e "${YELLOW}Installing firmware-linux-nonfree (Bullseye)...${NC}"
if is_installed "firmware-linux-nonfree"; then
echo "firmware-linux-nonfree already installed."
return
fi
local fw_ver
fw_ver=$(apt-cache policy firmware-linux-nonfree 2>/dev/null | awk 'NR==3 {print $2; exit}')
if _confirm "Firmware" \
"firmware-linux-nonfree proporciona drivers para:\n\
WiFi, Bluetooth, GPU, audio, webcams, etc.\n\n\
Version: ${fw_ver:-unknown}\n\n\
Instalar?"; then
_run_cmd "Firmware" "sudo apt install -y firmware-linux-nonfree" \
"Installing firmware-linux-nonfree..."
echo -e "${GREEN}Firmware installed.${NC}"
fi
}
# ======================================================================
# EXTRA SOFTWARE CATEGORIES — Bullseye versions (purged/whitelisted)
# Only packages available in Debian 11 official repos.
# ======================================================================
_cat_customization_bullseye() {
local items=()
if [ -f "${MODULES_DIR}/extras/themes/icons/icons.sh" ]; then
local TUI_ANCHO_REFORZADO=$((TUI_ANCHO + 6))
local sub
sub=$(whiptail --title "Customization (Bullseye)" --menu \
"Select type:" $TUI_ALTO $TUI_ANCHO_REFORZADO $TUI_ALTO_LISTA \
"1" "Desktop Themes (GTK/KDE)" \
"2" "Icon Themes" \
"3" "Cursor Themes" \
"4" "Fonts" \
3>&1 1>&2 2>&3)
[ -z "$sub" ] && return
case $sub in
1) _cat_themes_bullseye ;;
2) _cat_icons_bullseye ;;
3) _cat_cursors_bullseye ;;
4) _cat_fonts_bullseye ;;
esac
else
_msg "Customization" "Themes submodules not found." 8 50
fi
}
_cat_themes_bullseye() {
local theme_state; theme_state=$(_state "breeze")
local numix_state; numix_state=$(_state "numix-gtk-theme")
if [ "$theme_state" = "OFF" ] && [ "$numix_state" = "OFF" ]; then
theme_state="ON"
fi
local choices
choices=$(whiptail --title "Desktop Themes (Bullseye)" --checklist \
"Available themes in Bullseye repos ($TUI_ALTO linea):" \
$TUI_ALTO $TUI_ANCHO $TUI_ALTO_LISTA \
"breeze" "Breeze GTK theme (KDE)$(_inst breeze)" "$theme_state" \
"numix-gtk-theme" "Numix GTK theme$(_inst numix-gtk-theme)" "$numix_state" \
3>&1 1>&2 2>&3)
clear
[ -z "$choices" ] && return
local cleaned; cleaned=$(echo "$choices" | tr -d '"')
for pkg in $cleaned; do
! is_installed "$pkg" && _run_install "$pkg" || echo "$pkg already installed."
done
echo -e "${GREEN}Desktop themes installed.${NC}"
}
_cat_icons_bullseye() {
_msg "Icon Themes (Bullseye)" \
"Adwaita, Humanity, DMZ y otros temas de iconos\n\
están disponibles desde los repos oficiales.\n\n\
Seleccione desde el menú de GNOME/KDE o instale\n\
el paquete 'gnome-icon-theme' o 'breeze-icon-theme'." 12 60
local choices
choices=$(whiptail --title "Icon Themes (Bullseye)" --checklist \
"Available icon themes:" $TUI_ALTO $TUI_ANCHO $TUI_ALTO_LISTA \
"gnome-icon-theme" "GNOME icon theme$(_inst gnome-icon-theme)" "$(_state gnome-icon-theme)" \
"breeze-icon-theme" "Breeze icon theme$(_inst breeze-icon-theme)" "$(_state breeze-icon-theme)" \
"papirus-icon-theme" "Papirus icon theme$(_inst papirus-icon-theme)" "$(_state papirus-icon-theme)" \
3>&1 1>&2 2>&3)
clear
[ -z "$choices" ] && return
local cleaned; cleaned=$(echo "$choices" | tr -d '"')
for pkg in $cleaned; do
! is_installed "$pkg" && _run_install "$pkg" || echo "$pkg already installed."
done
echo -e "${GREEN}Icon themes installed.${NC}"
}
_cat_cursors_bullseye() {
local choices
choices=$(whiptail --title "Cursor Themes (Bullseye)" --checklist \
"Available cursor themes:" $TUI_ALTO $TUI_ANCHO $TUI_ALTO_LISTA \
"dmz-cursor-theme" "DMZ cursor theme$(_inst dmz-cursor-theme)" "$(_state dmz-cursor-theme)" \
"breeze-cursor-theme" "Breeze cursor theme$(_inst breeze-cursor-theme)" "$(_state breeze-cursor-theme)" \
"oxygen-cursor-theme" "Oxygen cursor theme$(_inst oxygen-cursor-theme)" "$(_state oxygen-cursor-theme)" \
3>&1 1>&2 2>&3)
clear
[ -z "$choices" ] && return
local cleaned; cleaned=$(echo "$choices" | tr -d '"')
for pkg in $cleaned; do
! is_installed "$pkg" && _run_install "$pkg" || echo "$pkg already installed."
done
echo -e "${GREEN}Cursor themes installed.${NC}"
}
_cat_fonts_bullseye() {
local choices
choices=$(whiptail --title "Fonts (Bullseye)" --checklist \
"Available fonts:" $TUI_ALTO $TUI_ANCHO $TUI_ALTO_LISTA \
"fonts-firacode" "Fira Code monospace font$(_inst fonts-firacode)" "$(_state fonts-firacode)" \
"fonts-noto" "Noto fonts (Google)$(_inst fonts-noto)" "$(_state fonts-noto)" \
"fonts-dejavu-core" "DejaVu core fonts$(_inst fonts-dejavu-core)" "$(_state fonts-dejavu-core)" \
"ttf-mscorefonts-installer" "Microsoft Core Fonts$(_inst ttf-mscorefonts-installer)" "$(_state ttf-mscorefonts-installer)" \
3>&1 1>&2 2>&3)
clear
[ -z "$choices" ] && return
local cleaned; cleaned=$(echo "$choices" | tr -d '"')
for pkg in $cleaned; do
! is_installed "$pkg" && _run_install "$pkg" || echo "$pkg already installed."
done
echo -e "${GREEN}Fonts installed.${NC}"
}
_cat_download_bullseye() {
local choices
choices=$(whiptail --title "Download & Torrent (Bullseye)" --checklist \
"Select download tools:" $TUI_ALTO $TUI_ANCHO $TUI_ALTO_LISTA \
"aria2" "Multiprotocol downloader (CLI)$(_inst aria2)" "$(_state aria2)" \
"filezilla" "FTP/SFTP client (GUI)$(_inst filezilla)" "$(_state filezilla)" \
"qbittorrent" "BitTorrent client (Qt)$(_inst qbittorrent)" "$(_state qbittorrent)" \
"transmission-gtk" "BitTorrent client (GTK)$(_inst transmission-gtk)" "$(_state transmission-gtk)" \
"transmission-qt" "BitTorrent client (Qt)$(_inst transmission-qt)" "$(_state transmission-qt)" \
"deluge" "BitTorrent client (GTK)$(_inst deluge)" "$(_state deluge)" \
3>&1 1>&2 2>&3)
clear
[ -z "$choices" ] && return
local cleaned; cleaned=$(echo "$choices" | tr -d '"')
for pkg in $cleaned; do
if ! is_installed "$pkg"; then
_run_install "$pkg"
else
echo "$pkg already installed."
fi
done
echo -e "${GREEN}Download tools installed.${NC}"
}
_cat_internet_bullseye() {
local ff_state; ff_state=$(_state "firefox-esr")
local tbird_state; tbird_state=$(_state "thunderbird")
local chr_state; chr_state=$(_state "chromium")
local choices
choices=$(whiptail --title "Internet (Bullseye)" --checklist \
"Select browsers, email:" $TUI_ALTO $TUI_ANCHO $TUI_ALTO_LISTA \
"firefox-esr" "Firefox ESR (official Debian)$(_inst firefox-esr)" "$ff_state" \
"chromium" "Chromium web browser$(_inst chromium)" "$chr_state" \
"thunderbird" "Email client$(_inst thunderbird)" "$tbird_state" \
"dillo" "Lightweight graphical browser$(_inst dillo)" "$(_state dillo)" \
"elinks" "Text-mode web browser$(_inst elinks)" "$(_state elinks)" \
"konqueror" "KDE file manager / web browser$(_inst konqueror)" "$(_state konqueror)" \
"w3m" "Text-mode browser + deps$(_inst w3m)" "$(_state w3m)" \
"torbrowser-launcher" "Tor Browser launcher$(_inst torbrowser-launcher)" "$(_state torbrowser-launcher)" \
3>&1 1>&2 2>&3)
clear
[ -z "$choices" ] && return
local cleaned; cleaned=$(echo "$choices" | tr -d '"')
for pkg in $cleaned; do
if ! is_installed "$pkg"; then
_run_install "$pkg"
else
echo "$pkg already installed."
fi
done
echo -e "${GREEN}Internet tools installed.${NC}"
}
_cat_players_bullseye() {
local choices
choices=$(whiptail --title "Media Players (Bullseye)" --checklist \
"Select media players:" $TUI_ALTO $TUI_ANCHO $TUI_ALTO_LISTA \
"mpv" "Lightweight media player$(_inst mpv)" "$(_state mpv)" \
"vlc" "VLC media player$(_inst vlc)" "$(_state vlc)" \
3>&1 1>&2 2>&3)
clear
[ -z "$choices" ] && return
local cleaned; cleaned=$(echo "$choices" | tr -d '"')
for pkg in $cleaned; do
if ! is_installed "$pkg"; then
_run_install "$pkg"
else
echo "$pkg already installed."
fi
done
echo -e "${GREEN}Media players installed.${NC}"
}
_cat_design_bullseye() {
local choices
choices=$(whiptail --title "Multimedia & Design (Bullseye)" --checklist \
"Select multimedia and design tools:" $TUI_ALTO $TUI_ANCHO $TUI_ALTO_LISTA \
"audacity" "Audio editor/recorder$(_inst audacity)" "$(_state audacity)" \
"blender" "3D modeling/animation suite$(_inst blender)" "$(_state blender)" \
"ffmpeg" "Multimedia framework (CLI)$(_inst ffmpeg)" "$(_state ffmpeg)" \
"gimp" "Image editor$(_inst gimp)" "$(_state gimp)" \
"inkscape" "Vector graphics editor$(_inst inkscape)" "$(_state inkscape)" \
"kdenlive" "Video editor (KDE)$(_inst kdenlive)" "$(_state kdenlive)" \
"obs-studio" "Streaming/recording studio$(_inst obs-studio)" "$(_state obs-studio)" \
"scribus" "Desktop publishing$(_inst scribus)" "$(_state scribus)" \
3>&1 1>&2 2>&3)
clear
[ -z "$choices" ] && return
local cleaned; cleaned=$(echo "$choices" | tr -d '"')
for pkg in $cleaned; do
if ! is_installed "$pkg"; then
_run_install "$pkg"
else
echo "$pkg already installed."
fi
done
echo -e "${GREEN}Design tools installed.${NC}"
}
_cat_programming_bullseye() {
local choices
choices=$(whiptail --title "Programming (Bullseye)" --checklist \
"Select programming tools:" $TUI_ALTO $TUI_ANCHO $TUI_ALTO_LISTA \
"build-essential" "GCC/Clang compilers$(_inst build-essential)" "$(_state build-essential)" \
"python3" "Python 3 interpreter$(_inst python3)" "$(_state python3)" \
"python3-pip" "Python 3 package manager$(_inst python3-pip)" "$(_state python3-pip)" \
"nodejs" "Node.js (Debian repo)$(_inst nodejs)" "$(_state nodejs)" \
"npm" "Node.js package manager$(_inst npm)" "$(_state npm)" \
"openjdk-17-jdk" "OpenJDK 17 JDK$(_inst openjdk-17-jdk)" "$(_state openjdk-17-jdk)" \
"git" "Version control system$(_inst git)" "$(_state git)" \
"vim" "Text editor (Vim)$(_inst vim)" "$(_state vim)" \
"nano" "Text editor (Nano)$(_inst nano)" "$(_state nano)" \
"geany" "Lightweight IDE$(_inst geany)" "$(_state geany)" \
"codeblocks" "Cross-platform IDE$(_inst codeblocks)" "$(_state codeblocks)" \
3>&1 1>&2 2>&3)
clear
[ -z "$choices" ] && return
local cleaned; cleaned=$(echo "$choices" | tr -d '"')
for pkg in $cleaned; do
if ! is_installed "$pkg"; then
_run_install "$pkg"
else
echo "$pkg already installed."
fi
done
echo -e "${GREEN}Programming tools installed.${NC}"
}
_cat_security_bullseye() {
local choices
choices=$(whiptail --title "Security & Networking (Bullseye)" --checklist \
"Select security tools:" $TUI_ALTO $TUI_ANCHO $TUI_ALTO_LISTA \
"nmap" "Network scanner$(_inst nmap)" "$(_state nmap)" \
"wireshark" "Packet analyzer$(_inst wireshark)" "$(_state wireshark)" \
"nikto" "Web server scanner$(_inst nikto)" "$(_state nikto)" \
"sqlmap" "SQL injection tool$(_inst sqlmap)" "$(_state sqlmap)" \
"gobuster" "Directory/file brute-forcer$(_inst gobuster)" "$(_state gobuster)" \
"hydra" "Login cracker$(_inst hydra)" "$(_state hydra)" \
"john" "John the Ripper password cracker$(_inst john)" "$(_state john)" \
"aircrack-ng" "Wireless security tool$(_inst aircrack-ng)" "$(_state aircrack-ng)" \
3>&1 1>&2 2>&3)
clear
[ -z "$choices" ] && return
local cleaned; cleaned=$(echo "$choices" | tr -d '"')
for pkg in $cleaned; do
if ! is_installed "$pkg"; then
_run_install "$pkg"
else
echo "$pkg already installed."
fi
done
echo -e "${GREEN}Security tools installed.${NC}"
}
_cat_general_bullseye() {
local choices
choices=$(whiptail --title "System Tools (Bullseye)" --checklist \
"Select system utilities:" $TUI_ALTO $TUI_ANCHO $TUI_ALTO_LISTA \
"compress" "Compression tools (zip, unrar, p7zip)$(_inst zip)" "$(_state zip)" \
"conky" "System monitor for desktop$(_inst conky)" "$(_state conky)" \
"cpu-x" "CPU-X (alternative to CPU-Z)$(_inst cpu-x)" "$(_state cpu-x)" \
"curl-wget" "HTTP transfer tools (curl, wget)$(_inst curl)" "$(_state curl)" \
"flatpak" "Flatpak sandbox (Bullseye native)$(_inst flatpak)" "$(_state flatpak)" \
"fwupd" "Firmware update daemon$(_inst fwupd)" "$(_state fwupd)" \
"gnome-disk-utility" "Disk management GUI$(_inst gnome-disk-utility)" "$(_state gnome-disk-utility)" \
"gparted" "Partition editor$(_inst gparted)" "$(_state gparted)" \
"htop" "Interactive process viewer$(_inst htop)" "$(_state htop)" \
"inxi" "System information tool$(_inst inxi)" "$(_state inxi)" \
"kvm" "QEMU/KVM virtualization$(_inst virt-manager)" "$(_state virt-manager)" \
"lshw" "List hardware details$(_inst lshw)" "$(_state lshw)" \
"mc" "Midnight Commander$(_inst mc)" "$(_state mc)" \
"ncdu" "Disk usage analyzer$(_inst ncdu)" "$(_state ncdu)" \
"psensor" "Temperature monitor$(_inst psensor)" "$(_state psensor)" \
"timeshift" "System restore snapshots$(_inst timeshift)" "$(_state timeshift)" \
"tmux" "Terminal multiplexer$(_inst tmux)" "$(_state tmux)" \
"wine" "Windows compatibility layer$(_inst wine)" "$(_state wine)" \
3>&1 1>&2 2>&3)
clear
[ -z "$choices" ] && return
local cleaned; cleaned=$(echo "$choices" | tr -d '"')
for pkg in $cleaned; do
case $pkg in
compress)
local need=()
! is_installed "zip" && need+=("zip")
! is_installed "unzip" && need+=("unzip")
! is_installed "rar" && need+=("rar")
! is_installed "unrar" && need+=("unrar")
! is_installed "p7zip-full" && need+=("p7zip-full")
! is_installed "p7zip-rar" && need+=("p7zip-rar")
if [ ${#need[@]} -gt 0 ]; then
_run_install_batch "${need[@]}"
fi
;;
curl-wget)
local need=()
! is_installed "curl" && need+=("curl")
! is_installed "wget" && need+=("wget")
[ ${#need[@]} -gt 0 ] && _run_install_batch "${need[@]}" || echo "Already installed."
;;
kvm)
if ! is_installed "virt-manager"; then
_run_cmd "KVM" "sudo apt install -y qemu-system-x86 qemu-utils libvirt-daemon-system libvirt-clients bridge-utils virt-manager" "Installing KVM..."
sudo adduser "$USER" libvirt 2>/dev/null || true
sudo adduser "$USER" kvm 2>/dev/null || true
else
echo "QEMU/KVM already installed."
fi
;;
flatpak)
if ! is_installed "flatpak"; then
_run_cmd "Flatpak" "sudo apt install -y flatpak" "Installing Flatpak..."
flatpak remote-add --if-not-exists flathub \
https://dl.flathub.org/repo/flathub.flatpakrepo
echo -e "${GREEN}Flatpak + Flathub installed.${NC}"
else
echo "Flatpak already installed."
fi
;;
wine)
if ! is_installed "wine"; then
if ! dpkg --print-foreign-architectures 2>/dev/null | grep -q i386; then
sudo dpkg --add-architecture i386
_run_cmd "APT Update" "sudo apt update" "Updating package lists..."
fi
_run_cmd "Wine" "sudo apt install -y wine wine32 wine64 libwine libwine:i386 fonts-wine" "Installing Wine..."
echo -e "${GREEN}Wine installed.${NC}"
else
echo "Wine already installed."
fi
;;
fwupd)
if ! is_installed "fwupd"; then
_run_cmd "fwupd" "sudo apt install -y fwupd" "Installing fwupd..."
fi
if _confirm "Firmware Scan" "Scan for firmware updates now?"; then
sudo fwupdmgr refresh --force 2>/dev/null || true
sudo fwupdmgr get-updates 2>&1 || true
fi
;;
*)
if ! is_installed "$pkg"; then
_run_install "$pkg"
else
echo "$pkg already installed."
fi
;;
esac
done
echo -e "${GREEN}System tools installed.${NC}"
}
_cat_fetch_bullseye() {
local items=(
"neofetch" "System info fetcher$(_inst neofetch)" "$(_state neofetch)"
"screenfetch" "System info (BSD/Linux)$(_inst screenfetch)" "$(_state screenfetch)"
"linuxlogo" "Linux logo + system info$(_inst linuxlogo)" "$(_state linuxlogo)"
)
local TUI_ANCHO_REFORZADO=$((TUI_ANCHO + 6))
local choices
choices=$(whiptail --title "Fetch Tools (Bullseye)" --checklist \
"Select system info tools:" $TUI_ALTO $TUI_ANCHO_REFORZADO $TUI_ALTO_LISTA \
"${items[@]}" 3>&1 1>&2 2>&3)
clear
[ -z "$choices" ] && return
local cleaned; cleaned=$(echo "$choices" | tr -d '"')
for pkg in $cleaned; do
if ! is_installed "$pkg"; then
_run_install "$pkg"
else
echo "$pkg already installed."
fi
done
echo -e "${GREEN}Fetch tools installed.${NC}"
}
# ======================================================================
# master installer — replaces install_extras() on Bullseye
# ======================================================================
install_extras_bullseye() {
echo -e "${YELLOW}Extra software — Bullseye mode (official repos only).${NC}"
while true; do
local cat_choice
cat_choice=$(whiptail --title "Extra Software — Bullseye" --menu \
"Select a category:" $TUI_ALTO $TUI_ANCHO $TUI_ALTO_LISTA \
"0" "Essential Pack" \
"1" "Customization System" \
"2" "Download & Network" \
"3" "Internet (Browsers, Email)" \
"4" "Media Players" \
"5" "Multimedia & Design" \
"6" "Programming Applications" \
"7" "Security & Networking" \
"8" "System Tools" \
"9" "Fetch / System Info" \
"10" "Back to main menu" \
3>&1 1>&2 2>&3)
[ -z "$cat_choice" ] && return
clear
case "$cat_choice" in
0) _quick_install_bullseye ;;
1) _cat_customization_bullseye ;;
2) _cat_download_bullseye ;;
3) _cat_internet_bullseye ;;
4) _cat_players_bullseye ;;
5) _cat_design_bullseye ;;
6) _cat_programming_bullseye ;;
7) _cat_security_bullseye ;;
8) _cat_general_bullseye ;;
9) _cat_fetch_bullseye ;;
10) return ;;
esac
clear
done
}
+214
View File
@@ -0,0 +1,214 @@
#!/usr/bin/env bash
# legacy.sh — Bullseye: hardware detection, NVIDIA legacy drivers, lightweight gaming
# License GPL v3
BULLSEYE_USE_ARCHIVE=false
BULLSEYE_USE_ARCHIVE_CHECKED=false
check_bullseye_archive_phase() {
$BULLSEYE_USE_ARCHIVE_CHECKED && return
BULLSEYE_USE_ARCHIVE_CHECKED=true
local current_year
local current_month
current_year=$(date +%Y)
current_month=$(date +%-m)
if [ "$current_year" -gt 2026 ] || \
{ [ "$current_year" -eq 2026 ] && [ "$current_month" -ge 9 ]; }; then
BULLSEYE_USE_ARCHIVE=true
fi
if $BULLSEYE_USE_ARCHIVE; then
_msg "Debian 11 — Archive Phase" \
"Bullseye LTS support ended on 31 Aug 2026.\n\n\
The script will use archive.debian.org mirrors.\n\
No security updates will be available." 12 60
fi
}
# ---------------------------------------------------------------------------
# Fermi PCI ID detection — 6 condiciones inclusivas
# ---------------------------------------------------------------------------
is_nvidia_fermi() {
local dev_id
dev_id=$(lspci -nn | grep -iE "VGA|3D" | grep -i nvidia | \
grep -oP '10de:\K[0-9a-fA-F]+' | head -n1)
[ -z "$dev_id" ] && { echo false; return; }
local dev_int
dev_int=$((16#${dev_id,,}))
if [ "$dev_int" -ge $((16#06C0)) ] && [ "$dev_int" -le $((16#06DF)) ]; then echo true; return; fi
if [ "$dev_int" -ge $((16#0DC0)) ] && [ "$dev_int" -le $((16#0DFF)) ]; then echo true; return; fi
if [ "$dev_int" -ge $((16#0DE0)) ] && [ "$dev_int" -le $((16#0DFF)) ]; then echo true; return; fi
if [ "$dev_int" -ge $((16#0E00)) ] && [ "$dev_int" -le $((16#0E1F)) ]; then echo true; return; fi
if [ "$dev_int" -ge $((16#1080)) ] && [ "$dev_int" -le $((16#10DF)) ]; then echo true; return; fi
if [ "$dev_int" -eq $((16#1201)) ]; then echo true; return; fi
echo false
}
# ---------------------------------------------------------------------------
# NVIDIA driver installer for Bullseye (Kepler → 470, Fermi → 390)
# ---------------------------------------------------------------------------
install_nvidia_bullseye() {
echo -e "${YELLOW}NVIDIA GPU detected (Bullseye mode).${NC}"
local is_fermi; is_fermi=$(is_nvidia_fermi)
local nv_pkg=""
local gpu_gen=""
if [ "$is_fermi" = "true" ]; then
nv_pkg="nvidia-legacy-390xx-driver"
gpu_gen="Fermi"
else
# Bullseye: cualquier otra NVIDIA (Kepler incl.) → nvidia-driver (470)
nv_pkg="nvidia-driver"
gpu_gen="NVIDIA"
fi
local nv_ver
nv_ver=$(apt-cache policy "$nv_pkg" 2>/dev/null | awk 'NR==3 {print $2; exit}')
local msg="Source: Debian Bullseye Stable\n"
msg+="Driver: ${gpu_gen}${nv_pkg} ${nv_ver:-unknown}\n"
msg+="[+] firmware-misc-nonfree\n"
msg+="[+] nvidia-settings\n\n"
msg+="Instalar driver NVIDIA?"
if ! _confirm "NVIDIA — Bullseye" "$msg" 14 70; then
echo "Omitiendo driver NVIDIA."
NVIDIA_DRIVER_MODE=""
return 0
fi
_run_cmd "NVIDIA" \
"sudo apt install -y $nv_pkg firmware-misc-nonfree nvidia-settings" \
"Instalando driver NVIDIA ${gpu_gen}..."
local i386_active=false
dpkg --print-foreign-architectures | grep -q i386 && i386_active=true
if $i386_active; then
local nv32_pkg="${nv_pkg}: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
echo "Instalando compatibilidad 32-bit para ${nv_pkg}..."
_run_cmd "NVIDIA 32-bit" "sudo apt install -y $nv32_pkg" \
"Instalando librerías NVIDIA 32-bit..."
else
echo "No hay paquete 32-bit disponible para ${nv_pkg} en Bullseye."
fi
fi
NVIDIA_DRIVER_MODE="stable"
echo -e "${GREEN}Driver NVIDIA ${nv_pkg} instalado. Requiere reinicio.${NC}"
}
# ---------------------------------------------------------------------------
# Lightweight Gaming for Bullseye — sin Steam, sin Heroic
# 32-bit Mesa/NVIDIA + gamemode + mangohud + goverlay + lutris
# ---------------------------------------------------------------------------
install_gaming_bullseye() {
echo -e "${YELLOW}Lightweight Gaming (Bullseye mode).${NC}"
local enable_32bit=false
if _confirm "32-bit Support" \
"Habilitar arquitectura i386 para juegos?\n\n\
Requieren los juegos nativos de 32 bits y ciertas\n\
bibliotecas de emulación."; then
enable_32bit=true
fi
if $enable_32bit; then
echo "Activando soporte multiarquitectura i386..."
if ! dpkg --print-foreign-architectures | grep -q i386; then
sudo dpkg --add-architecture i386
fi
_run_cmd "APT Update" "sudo apt update" "Actualizando listas..."
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}" \
"Instalando librerías NVIDIA 32-bit..."
fi
else
echo "nvidia-driver-libs:i386 no disponible en 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 para gaming.\n\n"
msg+="Source: Debian Bullseye Stable\n"
msg+="Mesa ${ref_ver}\n"
msg+="${comp_line}\n\n"
msg+="Instalar drivers 32-bit?"
if _confirm "Mesa 32-bit" "$msg" 14 70; then
_run_cmd "Mesa 32-bit" "sudo apt install -y ${mesa_32[*]}" \
"Instalando Mesa 32-bit..."
fi
fi
fi
# Gaming tools checklist (sin Steam ni Heroic)
local choices
choices=$(whiptail --title "Gaming Tools — Bullseye" --checklist \
"Select gaming optimization tools:" $TUI_ALTO $TUI_ANCHO $TUI_ALTO_LISTA \
"gamemode" "Game performance optimization" ON \
"mangohud" "Performance overlay (Vulkan/OpenGL)" ON \
"goverlay" "MangoHud config GUI" ON \
"lutris" "Game launcher/manager" OFF \
3>&1 1>&2 2>&3)
if [ -z "$choices" ]; then
echo "No gaming tools selected."
return
fi
local cleaned
cleaned=$(echo "$choices" | tr -d '"')
for pkg in $cleaned; do
case $pkg in
mangohud)
_run_cmd "MangoHud" "sudo apt install -y mangohud" "Instalando MangoHud..."
if $enable_32bit; then
local mh32_ver
mh32_ver=$(apt-cache policy mangohud:i386 2>/dev/null | \
awk 'NR==3 {print $2; exit}')
if [ -n "$mh32_ver" ] && [ "$mh32_ver" != "(none)" ]; then
_run_cmd "MangoHud" "sudo apt install -y mangohud:i386" \
"Instalando MangoHud 32-bit..."
fi
fi
;;
gamemode) _run_cmd "GameMode" "sudo apt install -y gamemode" "Instalando GameMode..." ;;
goverlay) _run_cmd "GOverlay" "sudo apt install -y goverlay" "Instalando GOverlay..." ;;
lutris) _run_cmd "Lutris" "sudo apt install -y lutris" "Instalando Lutris..." ;;
*) _run_install "$pkg" ;;
esac
done
echo -e "${GREEN}Lightweight gaming setup complete.${NC}"
}
+54
View File
@@ -0,0 +1,54 @@
#!/usr/bin/env bash
# repos.sh — Bullseye: repos clásicos con archive phase
# License GPL v3
configure_repos_bullseye() {
echo -e "${YELLOW}Repository configuration — Debian 11 Bullseye${NC}"
local info="Configuración de repositorios para Debian 11 Bullseye.\n\n"
info+="Se usarán los repositorios oficiales con componentes\n"
info+="main, contrib y non-free (sin non-free-firmware).\n"
info+="No se utiliza formato DEB822.\n"
if $BULLSEYE_USE_ARCHIVE; then
info+="\nModo Archive: Las URLs apuntarán a archive.debian.org\n"
info+="(Bullseye LTS finalizó el 31 Ago 2026)."
fi
_msg "Repositorios — Bullseye" "$info" 12 65
if [ -f /etc/apt/sources.list ]; then
if ! _confirm "Repositorios" "Ya existe /etc/apt/sources.list.\n\nSobrescribir con la configuración de Bullseye?"; then
echo "Manteniendo configuración actual."
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+="# Updates\n"
content+="deb ${base_uri} bullseye-updates main contrib non-free\n"
content+="#deb-src ${base_uri} bullseye-updates 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 "Actualizando listas de paquetes..."
if sudo apt update; then
echo -e "${GREEN}Repositorios de Debian 11 Bullseye configurados.${NC}"
else
echo -e "${RED}apt update falló. Revise su conexión de red.${NC}"
return 1
fi
}
+41 -1
View File
@@ -99,7 +99,47 @@ install_gpu_drivers() {
case "$GPU_TYPE" in
amd) install_amd_firmware ;;
intel) install_intel_firmware ;;
nvidia) install_nvidia_driver ;;
nvidia)
if [ "$DEBIAN_VERSION" = "11" ]; then
# Bullseye: solo Fermi check, resto → nvidia-driver directo
if type install_nvidia_bullseye &>/dev/null; then
install_nvidia_bullseye
else
install_nvidia_driver
fi
elif [ "$DEBIAN_VERSION" = "12" ]; then
# Bookworm: Kepler intercepción → legacy, sin nvidia-detect
if [ "$(is_nvidia_kepler)" = "true" ]; then
if type _install_nvidia_bookworm_kepler &>/dev/null; then
_install_nvidia_bookworm_kepler
else
install_nvidia_driver
fi
else
install_nvidia_driver
fi
elif [ "$DEBIAN_VERSION" = "13" ]; then
# Trixie: Kepler → advertencia Nouveau, sin driver
if [ "$(is_nvidia_kepler)" = "true" ]; then
_msg "NVIDIA Kepler — Trixie" \
"Su GPU es arquitectura Kepler (GKxxx).\n\n\
Los drivers privativos NVIDIA para Kepler (rama 470)\n\
NO están disponibles en Debian 13 (Trixie).\n\n\
Se recomienda usar el driver libre Nouveau:\n\
- Soporte básico de display\n\
- Sin aceleración 3D completa\n\
- Sin Optimus/PRIME\n\n\
Si necesita driver privativo, use Debian 12 (Bookworm)\n\
con nvidia-legacy-470xx-driver." 16 70
NVIDIA_DRIVER_MODE=""
return 1
else
install_nvidia_driver
fi
else
install_nvidia_driver
fi
;;
esac
# Mesa (backports / stable)
+8 -7
View File
@@ -9,13 +9,14 @@ is_nvidia_kepler() {
local dev_int
dev_int=$((16#${dev_id,,}))
# Known Kepler device ID ranges (GKxxx)
if [ "$dev_int" -ge $((16#0FC0)) ] && [ "$dev_int" -le $((16#0FCF)) ]; then echo true; return; fi
if [ "$dev_int" -ge $((16#1180)) ] && [ "$dev_int" -le $((16#118F)) ]; then echo true; return; fi
if [ "$dev_int" -ge $((16#11C0)) ] && [ "$dev_int" -le $((16#11CF)) ]; then echo true; return; fi
if [ "$dev_int" -ge $((16#0FE0)) ] && [ "$dev_int" -le $((16#0FEF)) ]; then echo true; return; fi
if [ "$dev_int" -ge $((16#1280)) ] && [ "$dev_int" -le $((16#129F)) ]; then echo true; return; fi
if [ "$dev_int" -ge $((16#0EB0)) ] && [ "$dev_int" -le $((16#0EBF)) ]; then echo true; return; fi
# Bloque 1: GK107 (escritorio + móvil) — 0x0FC0..0x0FFF
if [ "$dev_int" -ge $((16#0FC0)) ] && [ "$dev_int" -le $((16#0FFF)) ]; then echo true; return; fi
# Bloque 2: GK110/GK110B/GK210 acotado puro — 0x1000..0x103F
if [ "$dev_int" -ge $((16#1000)) ] && [ "$dev_int" -le $((16#103F)) ]; then echo true; return; fi
# Bloque 3: GK104/GK106 (completo) — 0x1180..0x11FF
if [ "$dev_int" -ge $((16#1180)) ] && [ "$dev_int" -le $((16#11FF)) ]; then echo true; return; fi
# Bloque 4: GK208/GK208B acotado — 0x1280..0x12BF
if [ "$dev_int" -ge $((16#1280)) ] && [ "$dev_int" -le $((16#12BF)) ]; then echo true; return; fi
echo false
}
+54
View File
@@ -189,6 +189,60 @@ _install_nvidia_bookworm_bpo() {
echo -e "${GREEN}NVIDIA driver installed from backports. Reboot required.${NC}"
}
# -------------------------------------------------------------------
# Bookworm Kepler intercepción — fuerza nvidia-legacy-470xx-driver
# sin pasar por nvidia-detect (evita falsa recomendación rama 535)
# -------------------------------------------------------------------
_install_nvidia_bookworm_kepler() {
local nv_pkg="nvidia-legacy-470xx-driver"
local nv_ver
nv_ver=$(apt-cache policy "$nv_pkg" 2>/dev/null | awk 'NR==3 {print $2; exit}')
echo -e "${YELLOW}Kepler GPU detected — forcing ${nv_pkg}.${NC}"
local msg="Kepler GPU detectada (GKxxx).\n\n"
msg+="En Debian 12 Bookworm, Kepler requiere el driver legacy\n"
msg+="en lugar del moderno. Se usará el paquete:\n"
msg+=" ${nv_pkg} ${nv_ver:-unknown}\n"
msg+="para evitar fallos de pantalla negra.\n\n"
msg+=" [SKIP] nvidia-detect (omitido — evita rama 535)\n"
msg+=" [USE] ${nv_pkg}\n"
msg+=" [+] firmware-misc-nonfree\n"
msg+=" [+] nvidia-settings\n\n"
msg+="Instalar driver legacy para Kepler?"
if ! _confirm_custom "NVIDIA Kepler — Bookworm" "$msg" "Install" "Skip" 14 70; then
echo "Omitiendo driver Kepler."
NVIDIA_DRIVER_MODE=""
return 0
fi
_run_cmd "NVIDIA Kepler" \
"sudo apt install -y $nv_pkg firmware-misc-nonfree nvidia-settings" \
"Instalando nvidia-legacy-470xx-driver..."
# Si backports está habilitado, ofrecer actualización
if [ "$(is_backports_enabled)" == "true" ]; then
local bpo_ver
bpo_ver=$(apt-cache madison "$nv_pkg" 2>/dev/null | \
grep "bookworm-backports" | awk '{print $3}' | head -1)
if [ -n "$bpo_ver" ]; then
local msg="Hay una versión en backports: ${bpo_ver}\n"
msg+="Instalar desde bookworm-backports?"
if _confirm "Kepler Backports" "$msg"; then
_run_cmd "NVIDIA Kepler" \
"sudo apt install -y -t bookworm-backports $nv_pkg" \
"Actualizando Kepler driver desde backports..."
NVIDIA_DRIVER_MODE="backports"
echo -e "${GREEN}Kepler driver actualizado desde backports.${NC}"
fi
fi
fi
NVIDIA_DRIVER_MODE="${NVIDIA_DRIVER_MODE:-stable}"
echo -e "${GREEN}Kepler driver (${nv_pkg}) installed. Reboot required.${NC}"
}
# -------------------------------------------------------------------
# CASE C: Kernel stable (any distro) → Debian stable, optional backports
# -------------------------------------------------------------------
-2
View File
@@ -67,8 +67,6 @@ configure_repos() {
return 1
fi
sync_system_time
backup_current_repos
if $use_deb822; then
+14 -10
View File
@@ -40,21 +40,24 @@ check_system_time() {
fi
local year
year=$(date +%Y)
if [ "$year" -lt 2024 ]; then
echo -e "${YELLOW}System date appears incorrect: $(date '+%Y-%m-%d %H:%M')${NC}"
echo -e "${YELLOW}This can cause apt update to fail with sync/GPG errors.${NC}"
if _confirm "System Date" "The system date is set to $(date '+%Y-%m-%d %H:%M'),\nwhich is before 2024.\n\nSync time via NTP?"; then
sudo timedatectl set-ntp true 2>/dev/null || true
echo -e "${YELLOW}Waiting a few seconds for time sync...${NC}"
sleep 5
if [ "$year" -lt 2026 ]; then
local msg="Se ha detectado que la fecha/hora de su sistema está desconfigurada\n"
msg+="($(date '+%Y-%m-%d %H:%M')), lo que impedirá que los repositorios\n"
msg+="de Debian funcionen correctamente.\n\n"
msg+="¿Desea que el script intente sincronizar la hora automáticamente\n"
msg+="mediante la red (NTP) y configurar timedatectl?"
if _confirm "System Date" "$msg"; then
sync_system_time
local new_year
new_year=$(date +%Y)
if [ "$new_year" -ge 2024 ]; then
if [ "$new_year" -ge 2026 ]; then
echo -e "${GREEN}Time synced: $(date '+%Y-%m-%d %H:%M')${NC}"
else
echo -e "${RED}Could not sync time automatically.${NC}"
echo "You may need to set it manually: sudo date --set \"YYYY-MM-DD HH:MM:SS\""
fi
else
echo -e "${YELLOW}Warning: System time is incorrect. Package installations may fail.${NC}"
fi
fi
}
@@ -66,7 +69,7 @@ sync_system_time() {
if [ "$ntp_active" != "yes" ]; then
echo -e "${YELLOW}NTP not active. Attempting to enable time sync...${NC}"
sudo timedatectl set-ntp true 2>/dev/null || true
sleep 3
sleep 4
fi
elif command -v hwclock &> /dev/null && command -v ntpd &> /dev/null; then
sudo hwclock --hctosys 2>/dev/null || true
@@ -91,10 +94,11 @@ detect_debian_version() {
DEBIAN_CODENAME=$(lsb_release -cs 2>/dev/null || echo "")
fi
case "$DEBIAN_CODENAME" in
bullseye) DEBIAN_VERSION="11" ;;
bookworm) DEBIAN_VERSION="12" ;;
trixie) DEBIAN_VERSION="13" ;;
*)
echo -e "${RED}Unsupported Debian version: '$DEBIAN_CODENAME'. Only 12 (bookworm) and 13 (trixie) are supported.${NC}"
echo -e "${RED}Unsupported Debian version: '$DEBIAN_CODENAME'. Only 11 (bullseye), 12 (bookworm) and 13 (trixie) are supported.${NC}"
exit 1
;;
esac