system overhaul and bug fixeds

- Replaced the fragile upstream script installer with native Deb822 repository injection and automated GPG keyring management in `jellyfin.sh`. Eliminated external dependencies, checksums, and interactive flags for guaranteed non-interactive support across Bullseye/Bookworm/Trixie.
- Upgraded the NVMe module (`modules/extras/system/system.sh`) to perform multi-drive scanning with dynamic `lsblk` parsing. Replaced single-disk detection logic with a `while read` loop to capture all devices, displaying formatted SMART health diagnostics (Critical Warning, Temperature, Percentage Used).
- Overhauled the 'System Information' TUI into a multi-device dashboard featuring standalone GPU/Driver hierarchies and dynamic storage mapping. Added new globals (`DISPLAY_SERVER`, `STORAGE_SUMMARY`) and comprehensive arrays for Network/Wi-Fi interface indexing in `modules/utils.sh`.
- Redesigned the graphics stack layout to fix multi-GPU text clipping and unified Mesa version prompting logic. Integrated post-install package telemetry to display live versions in the completion screen, separating planning visualization from installation decision points in `modules/gpu.sh`.
- Fixed non-free-firmware conceptual documentation bugs and expanded Backports descriptions with hardware-focused educational text. Added non-free repository safeguards for Trixie/Bullseye compatibility under "Firmware & Wireless Drivers".
- Refactored repository logic in modules/repos.sh to eliminate dead code (redundant default_text variables) and strict-hardcoded layout behaviors, standardizing dialog geometry to a clean matrix.
- Updated README.md
This commit is contained in:
stornic56
2026-06-16 19:59:15 -05:00
committed by GitHub
parent 63ef2e7343
commit 3a652c28e6
9 changed files with 343 additions and 93 deletions
+88 -20
View File
@@ -53,8 +53,8 @@ main_menu() {
"1" "System Info" \
"2" "User Privileges & Feedback" \
"3" "Configure repositories" \
"4" "Wireless & Firmware" \
"5" "Graphics Stack" \
"4" "Firmware & Wireless Drivers" \
"5" "Graphics Drivers & Mesa Stack" \
"6" "Backports Kernel" \
"7" "Gaming Setup" \
"8" "ZRAM (Swap)" \
@@ -113,27 +113,93 @@ kernels. Use the stable kernel provided by Bullseye." 10 60
}
_show_sysinfo() {
local gpu_info="${GPU_DESC}"
[ -n "$GPU_VERSION" ] && gpu_info+=" (${GPU_VERSION})"
local msg=""
local network_info
if [ -n "$ETH_DESC" ] && [ -n "$WIFI_DESC" ]; then
network_info="Ethernet: ${ETH_DESC}\nWiFi: ${WIFI_DESC}"
elif [ -n "$ETH_DESC" ]; then
network_info="${ETH_DESC}"
elif [ -n "$WIFI_DESC" ]; then
network_info="${WIFI_DESC}"
else
network_info="No adapters detected"
# ── OS Block ──
msg+="OS: ${DEBIAN_VERSION} (${DEBIAN_CODENAME})\n"
msg+="Kernel: ${KERNEL_VERSION}\n"
msg+="Display: ${DISPLAY_SERVER}\n"
msg+="\n"
# ── Hardware Block ──
msg+="CPU: ${CPU_SUMMARY}\n"
msg+="RAM: ${RAM_SUMMARY}\n"
msg+="Storage: ${STORAGE_SUMMARY}\n"
msg+="\n"
# ── GPU Block ──
local found_gpu=false
if command -v lspci &>/dev/null; then
local gpu_count=0
while IFS= read -r gpu_line; do
found_gpu=true
gpu_count=$((gpu_count + 1))
local desc
desc=$(echo "$gpu_line" | sed -E 's/.*: //; s/ *\(rev.*//')
if echo "$gpu_line" | grep -qi "nvidia"; then
local nv_ver=""
nv_ver=$(nvidia-smi --query-gpu=driver_version --format=csv,noheader 2>/dev/null | head -1)
[ -z "$nv_ver" ] && nv_ver=$(dpkg -l nvidia-driver 2>/dev/null | awk '/^ii/ {print $3}' | sed 's/-.*//')
msg+="GPU ${gpu_count}: ${desc}\n"
msg+=" Driver: ${nv_ver:+NVIDIA }${nv_ver:-not installed}\n"
else
local mesa_ver=""
mesa_ver=$(dpkg -l libgl1-mesa-dri 2>/dev/null | awk '/^ii/ {print $3; exit}' | sed 's/-.*//')
msg+="GPU ${gpu_count}: ${desc}\n"
msg+=" Driver: ${mesa_ver:+Mesa }${mesa_ver:-unknown}\n"
fi
done < <(lspci -nn | grep -E "VGA|3D" || true)
fi
_msg "System Information" \
"Debian: ${DEBIAN_VERSION} (${DEBIAN_CODENAME})
Kernel: ${KERNEL_VERSION}
CPU: $(get_cpu_summary)
RAM: $(get_ram_summary)
GPU: ${gpu_info}
Network: ${network_info}" 13 65
if ! $found_gpu; then
msg+="GPU: No GPU detected\n"
fi
msg+="\n"
# ── Network Block ──
msg+="─── Network ───\n"
local has_network=false
local i
if ! command -v ip &>/dev/null; then
msg+="(install iproute2 for interface details)\n"
else
for i in "${!ETH_NAMES[@]}"; do
has_network=true
local e_iface="${ETH_NAMES[$i]}"
local e_desc="${ETH_DESCS[$i]:-$ETH_DESC}"
local e_state="${ETH_STATES[$i]}"
local e_ip4="${ETH_IPS[$i]}"
if [ "$e_state" = "UP" ]; then
msg+="${e_iface}: ${e_desc}\n ↑ ${e_ip4:-no IP}\n"
else
msg+="${e_iface}: ${e_desc}\n ↓\n"
fi
done
for i in "${!WIFI_NAMES[@]}"; do
has_network=true
local w_iface="${WIFI_NAMES[$i]}"
local w_desc="${WIFI_DESCS[$i]:-$WIFI_DESC}"
local w_state="${WIFI_STATES[$i]}"
local w_ip4="${WIFI_IPS[$i]}"
local w_ssid="${WIFI_SSIDS[$i]}"
if [ "$w_state" = "UP" ]; then
msg+="${w_iface}: ${w_desc}\n ↑ ${w_ip4:-no IP}"
[ -n "$w_ssid" ] && msg+=" \"${w_ssid}\""
msg+="\n"
else
msg+="${w_iface}: ${w_desc}\n ↓\n"
fi
done
if ! $has_network; then
msg+="No active interfaces detected\n"
fi
fi
_msg "System Information" "$msg" 22 76
}
check_root
@@ -146,6 +212,8 @@ detect_cpu_ram
detect_kernel
detect_gpu
detect_network
detect_displayserver
detect_storage
# ── Bullseye-specific init (archive phase) ──
if [ "$DEBIAN_VERSION" = "11" ] && type check_bullseye_archive_phase &>/dev/null; then