mirror of
https://github.com/stornic56/debianito-post-install.git
synced 2026-07-16 05:49:49 +00:00
fix backports and system modules
- Refactored `is_backports_enabled()` to dynamically detect backports using `DEBIAN_CODENAME` instead of hardcoded strings, improving script portability. - Added support for standalone classic backports files (`/etc/apt/sources.list.d/debian-backports.list`) and deb822 format (`*.sources`) to ensure consistent detection across different repository configurations. - Resolved Mesa and Kernel backports detection bugs, ensuring correct dialogue prompts and preventing false error messages during installation. - Implemented smart rounding for zram memory allocation to the nearest Gigabyte for optimized performance. - Enhanced Whiptail manual input validation for zram to block empty, non-numeric, or zero values. - Introduced a dedicated `software_centers.sh` module for the modular and clean installation of GNOME Software and Plasma Discover. - Added smart desktop environment detection (GTK/QT) to automatically suggest and install the optimal software center. - Implemented a two-phase installation flow for software centers (Base Store -> Optional Flatpak support) with static consistency warnings based on the detected desktop environment. - update README.md
This commit is contained in:
@@ -49,16 +49,16 @@ After running the script:
|
|||||||
|--------|-------------|--------------|
|
|--------|-------------|--------------|
|
||||||
| **1** | System Info | Show detected OS, CPU, RAM, GPU and hardware details |
|
| **1** | System Info | Show detected OS, CPU, RAM, GPU and hardware details |
|
||||||
| **2** | [User Privileges & Feedback](#user-privileges--feedback) | Configure sudo group membership, enable passwordless sudo for frequent tasks, repair home directory ownership issues, and toggle visual password feedback (asterisks) in terminal |
|
| **2** | [User Privileges & Feedback](#user-privileges--feedback) | Configure sudo group membership, enable passwordless sudo for frequent tasks, repair home directory ownership issues, and toggle visual password feedback (asterisks) in terminal |
|
||||||
| **3** | Configure Repositories | Setup official repos with/without backports (deb822 or classic format)|
|
| **3** | Configure Repositories | Setup official repos with/without backports (deb822 or classic format) and non-free/contrib|
|
||||||
| **4** | Setup Wireless & Firmware | Install WiFi firmware for Broadcom, Intel, and other chipsets|
|
| **4** | Setup Wireless & Firmware | Install WiFi firmware for Broadcom, Intel, and other chipsets|
|
||||||
| **5** | Configure Graphics Stack | AMD/Intel/NVIDIA drivers + monitoring tools |
|
| **5** | Configure Graphics Stack | AMD/Intel/NVIDIA drivers + monitoring tools |
|
||||||
| **6** | Update Kernel to Backports | Install latest stable kernel from Debian backports|
|
| **6** | Update Kernel to Backports | Install latest kernel from Debian backports|
|
||||||
| **7** | Gaming Setup and Performance | Steam, Heroic Games Launcher, GameMode, MangoHud, Java JRE (Temurin 8/17/21) |
|
| **7** | Gaming Setup and Performance | Steam, Heroic Games Launcher, GameMode, MangoHud, Java JRE (Temurin 8/17/21) |
|
||||||
| **8** | Install ZRAM (compressed swap) | Configure compressed RAM for memory optimization|
|
| **8** | Install ZRAM (compressed swap) | Configure compressed RAM for memory optimization|
|
||||||
| **9** | Install Programs and Software | Selection across 10 categories (Dev, Themes, System, etc.) |
|
| **9** | Install Programs and Software | Selection from several categories (Development, Themes, System, etc.) |
|
||||||
| **10** | Exit | Return to terminal |
|
| **10** | Exit | Return to terminal |
|
||||||
|
|
||||||
### Extra Applications Categories (Option 9)
|
### Install Programs and Software (Option 9)
|
||||||
|
|
||||||
The submenu offers the next categories:
|
The submenu offers the next categories:
|
||||||
|
|
||||||
@@ -73,9 +73,10 @@ The submenu offers the next categories:
|
|||||||
| **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) |
|
||||||
| **7** | Servers & Dev Tools | Web servers (Nginx/Apache), databases (PostgreSQL/MariaDB), Java Development Kit (Temurin 17/21/25 JDK), Docker, Python, SSH tools, fail2ban, and essential utilities |
|
| **7** | Servers & Dev Tools | Web servers (Nginx/Apache), databases (PostgreSQL/MariaDB), Java Development Kit (Temurin 17/21/25 JDK), Docker, Python, SSH tools, fail2ban, and essential utilities |
|
||||||
| **8** | Security & Networking | Wireshark, tcpdump, Zenmap, ClamAV, UFW, Fail2ban |
|
| **8** | Security & Networking | Wireshark, tcpdump, Zenmap, ClamAV, UFW, Fail2ban |
|
||||||
| **9** | System Tools | htop/btop, ncdu, Timeshift, tmux/screen, Flatpak support, extension repository manager, and qemu/virtmanager |
|
| **9** | Software Centers | Choose a software store to install |
|
||||||
| **10** | Fetch / System Info | fastfetch/neofetch, hyfetch, Linux logo and screenfetch |
|
| **10** | System Tools | htop/btop, ncdu, Timeshift, tmux/screen, Flatpak support, extension repository manager, and qemu/virtmanager |
|
||||||
| **11** | Back to Main Menu | Return directly to the main Debianito menu (exit submenu) |
|
| **11** | Fetch / System Info | fastfetch/neofetch, hyfetch, Linux logo and screenfetch |
|
||||||
|
| **12** | Back to Main Menu | Return directly to the main Debianito menu (exit submenu) |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -135,6 +136,7 @@ By default, Debian’s terminal hides your password (no asterisks or feedback).
|
|||||||
│ │ ├── security
|
│ │ ├── security
|
||||||
│ │ │ └── security.sh
|
│ │ │ └── security.sh
|
||||||
│ │ ├── system
|
│ │ ├── system
|
||||||
|
│ │ │ ├── software_centers.sh
|
||||||
│ │ │ └── system.sh
|
│ │ │ └── system.sh
|
||||||
│ │ └── themes
|
│ │ └── themes
|
||||||
│ │ ├── cursors
|
│ │ ├── cursors
|
||||||
@@ -160,11 +162,14 @@ By default, Debian’s terminal hides your password (no asterisks or feedback).
|
|||||||
│ │ └── nvidia.sh
|
│ │ └── nvidia.sh
|
||||||
│ ├── gpu.sh
|
│ ├── gpu.sh
|
||||||
│ ├── kernel.sh
|
│ ├── kernel.sh
|
||||||
|
│ ├── repos
|
||||||
|
│ │ └── repo_detect.sh
|
||||||
│ ├── repos.sh
|
│ ├── repos.sh
|
||||||
│ ├── sudo_config.sh
|
│ ├── sudo_config.sh
|
||||||
│ ├── utils.sh
|
│ ├── utils.sh
|
||||||
│ └── zram.sh
|
│ └── zram.sh
|
||||||
└── README.md
|
└── README.md
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|||||||
@@ -534,9 +534,10 @@ install_extras_bullseye() {
|
|||||||
"6" "Code Editors & IDEs" \
|
"6" "Code Editors & IDEs" \
|
||||||
"7" "Servers & Dev Tools" \
|
"7" "Servers & Dev Tools" \
|
||||||
"8" "Security & Networking" \
|
"8" "Security & Networking" \
|
||||||
"9" "System Tools" \
|
"9" "Software Centers" \
|
||||||
"10" "Fetch / System Info" \
|
"10" "System Tools" \
|
||||||
"11" "Back to main menu" \
|
"11" "Fetch / System Info" \
|
||||||
|
"12" "Back to main menu" \
|
||||||
3>&1 1>&2 2>&3)
|
3>&1 1>&2 2>&3)
|
||||||
|
|
||||||
[ -z "$cat_choice" ] && return
|
[ -z "$cat_choice" ] && return
|
||||||
@@ -552,10 +553,41 @@ install_extras_bullseye() {
|
|||||||
6) _cat_programming_bullseye ;;
|
6) _cat_programming_bullseye ;;
|
||||||
7) _cat_dev_bullseye ;;
|
7) _cat_dev_bullseye ;;
|
||||||
8) _cat_security_bullseye ;;
|
8) _cat_security_bullseye ;;
|
||||||
9) _cat_general_bullseye ;;
|
9) _cat_software_centers_bullseye ;;
|
||||||
10) _cat_fetch_bullseye ;;
|
10) _cat_general_bullseye ;;
|
||||||
11) return ;;
|
11) _cat_fetch_bullseye ;;
|
||||||
|
12) return ;;
|
||||||
esac
|
esac
|
||||||
clear
|
clear
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_cat_software_centers_bullseye() {
|
||||||
|
local sc_choice
|
||||||
|
sc_choice=$(whiptail --title "Software Centers" --menu \
|
||||||
|
"Choose a software store to install:" 12 65 2 \
|
||||||
|
"gnome-software" "Software Center for GNOME" \
|
||||||
|
"plasma-discover" "Software manager for Plasma" \
|
||||||
|
3>&1 1>&2 2>&3)
|
||||||
|
[ -z "$sc_choice" ] && return
|
||||||
|
|
||||||
|
_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
|
||||||
|
local bpkg
|
||||||
|
if [ "$sc_choice" = "gnome-software" ]; then
|
||||||
|
bpkg="gnome-software-plugin-flatpak"
|
||||||
|
else
|
||||||
|
bpkg="plasma-discover-backend-flatpak"
|
||||||
|
fi
|
||||||
|
if ! is_installed "flatpak"; then
|
||||||
|
_run_cmd "Flatpak" "sudo apt install -y flatpak" "Installing Flatpak..."
|
||||||
|
fi
|
||||||
|
_run_cmd "Plugin" "sudo apt install -y $bpkg" "Installing $bpkg..."
|
||||||
|
flatpak remote-add --if-not-exists flathub \
|
||||||
|
https://dl.flathub.org/repo/flathub.flatpakrepo
|
||||||
|
echo "Flathub repository added."
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo -e "${GREEN}Software store installed.${NC}"
|
||||||
|
}
|
||||||
|
|||||||
+8
-6
@@ -38,9 +38,10 @@ install_extras() {
|
|||||||
"6" "Code Editors & IDEs" \
|
"6" "Code Editors & IDEs" \
|
||||||
"7" "Servers & Dev Tools" \
|
"7" "Servers & Dev Tools" \
|
||||||
"8" "Security & Networking" \
|
"8" "Security & Networking" \
|
||||||
"9" "System Tools" \
|
"9" "Software Centers" \
|
||||||
"10" "Fetch / System Info" \
|
"10" "System Tools" \
|
||||||
"11" "Back to main menu" \
|
"11" "Fetch / System Info" \
|
||||||
|
"12" "Back to main menu" \
|
||||||
3>&1 1>&2 2>&3)
|
3>&1 1>&2 2>&3)
|
||||||
|
|
||||||
[ -z "$cat_choice" ] && return
|
[ -z "$cat_choice" ] && return
|
||||||
@@ -56,9 +57,10 @@ install_extras() {
|
|||||||
6) _cat_programming ;;
|
6) _cat_programming ;;
|
||||||
7) _cat_dev ;;
|
7) _cat_dev ;;
|
||||||
8) _cat_security ;;
|
8) _cat_security ;;
|
||||||
9) _cat_general ;;
|
9) _cat_software_centers ;;
|
||||||
10) _cat_fetch ;;
|
10) _cat_general ;;
|
||||||
11) return ;;
|
11) _cat_fetch ;;
|
||||||
|
12) return ;;
|
||||||
esac
|
esac
|
||||||
clear
|
clear
|
||||||
done
|
done
|
||||||
|
|||||||
@@ -0,0 +1,40 @@
|
|||||||
|
# software_centers.sh — Standalone Software Center installer
|
||||||
|
|
||||||
|
_cat_software_centers() {
|
||||||
|
local de_type
|
||||||
|
de_type=$(_detect_desktop_type)
|
||||||
|
local sc_choice
|
||||||
|
sc_choice=$(whiptail --title "Software Centers" --menu \
|
||||||
|
"Choose a software store to install:" 12 65 2 \
|
||||||
|
"gnome-software" "Software Center for GNOME" \
|
||||||
|
"plasma-discover" "Software manager for Plasma" \
|
||||||
|
3>&1 1>&2 2>&3)
|
||||||
|
[ -z "$sc_choice" ] && return
|
||||||
|
|
||||||
|
if { [ "$de_type" = "qt" ] && [ "$sc_choice" = "gnome-software" ]; } || \
|
||||||
|
{ [ "$de_type" = "gtk" ] && [ "$sc_choice" = "plasma-discover" ]; }; then
|
||||||
|
_msg "Warning" "Warning: This store requires extra background libraries \
|
||||||
|
and may look visually inconsistent with your current desktop environment."
|
||||||
|
! _confirm "Continue?" "Install anyway?" && return
|
||||||
|
fi
|
||||||
|
|
||||||
|
_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
|
||||||
|
local bpkg
|
||||||
|
if [ "$sc_choice" = "gnome-software" ]; then
|
||||||
|
bpkg="gnome-software-plugin-flatpak"
|
||||||
|
else
|
||||||
|
bpkg="plasma-discover-backend-flatpak"
|
||||||
|
fi
|
||||||
|
if ! is_installed "flatpak"; then
|
||||||
|
_run_cmd "Flatpak" "sudo apt install -y flatpak" "Installing Flatpak..."
|
||||||
|
fi
|
||||||
|
_run_cmd "Plugin" "sudo apt install -y $bpkg" "Installing $bpkg..."
|
||||||
|
flatpak remote-add --if-not-exists flathub \
|
||||||
|
https://dl.flathub.org/repo/flathub.flatpakrepo
|
||||||
|
echo "Flathub repository added."
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo -e "${GREEN}Software store installed.${NC}"
|
||||||
|
}
|
||||||
@@ -1,6 +1,21 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# system.sh — System Tools (extrepo moved here from Dev & Servers)
|
# system.sh — System Tools (extrepo moved here from Dev & Servers)
|
||||||
|
|
||||||
|
_detect_desktop_type() {
|
||||||
|
local desktop
|
||||||
|
desktop="${XDG_CURRENT_DESKTOP:-${DESKTOP_SESSION:-}}"
|
||||||
|
desktop="${desktop,,}"
|
||||||
|
|
||||||
|
case "$desktop" in
|
||||||
|
*kde*|*lxqt*|*razor*|*plasma*)
|
||||||
|
echo "qt"; return ;;
|
||||||
|
*gnome*|*xfce*|*cinnamon*|*mate*|*lxde*|*budgie*|*sway*|*hyprland*|*i3*|*bspwm*|*openbox*|*fluxbox*)
|
||||||
|
echo "gtk"; return ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
echo "gtk"
|
||||||
|
}
|
||||||
|
|
||||||
_cat_general() {
|
_cat_general() {
|
||||||
local headless=false
|
local headless=false
|
||||||
_is_headless && headless=true
|
_is_headless && headless=true
|
||||||
@@ -113,19 +128,38 @@ _cat_general() {
|
|||||||
flatpak)
|
flatpak)
|
||||||
if ! is_installed "flatpak"; then
|
if ! is_installed "flatpak"; then
|
||||||
_run_cmd "Flatpak" "sudo apt install -y flatpak" "Installing Flatpak..."
|
_run_cmd "Flatpak" "sudo apt install -y flatpak" "Installing Flatpak..."
|
||||||
if command -v plasma-discover &>/dev/null; then
|
|
||||||
_run_cmd "Flatpak" "sudo apt install -y plasma-discover-backend-flatpak" "Installing Flatpak backend..."
|
|
||||||
echo "Flatpak backend for Discover installed."
|
|
||||||
elif command -v gnome-software &>/dev/null; then
|
|
||||||
_run_cmd "Flatpak" "sudo apt install -y gnome-software-plugin-flatpak" "Installing Flatpak plugin..."
|
|
||||||
echo "Flatpak plugin for GNOME Software installed."
|
|
||||||
fi
|
|
||||||
else
|
else
|
||||||
echo "Flatpak already installed."
|
echo "Flatpak already installed."
|
||||||
fi
|
fi
|
||||||
flatpak remote-add --if-not-exists flathub \
|
flatpak remote-add --if-not-exists flathub \
|
||||||
https://dl.flathub.org/repo/flathub.flatpakrepo
|
https://dl.flathub.org/repo/flathub.flatpakrepo
|
||||||
echo "Flathub repository added."
|
echo "Flathub repository added."
|
||||||
|
|
||||||
|
if command -v plasma-discover &>/dev/null; then
|
||||||
|
if ! is_installed "plasma-discover-backend-flatpak" 2>/dev/null; then
|
||||||
|
if _confirm "Discover Backend" "Install Flatpak backend for Plasma Discover?"; then
|
||||||
|
_run_cmd "Backend" "sudo apt install -y plasma-discover-backend-flatpak" "Installing Flatpak backend..."
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
elif command -v gnome-software &>/dev/null; then
|
||||||
|
if ! is_installed "gnome-software-plugin-flatpak" 2>/dev/null; then
|
||||||
|
if _confirm "GNOME Plugin" "Install Flatpak plugin for GNOME Software?"; then
|
||||||
|
_run_cmd "Plugin" "sudo apt install -y gnome-software-plugin-flatpak" "Installing Flatpak plugin..."
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
local de_type
|
||||||
|
de_type=$(_detect_desktop_type)
|
||||||
|
if [ "$de_type" = "qt" ]; then
|
||||||
|
if _confirm "Software Center" "Install Plasma Discover for Flatpak management?"; then
|
||||||
|
_run_cmd "Discover" "sudo apt install -y plasma-discover plasma-discover-backend-flatpak" "Installing Discover..."
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
if _confirm "Software Center" "Install GNOME Software for Flatpak management?"; then
|
||||||
|
_run_cmd "GNOME Software" "sudo apt install -y gnome-software gnome-software-plugin-flatpak" "Installing GNOME Software..."
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
echo -e "${GREEN}A reboot is recommended.${NC}"
|
echo -e "${GREEN}A reboot is recommended.${NC}"
|
||||||
;;
|
;;
|
||||||
fwupd)
|
fwupd)
|
||||||
@@ -191,3 +225,4 @@ _cat_general() {
|
|||||||
|
|
||||||
echo -e "${GREEN}System tools installed.${NC}"
|
echo -e "${GREEN}System tools installed.${NC}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+17
-15
@@ -265,24 +265,26 @@ get_intel_generation() {
|
|||||||
# Check if backports repository is enabled (active line without #)
|
# Check if backports repository is enabled (active line without #)
|
||||||
# ----------------------------------------------------------------------
|
# ----------------------------------------------------------------------
|
||||||
is_backports_enabled() {
|
is_backports_enabled() {
|
||||||
# Check classic sources.list
|
local codename="${DEBIAN_CODENAME:-}"
|
||||||
if [ -f /etc/apt/sources.list ]; then
|
[ -z "$codename" ] && { echo false; return; }
|
||||||
if grep -Eq '^[^#]*[ \t]+bookworm-backports[ \t]+' /etc/apt/sources.list 2>/dev/null; then
|
|
||||||
echo true
|
local c_pattern="^[^#]*${codename}-backports[[:space:]]+"
|
||||||
return
|
local d_pattern="Suites:.*${codename}-backports"
|
||||||
fi
|
|
||||||
if grep -Eq '^[^#]*[ \t]+trixie-backports[ \t]+' /etc/apt/sources.list 2>/dev/null; then
|
# Classic embedded (sources.list)
|
||||||
echo true
|
if [ -f /etc/apt/sources.list ] && grep -Eq "$c_pattern" /etc/apt/sources.list 2>/dev/null; then
|
||||||
return
|
echo true; return
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Check deb822 .sources files
|
# Classic standalone (new — debian-backports.list)
|
||||||
if [ -d /etc/apt/sources.list.d ]; then
|
if [ -f /etc/apt/sources.list.d/debian-backports.list ] && \
|
||||||
if grep -qr 'Suites:.*-backports' /etc/apt/sources.list.d/*.sources 2>/dev/null; then
|
grep -Eq "$c_pattern" /etc/apt/sources.list.d/debian-backports.list 2>/dev/null; then
|
||||||
echo true
|
echo true; return
|
||||||
return
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Deb822 any .sources file
|
||||||
|
if grep -qr "$d_pattern" /etc/apt/sources.list.d/*.sources 2>/dev/null; then
|
||||||
|
echo true; return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo false
|
echo false
|
||||||
|
|||||||
+3
-3
@@ -9,7 +9,7 @@ install_zram() {
|
|||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
local half_ram_mb=$((RAM_KB / 2 / 1024))
|
local half_ram_mb=$(( ((RAM_KB / 1024 / 1024 + 1) / 2) * 1024 ))
|
||||||
|
|
||||||
local algo
|
local algo
|
||||||
algo=$(whiptail --title "ZRAM Compression" --menu \
|
algo=$(whiptail --title "ZRAM Compression" --menu \
|
||||||
@@ -31,12 +31,12 @@ Choose compression algorithm:" \
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
local zram_size
|
local zram_size
|
||||||
if _confirm "ZRAM Size" "Use 50% of RAM for ZRAM? (${half_ram_mb} MB out of ${RAM_SUMMARY})"; then
|
if _confirm "ZRAM Size" "Use recommended size for ZRAM? (${half_ram_mb} MB out of ${RAM_SUMMARY})"; then
|
||||||
zram_size=$half_ram_mb
|
zram_size=$half_ram_mb
|
||||||
else
|
else
|
||||||
zram_size=$(whiptail --title "ZRAM Size" --inputbox \
|
zram_size=$(whiptail --title "ZRAM Size" --inputbox \
|
||||||
"Enter ZRAM size in MB:" 8 60 "$half_ram_mb" 3>&1 1>&2 2>&3)
|
"Enter ZRAM size in MB:" 8 60 "$half_ram_mb" 3>&1 1>&2 2>&3)
|
||||||
if [ -z "$zram_size" ] || ! [[ "$zram_size" =~ ^[0-9]+$ ]]; then
|
if [ -z "$zram_size" ] || ! [[ "$zram_size" =~ ^[0-9]+$ ]] || [ "$zram_size" -eq 0 ]; then
|
||||||
echo "ZRAM configuration cancelled."
|
echo "ZRAM configuration cancelled."
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|||||||
Reference in New Issue
Block a user