From d8878b67e1d49ddf329e3ab7491d8b9252a72cba Mon Sep 17 00:00:00 2001
From: stornic56 <71296607+stornic56@users.noreply.github.com>
Date: Thu, 16 Jul 2026 01:02:51 -0500
Subject: [PATCH] Displays managers & zram menu
- LightDM Overhaul: Rewrote `install_lightdm()` logic to verify both lightdm and lightdm-gtk-gtk-greeter-settings. Now installs the trio in a single command if missing, skipping only when fully present. Added "Enable autologin" option modifying `/etc/lightdm/lightdm.conf` with robust `sed` patterns for `SUDO_USER`. Fixed missing `debconf-set-selections` to ensure LightDM is set as default during installation.
- GDM3 Implementation: Created a new sub-menu in `modules/desktop_display.sh` allowing independent installation of GDM3, User List toggle (hide/show), Autologin configuration via `/etc/gdm3/daemon.conf`, and conditional "Force Enable Wayland on NVIDIA" for Debian 12/13 using udev symlinks.
- SDDM Integration: Added SDDM as option 3 in the Display Manager menu. Implemented automatic session detection (Wayland > X11) to populate `/etc/sddm.conf.d/autologin.conf` without user input, defaulting to plasmawayland, lxqt-wayland, or generic fallbacks.
- greetd support: Added conditional support for Debian 12 and 13 only. Implemented sub-menu with base install, recommended `tuigreet` (with backports handling for Bookworm), and other manual setup options (`gtkgreet`, `nwg-hello`, `wlgreet`) exclusive to Trixie.
- ZRAM UX Improvements: Updated descriptions in `modules/zram.sh` to explicitly mention I/O reduction and responsiveness benefits for low-RAM systems (e.g., 4GB). Cleaned up compression algorithm labels (`lz4`, `zstd`) to remove redundancy in menu values.
- General Code Quality: Standardized all user-facing messages to English across modules. Ensured independent package installation checks prevent script abortion if one DM fails, while maintaining strict error handling for system configurations.
- update docs and readme
---
README.md | 51 +++-----
debianito.sh | 6 +-
docs/boot.md | 73 ++++++++++++
docs/desktops_display.md | 100 ++++++++++++++++
docs/gpu.md | 2 +-
docs/repos_config.md | 43 ++++---
docs/swap.md | 72 ++++++++++++
media/gift/script.gif | Bin 0 -> 872491 bytes
modules/desktop_display.sh | 234 ++++++++++++++++++++++++++++++++++---
modules/extras.sh | 2 +-
modules/firmware.sh | 2 +-
modules/repos.sh | 4 +-
modules/swap.sh | 2 +-
modules/zram.sh | 14 +--
14 files changed, 518 insertions(+), 87 deletions(-)
create mode 100644 docs/boot.md
create mode 100644 docs/desktops_display.md
create mode 100644 docs/swap.md
create mode 100644 media/gift/script.gif
diff --git a/README.md b/README.md
index 15d556b..2f2fe6f 100644
--- a/README.md
+++ b/README.md
@@ -1,10 +1,11 @@
-# Debianito - Post-Installation Automation for Debian
+
Debianito - Post-Installation Automation for Debian
-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.
+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), repository setup with backports support, gaming tools integration, and more with an interactive menu-driven interface.
[](https://github.com/stornic56/debianito-post-install/blob/main/LICENSE)
+
@@ -55,10 +56,11 @@ After running the script:
| **6** | [Backports Kernel](/docs/kernel.md) | Install latest kernel from Debian backports|
| **7** | [Gaming Setup ](/docs/gaming.md)| Steam, Heroic Games Launcher, [RetroArch](/docs/retroarch.md) GameMode, MangoHud, OpenRGB, Java JRE (Temurin 8/17/21) |
| **8** | [ZRAM](/docs/zram.md)| Configure compressed RAM for memory optimization|
-| **9** | Swap Management| 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 |
-| **11** | Boot Rescue & Repair| Fix GRUB bootloader issues, chroot repair, or restore system boot configuration|
-| **12** | Exit | Return to terminal |
+| **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|
+| **13** | Exit | Return to terminal |
### Install Programs and Software (Option 10)
@@ -76,9 +78,10 @@ The submenu offers the next categories:
| **7** | Servers & Dev Tools | Web servers (Nginx/Apache), databases (PostgreSQL/MariaDB), Java Development Kit (Temurin 17/21/25 JDK), Docker, Python, SSH tools, Jellyfin Server and essential utilities |
| **8** | Security & Networking | Wireshark, tcpdump, Zenmap, ClamAV, UFW, fail2ban |
| **9** | Software Centers | Choose a software store to install. |
-| **10** | System Tools | htop/btop, ncdu, Timeshift, tmux/screen, nvme-cli, Flatpak support, extension repository manager and qemu/virtmanager |
-| **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) |
+| **10** | Office & Productivity | Choose a software store to install. |
+| **12** | System Tools | htop/btop, ncdu, Timeshift, tmux/screen, nvme-cli, Flatpak support, extension repository manager and qemu/virtmanager |
+| **12** | Fetch / System Info | fastfetch/neofetch, hyfetch, Linux logo and screenfetch |
+| **13** | Back to Main Menu | Return directly to the main Debianito menu (exit submenu) |
---
@@ -94,34 +97,6 @@ The submenu offers the next categories:
| `modules/gaming/` | Gaming launcher and optimization scripts: Steam, Heroic, Lutris, performance tools. |
| `modules/gpu/` | GPU driver installation scripts for AMD and NVIDIA with architecture detection. |
| `modules/repos/` | Repository management scripts: migration tool (`migrate.sh`) and format detection (`repo_detect.sh`). |
-| `modules/extras/design/` | Multimedia & design tools installer (Blender, GIMP, Kdenlive, OBS). |
-| `modules/extras/dev/` | Development tools installer with special handling for Jellyfin and Java. |
-| `modules/extras/download/` | Download tools installer (aria2, FileZilla) and torrent clients (qBittorrent, Transmission). |
-| `modules/extras/essential/` | Essential package installer for basic system utilities on older Debian versions. |
-| `modules/extras/fetch/` | System information fetcher tools (neofetch, screenfetch, linuxlogo). |
-| `modules/extras/internet/` | Internet tools installer: browsers, email clients, download managers. |
-| `modules/extras/java.sh` | Java runtime installer for Minecraft and development (Temurin 8/17/21). |
-| `modules/extras/office/` | Office productivity suite installer (LibreOffice, GIMP alternatives). |
-| `modules/extras/players/` | Media player installer (MPV, VLC) with codec support. |
-| `modules/extras/programming/` | Code editors and IDEs installer (Vim, Neovim, Emacs, Kate). |
-| `modules/extras/security/` | Security tools installer: ClamAV, Fail2Ban, UFW, Wireshark. |
-| `modules/extras/system/` | System utilities installer with software center options (GNOME Software, Discover). |
-| `modules/extras/themes/` | Desktop customization installer: themes, icons, cursors, fonts. |
-| `modules/gaming/_helpers.sh` | Shared helper functions for gaming modules (32-bit support, Mesa drivers). |
-| `modules/gpu/amd_intel.sh` | AMD and Intel GPU firmware + monitoring tools (radeontop, nvtop, vainfo). |
-| `modules/gpu/_helpers.sh` | Shared helper functions for GPU detection (NVIDIA architecture checks). |
-| `modules/nvidia.sh` | NVIDIA driver installer with multi-architecture support (Kepler, Fermi, Maxwell, Pascal, Blackwell). |
-| `modules/amd_intel.sh` | AMD and Intel GPU firmware + monitoring tools installation. |
-| `modules/kernel.sh` | Kernel management: backports kernel installation and detection. |
-| `modules/repos/migrate.sh` | Branch migration tool for Debian stable → testing/SID with backup/rollback. |
-| `modules/repos/repo_detect.sh` | Repository format detection (DEB822 vs classic) for idempotent configuration. |
-| `modules/rescue.sh` | Boot rescue and repair tools: GRUB fix, chroot repair, system restore. |
-| `modules/sudo_config.sh` | Sudo configuration: group membership, passwordless sudo, home directory ownership. |
-| `modules/swap.sh` | Swap management: file/partition size configuration and enable/disable swap space. |
-| `modules/sysinfo.sh` | System information detection and display (OS, CPU, RAM, GPU, storage). |
-| `modules/utils.sh` | Utility functions shared across modules (color codes, confirmation dialogs, installation helpers). |
-| `modules/zram.sh` | ZRAM configuration for compressed RAM optimization. |
-| `README.md` | Project documentation and usage instructions. |
```bash
├── debianito.sh
@@ -135,12 +110,16 @@ The submenu offers the next categories:
│ ├── system_info.md
│ ├── user_priv_feed.md
│ └── zram.md
+├── media
+│ └── gift
+│ └── script.gif
├── modules
│ ├── bluetooth.sh
│ ├── bullseye
│ │ ├── extras.sh
│ │ ├── legacy.sh
│ │ └── repos.sh
+│ ├── desktop_display.sh
│ ├── extras
│ │ ├── design
│ │ │ └── design.sh
diff --git a/debianito.sh b/debianito.sh
index 9f01902..1ac3324 100644
--- a/debianito.sh
+++ b/debianito.sh
@@ -55,11 +55,11 @@ main_menu() {
sudo -v >/dev/null 2>&1 || true
local STATE_REFRESHED=false
local choice
- choice=$(_menu "DEBIANITO — simple configurator script" "" \
+ choice=$(_menu "DEBIANITO — Simple Configurator Script" "" \
$TUI_ALTO $TUI_ANCHO $TUI_ALTO_LISTA \
- "1" "System Info" \
+ "1" "System Information" \
"2" "User Privileges & Feedback" \
- "3" "Configure repositories" \
+ "3" "Configure Repositories" \
"4" "Firmware, Wireless & Bluetooth" \
"5" "Graphics Drivers & Mesa Stack" \
"6" "Backports Kernel" \
diff --git a/docs/boot.md b/docs/boot.md
new file mode 100644
index 0000000..cb1dbaf
--- /dev/null
+++ b/docs/boot.md
@@ -0,0 +1,73 @@
+## Option 11: Boot Rescue & Repair
+
+### 1. What does this component do?
+This component serves as a comprehensive rescue toolkit designed to diagnose and fix boot-related issues on Debian systems, specifically targeting GRUB configuration, UEFI Secure Boot integrity, and initrd image validity. It provides three primary operations: configuring the GRUB boot menu behavior (including timeout adjustments and visibility settings), repairing UEFI Secure Boot by reinstalling signed bootloader packages after kernel or driver changes, and regenerating initramfs images to resolve missing driver errors. All modifications are protected by automatic backup creation before system files are altered, with built-in rollback mechanisms that restore the original state if any operation fails during execution.
+
+### 2. Logical Execution Flow
+
+**Block 1 — GRUB Boot Menu Settings**
+- **Menu Options:** Users select from four presets or a custom option to control boot behavior:
+ 1. Hide GRUB menu entirely (Fastest boot, requires holding ESC during power-on).
+ 2. Show 3-second countdown (Faster boot).
+ 3. Show menu for 5 seconds (Default behavior).
+ 4. Custom timeout (User inputs specific seconds; -1 allows indefinite wait).
+- **Variable Application:** Each selection updates three core variables: `GRUB_TIMEOUT`, `GRUB_TIMEOUT_STYLE`, and `GRUB_RECORDFAIL_TIMEOUT`. The custom option also allows setting `GRUB_DISABLE_OS_PROBER` to prevent extra entries.
+- **Backup & Safety:** Before applying changes, the script creates a timestamped backup of `/etc/default/grub`. It writes an override configuration file at `/etc/default/grub.d/99_script_override.cfg` to ensure settings persist across updates.
+- **Execution & Rollback:** The system runs `update-grub` to apply changes. If this command fails, the script automatically restores the timestamped backup and removes the override file to prevent boot issues.
+
+**Block 2 — UEFI Secure Boot Repair**
+- **Pre-checks:** Before proceeding, the script verifies two conditions:
+ 1. The system is running in UEFI mode (checks for existence of `/sys/firmware/efi`).
+ 2. Secure Boot is currently enabled (uses `mokutil --sb-state` to confirm status).
+- **Skip Logic:** If either check fails, the process stops immediately with a message indicating no repair is needed or applicable.
+- **Repair Steps:** Upon user confirmation:
+ 1. Reinstalls signed boot packages (`shim-signed`, `grub-efi-amd64-signed`, `linux-image-amd64`).
+ 2. Reinstalls GRUB to the EFI partition using `grub-install` with the appropriate target and directory detection (preferring `/boot/efi` over `/boot`).
+ 3. Regenerates the GRUB configuration via `update-grub`.
+
+**Block 3 — Initramfs Regeneration**
+- **Confirmation:** The script prompts for user confirmation before proceeding to avoid unintended rebuilds.
+- **Execution:** Upon approval, it runs `update-initramfs -u -k all` to regenerate initrd images for all installed kernels.
+- **Purpose:** This fixes boot issues caused by missing drivers or corrupted initrd images that prevent the system from loading properly.
+
+### 3. Intelligent Automation
+
+- **EFI Directory Detection:** The script intelligently detects the EFI partition, checking `/boot/efi` first and falling back to `/boot` if necessary.
+- **Secure Boot State Verification:** Instead of assuming Secure Boot is active, it uses `mokutil --sb-state` to verify the actual state before attempting repairs on non-UEFI or disabled systems.
+- **GRUB Backup Strategy:** A timestamped backup file (e.g., `/etc/default/grub.backup.YYYYMMDD_HHMMSS`) is created prior to any modification, ensuring a safe point for rollback.
+- **Rollback Mechanism:** If `update-grub` fails during the GRUB settings or Secure Boot repair process, the script automatically restores the backup and cleans up temporary override files.
+- **Override Persistence:** Configuration values are written to `/etc/default/grub.d/99_script_override.cfg`, ensuring that changes survive package updates which might otherwise reset `/etc/default/grub`.
+- **Input Validation:** Custom timeout inputs are validated using regex matching for integers (e.g., `^-?[0-9]+$`), allowing negative numbers like -1 while rejecting invalid text.
+- **Variable Handling Logic:** The `_set_grub_var()` function handles three distinct cases: updating an existing variable, uncommenting a commented variable, or appending a new variable if it does not exist in the configuration file.
+
+### 4. Paquetes y Recursos Gestionados
+
+**Boot Packages Reinstalled (Secure Boot Repair):**
+| Package | Purpose |
+|---|---|
+| shim-signed | UEFI Secure Boot shim (first-stage bootloader) |
+| grub-efi-amd64-signed | Signed GRUB for UEFI |
+| linux-image-amd64 | Kernel image (re-signed) |
+
+**GRUB Settings Modified:**
+| Variable | Option 1 | Option 2 | Option 3 | Custom |
+|---|---|---|---|---|
+| GRUB_TIMEOUT | 0 | 3 | 5 | User value |
+| GRUB_TIMEOUT_STYLE | hidden | menu | menu | menu |
+| GRUB_RECORDFAIL_TIMEOUT | 0 | 3 | 5 | User value |
+| GRUB_DISABLE_OS_PROBER | true | — | — | — |
+
+**System Files Modified:**
+| Package | Purpose |
+|---|---|
+| /etc/default/grub | Main GRUB configuration |
+| /etc/default/grub.d/99_script_override.cfg | Persistent override (survives grub updates) |
+| /etc/default/grub.backup.* | Timestamped backup (auto-created) |
+
+>**Note UEFI:** The Secure Boot repair ONLY works on UEFI systems. The script checks for `/sys/firmware/efi` and `mokutil --sb-state` before attempting anything. Legacy BIOS systems are automatically skipped.
+
+>**Note GRUB:** After hiding the GRUB menu (Option 1), you must hold ESC immediately after powering on to access the menu. There is no other way to reach it during boot.
+
+> **Technical data:** The override file at `/etc/default/grub.d/99_script_override.cfg` persists across kernel updates because GRUB reads drop-in configs from that directory. This is more reliable than editing `/etc/default/grub` directly for values that should survive updates.
+
+> **Technical data:** `GRUB_DISABLE_OS_PROBER=true` is set when hiding the menu to prevent OS prober from adding extra entries that would require the menu to appear. For multi-boot systems, use Option 3 or Custom instead.
diff --git a/docs/desktops_display.md b/docs/desktops_display.md
new file mode 100644
index 0000000..4b45f0f
--- /dev/null
+++ b/docs/desktops_display.md
@@ -0,0 +1,100 @@
+## Option 12: Desktop & Display
+
+### 1. What does this component do?
+This component manages display managers (the login screen you see before entering your desktop). It allows users to install and configure LightDM, GDM3, SDDM, or greetd. It handles autologin setup, user list visibility toggles, and a specific Wayland override for NVIDIA GPUs. Currently, Desktop Environment management is marked as "Coming Soon".
+
+### 2. Logical Flow of Execution
+The execution logic is divided into five functional blocks:
+
+**Block 1 — Display Manager Selection**
+- The main menu offers two primary options within Option 12: "Desktop Environment" (currently unavailable) and "Display Manager".
+- Selecting "Display Manager" opens a submenu listing available display managers based on the Debian version.
+- **Available Managers:**
+ - LightDM (available on all Debian versions).
+ - GDM3 (available on all Debian versions).
+ - SDDM (available on all Debian versions).
+ - greetd (available only on Debian 12 and 13).
+- Each selected manager opens its own dedicated configuration submenu.
+
+**Block 2 — LightDM Configuration**
+- A checklist menu presents three options:
+ 1. Install LightDM + GTK Greeter (auto-selects the display manager via debconf-set-selections).
+ 2. Enable user list at login screen (writes `greeter-hide-users=false` to a configuration file in `.conf.d`).
+ 3. Enable autologin for current user (uncomments `autologin-user` and sets timeout to 0 in the main config).
+- **Idempotency:** The script checks if `lightdm` and `lightdm-gtk-greeter-settings` are already installed before attempting installation, skipping redundant steps.
+
+**Block 3 — GDM3 Configuration**
+- A checklist menu presents up to four options:
+ 1. Install/Reinstall gdm3 (auto-selects via debconf).
+ 2. Toggle user list visibility (toggles `disable-user-list` in greeter.dconf-defaults).
+ 3. Configure autologin (prompts for a username via whiptail inputbox to set in daemon.conf).
+ 4. Force Enable Wayland on NVIDIA (Bookworm/Trixie + NVIDIA only).
+ - **Mechanism:** Creates or removes a symlink: `/etc/udev/rules.d/61-gdm.rules` → `/dev/null`.
+ - **Purpose:** This disables the udev rule that blocks GDM from using Wayland on NVIDIA GPUs.
+ - **Risk Warning:** Displays a warning that this may break graphics or cause instability.
+ - **Toggle Behavior:** If the symlink exists, removing it reverts to default behavior; if not present, creating it enables the override.
+
+**Block 4 — SDDM Configuration**
+- A submenu offers two options:
+ 1. Install SDDM (auto-selects via debconf).
+ 2. Enable Autologin:
+ - **Session Detection:** Auto-detects the installed session by checking `.desktop` files in priority order: `plasmawayland` → `lxqt-wayland` → `plasma` → `lxqt`.
+ - **Configuration:** Writes autologin settings to `/etc/sddm.conf.d/autologin.conf`.
+ - **Fallback:** If no session is found, it enables autologin but warns that SDDM will use the default session.
+
+**Block 5 — greetd Configuration**
+- greetd is a minimal, modern display manager designed for Wayland environments.
+- Submenu options vary by Debian version:
+ - **All Versions:** Install base `greetd`, Install `greetd` + `tuigreet` (recommended TUI greeter).
+ - **Debian 13 only:** Additional options to install `gtk-greet`, `nwg-hello`, or `wlgreet`.
+- **Backports Handling:** On Bookworm, `tuigreet` is installed from backports if not enabled.
+- **Important Warning:** greetd is installed but NOT configured by the script. The user must manually create `/etc/greetd/config.toml` to be able to log in. The script displays a warning with references to man pages for configuration details.
+
+### 3. Smart Automations
+The component utilizes several intelligent automation features:
+- **debconf-set-selections:** Pre-selects the display manager as default before `apt install`, preventing the interactive "Configuring shared/default-x-display-manager" dialog that would otherwise pause the script execution.
+- **Session Auto-Detection (SDDM):** Checks `.desktop` files in priority order (Wayland first, then X11) to set the correct session type for autologin configuration.
+- **Wayland Toggle:** Creates or removes a udev rule symlink to `/dev/null`. This is a known workaround that disables the GDM rule blocking NVIDIA Wayland support.
+- **greetd Backports:** On Bookworm, `tuigreet` is installed from backports (newer version) if not already enabled in the system.
+- **Manual Config Warning:** The script explicitly informs users that greetd requires manual configuration and points to man pages for further details.
+- **User Detection:** Uses `SUDO_USER` (the real user who ran sudo) instead of `$USER` (which is root during script execution). This ensures the correct user is set for automatic login across all display managers.
+
+### 4. Packages and Resources Managed
+
+**Display Manager Packages:**
+| DM | Packages | Debian Versions |
+|---|---|---|
+| LightDM | lightdm, lightdm-gtk-greeter, lightdm-gtk-greeter-settings | All |
+| GDM3 | gdm3 | All |
+| SDDM | sddm | All |
+| greetd (base) | greetd | 12, 13 |
+| greetd + tuigreet | greetd, tuigreet | 12 (backports), 13 |
+| greetd + gtk-greet | greetd, gtk-greet | 13 only |
+| greetd + nwg-hello | greetd, nwg-hello | 13 only |
+| greetd + wlgreet | greetd, wlgreet | 13 only |
+
+**Configuration Files Modified:**
+| DM | File Path | Configuration Purpose |
+|---|---|---|
+| LightDM | /etc/lightdm/lightdm.conf.d/50-debianito-userlist.conf | User list visibility toggle |
+| LightDM | /etc/lightdm/lightdm.conf | Autologin user + timeout settings |
+| GDM3 | /etc/gdm3/greeter.dconf-defaults | User list toggle (disable-user-list) |
+| GDM3 | /etc/gdm3/daemon.conf | Autologin user and enable flag |
+| GDM3 | /etc/udev/rules.d/61-gdm.rules | Wayland override (symlink to /dev/null) |
+| SDDM | /etc/sddm.conf.d/autologin.conf | Autologin user + session type |
+
+**Session Detection Priority (SDDM Autologin):**
+| Priority | Session File | Session Type |
+|---|---|---|
+| 1 | /usr/share/wayland-sessions/plasmawayland.desktop | KDE Wayland |
+| 2 | /usr/share/wayland-sessions/lxqt-wayland.desktop | LXQt Wayland |
+| 3 | /usr/share/xsessions/plasma.desktop | KDE X11 |
+| 4 | /usr/share/xsessions/lxqt.desktop | LXQt X11 |
+
+> ⚠️ **Warning: Wayland on NVIDIA:** The "Force Enable Wayland on NVIDIA" option creates a symlink that disables the GDM udev rule. This is a known workaround but MAY cause graphics instability or breakage. To revert, remove `/etc/udev/rules.d/61-gdm.rules`.
+
+> ⚠️ **Warning: greetd:** Unlike other display managers, greetd is installed but NOT configured by this script. You MUST manually create `/etc/greetd/config.toml` before you can log in. See `man greetd` and `man 5 greetd-sessions` for configuration details.
+
+> ⚠️ **Warning: Autologin:** All autologin configurations use `SUDO_USER` (the user who ran sudo) instead of `$USER` (which is root during script execution). This ensures the correct user is set for automatic login.
+
+> 💡 **Technical Note:** `debconf-set-selections` pre-selects the display manager before apt install, preventing the interactive "Configuring shared/default-x-display-manager" dialog that would otherwise pause the script.
diff --git a/docs/gpu.md b/docs/gpu.md
index 9fbdb75..c86dfb3 100644
--- a/docs/gpu.md
+++ b/docs/gpu.md
@@ -51,7 +51,7 @@ This "detect-then-deploy" model prevents users from installing unnecessary drive
| **Gen7** (Ivy Bridge) | 22nm | HD Graphics 2500/4000 | `i915` | `crocus` | `ANV/HASVK` [(incomplete/broken)](https://www.reddit.com/r/vulkan/s/Hnf5zU8WZY) | First Gen at 22nm. `crocus` is the recommended OpenGL driver. Vulkan is exposed but completely non-conformant (0.0.0.0 ), lacks basic features (e.g., texture swizzle), and is [unusable for real-world tasks](https://www.phoronix.com/news/Intel-HasVK-Drop-Dead-Code).|
| **Gen7** (Bay Trail) | 22nm | HD Graphics (Bay Trail) | `i915` | `crocus` | `ANV`[(incomplete)](https://lists.debian.org/debian-user/2023/07/msg00550.html) | `conformanceVersion = 0.0.0.0` Support is experimental up to Vulkan 1.2, lacks basic extensions, and may cause instability. The separate HASVK driver exists but is not used on this system. |
| **Gen7.5** (Haswell) | 22nm | HD Graphics 4600, Iris Pro 5200 | `i915` | `crocus` | `hasvk` | Vulkan support via community driver `hasvk` (Vulkan 1.3). |
-| **Gen8** (Broadwell) | 14nm | HD Graphics 5300, Iris Pro 6200, Iris 6100 | `i915` | `iris/crocus` | `hasvk` | First generation at 14nm, `iris` becomes the main OpenGL driver. |
+| **Gen8** (Broadwell) | 14nm | HD Graphics 5300, Iris Pro 6200, Iris 6100 | `i915` | `iris` | `hasvk` | First generation at 14nm, `iris` becomes the main OpenGL driver. |
| **Gen9** (Skylake) | 14nm | HD Graphics 530, Iris 540/550 | `i915` | `iris` | `anv` | Mature architecture with strong Linux support. Major performance boost for iGPU. |
| **Gen9.5** (Kaby Lake, Coffee Lake, Comet Lake) | 14nm+ / 14nm++ | UHD Graphics 620/630, UHD 610/630 | `i915` | `iris` | `anv` | Process node optimization for 14nm. "UHD" replaces "HD" in naming convention. |
| **Gen11** (Ice Lake) | 10nm | UHD Graphics G1, Iris Plus G4/G7 | `i915` | `iris` | `anv` | First architecture at 10nm. Vulkan 1.3+ support. |
diff --git a/docs/repos_config.md b/docs/repos_config.md
index 3ec9c97..b9f70a6 100644
--- a/docs/repos_config.md
+++ b/docs/repos_config.md
@@ -36,7 +36,7 @@ deb https://deb.debian.org/debian bookworm main contrib non-free non-free-firmwa
```yaml
Types: deb
URIs: https://deb.debian.org/debian
-Suites: bookworm bookworm-updates
+Suites: trixie trixie-updates
Components: main contrib non-free non-free-firmware
```
@@ -52,6 +52,7 @@ The script automatically detects your current format and offers migration option
The `configure_repos()` function in `repos.sh` executes the following sequence:
+
```bash
┌─────────────────────────────────────────────────────────────┐
│ INITIAL DETECTION PHASE │
@@ -71,51 +72,61 @@ The `configure_repos()` function in `repos.sh` executes the following sequence:
┌─────────────────────────────────────────────────────────────┐
│ USER INTERACTION PHASE │
├─────────────────────────────────────────────────────────────┤
-│ 4. Repository Format Selection (Trixie only) │
-│ └── whiptail yesno: Migrate to DEB822? (default NO) │
+│ 4. Repository Menu Loop (while true) │
+│ └── _menu: Select action from multiple options │
│ │
-│ 5. Backports Enablement │
-│ └── whiptail confirm: Enable Backports? │
+│ Options Available: │
+│ ├── Debian 13+ (Trixie): │
+│ │ ├── 1. Enable Contrib & Non-Free Components │
+│ │ ├── 2. Migrate traditional sources.list to DEB822 │
+│ │ ├── 3. Setup/Update Backports repositories │
+│ │ ├── 4. [ADVANCED] Upgrade system branch (Testing/SID)│
+│ │ └── 5. Back to main menu │
+│ │
+│ └── Other Versions: │
+│ ├── 1-3 same as above │
+│ └── No option 4 (branch upgrade not available) │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ DECISION MATRIX PHASE │
├─────────────────────────────────────────────────────────────┤
-│ 6. Determine Action Type │
+│ 5. Determine Action Type (per menu selection) │
│ ├── If format changed → "migrate" │
-│ ├── If nothing changed → "update" (skip) │
+│ ├── If nothing changed → "skip" (idempotent) │
│ └── Otherwise → "write" │
│ │
-│ 7. Idempotency Check │
+│ 6. Idempotency Check │
│ └── content_differs() compares generated vs existing │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ EXECUTION PHASE │
├─────────────────────────────────────────────────────────────┤
-│ 8. Backup Current Repositories │
+│ 7. Backup Current Repositories │
│ └── backup_current_repos() → temp directory │
│ │
-│ 9. Write Configuration │
+│ 8. Write Configuration │
│ ├── _write_deb822() OR _write_classic() │
│ ├── Creates appropriate file(s) │
│ └── Includes main + backports if enabled │
│ │
-│ 10. Update Package Lists │
+│ 9. Update Package Lists │
│ └── sudo apt update │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ POST-EXECUTION PHASE │
├─────────────────────────────────────────────────────────────┤
-│ 11. Success Path │
+│ 10. Success Path │
│ ├── REPOS_CONFIGURED=true │
│ ├── Cleanup disabled files │
│ └── Optional: Upgrade system if packages available │
│ │
-│ 12. Failure Path (apt update failed) │
+│ 11. Failure Path (apt update failed) │
│ └── restore_previous_repos() → rollback to backup │
└─────────────────────────────────────────────────────────────┘
+
```
**Key Safety Mechanisms:**
@@ -134,7 +145,7 @@ The script enables specific APT component branches that are essential for hardwa
|-----------|---------|--------------|---------------------|
| **main** | Free, open-source software (Debian official) | All packages | Always enabled |
| **contrib** | Free software that uses non-free components | Proprietary codecs, drivers | Enabled in all versions |
-| **non-free** | Non-free firmware and proprietary software | NVIDIA/AMD GPU drivers, Wi-Fi firmware | Required for hardware support |
+| **non-free** | Non-free firmware and proprietary software | NVIDIA GPU drivers, Wi-Fi firmware | Required for hardware support |
| **non-free-firmware** | Firmware blobs (Wi-Fi, Bluetooth, etc.) | Wireless adapters, embedded chips | **Critical from Debian 12+** |
#### Why `non-free-firmware` is Vital (Debian 12+)
@@ -143,7 +154,7 @@ Starting with Debian Bookworm (12.0), the `non-free-firmware` component was sepa
```bash
# Before Debian 12 (Bookworm)
-deb https://deb.debian.org/debian bookworm main contrib non-free
+deb https://deb.debian.org/debian bullseye main contrib non-free
# After Debian 12 (Bookworm+) - SEPARATE COMPONENTS
deb https://deb.debian.org/debian bookworm main contrib non-free non-free-firmware
@@ -221,7 +232,7 @@ The script includes a detailed explanation because backports enable critical fea
| Feature | Without Backports | With Backports |
|---------|-------------------|----------------|
-| **Linux Kernel** | Stable kernel only (e.g., 5.10) | Newer kernels (e.g., 6.x series) |
+| **Linux Kernel** | Stable kernel only (e.g., 6.1-6.12) | Newer kernels (e.g., 6.x/7.x series) |
| **GPU "Drivers"** | Latest Mesa from stable | Latest Mesa from testing |
| **Wi-Fi Firmware** | Older firmware versions | Newest firmware for modern cards |
| **System Stability** | Maximum stability | Tested-but-newer packages |
diff --git a/docs/swap.md b/docs/swap.md
new file mode 100644
index 0000000..ce66140
--- /dev/null
+++ b/docs/swap.md
@@ -0,0 +1,72 @@
+## Option 9: Swap
+
+### 1. What does this component do?
+This module is responsible for the secure management of disk-based swap space within the `debianito` environment. Unlike standard Linux tools that might overwrite existing configurations or conflict with memory compression features (like ZRAM), this script operates as a **priority-aware, persistent swap manager**.
+
+Its primary functions include:
+* **Dynamic Allocation:** Creating and resizing swapfiles based on detected RAM capacity without requiring physical partition changes.
+* **Priority Integration:** Explicitly setting the swap priority (`pri=10`) to ensure it sits below ZRAM (which uses `priority=100`). This prevents the system from using disk I/O for memory swapping until compressed RAM is exhausted, optimizing performance.
+* **Persistence Management:** Safely editing `/etc/fstab` with a unique tag (`# debianito-managed-swap`) to ensure swap survives reboots without corrupting manual entries.
+* **Safety Locking:** Prevents concurrent operations using file locking mechanisms to avoid race conditions during active system usage.
+
+### 2. How does it work?
+The script leverages several advanced Linux subsystems and safety protocols:
+
+1. **File System Detection:** It identifies the filesystem type of the target partition (e.g., `ext4`, `btrfs`). For Btrfs, it applies specific flags (`chattr +C` for copy-on-write optimization) to prevent performance degradation during swap operations.
+2. **Allocation Strategy:** It prefers `fallocate` for instant space reservation on supported filesystems, falling back to `dd if=/dev/zero` for compatibility or zeroing requirements (like Btrfs).
+3. **Fstab Validation:** Before writing changes to `/etc/fstab`, it creates a temporary file and validates the syntax using `findmnt --verify`. If validation fails, the script aborts and restores the original state.
+4. **Concurrency Control:** It utilizes `flock` on `/run/lock/debianito-swap.lock`. This ensures that if another process is modifying swap settings (e.g., a system update), this script will wait or exit gracefully to prevent filesystem corruption.
+5. **Swappiness Tuning:** It configures `vm.swappiness` via both runtime (`sysctl -w`) and persistent (`/etc/sysctl.d/99-swappiness-debianito.conf`) mechanisms, defaulting to values that favor RAM usage over disk swapping (e.g., 10-20).
+
+### 3. The Logical Decision Tree (Step by Step)
+The execution flow follows a strict logical tree designed for safety and idempotency:
+
+1. **Initialization & Locking:**
+ * The `manage_swap()` function attempts to acquire an exclusive lock (`flock -n`). If the lock is held by another process, it immediately exits with a "Busy" message to prevent conflicts.
+
+2. **Menu Selection Loop:**
+ * Enters a continuous loop presenting options (Status, Create, Remove, Swappiness).
+ * Breaks only when the user selects "Back to main menu".
+
+3. **Action Execution Paths:**
+ * **Path A: Status Check (`_swap_current_status`)**
+ * Reads active swap entries via `swapon --show`.
+ * Reads current swappiness from `/proc/sys/vm/swappiness`.
+ * Parses `/etc/fstab` for managed tags.
+ * **Path B: Create/Resize (`_swap_create_file`)**
+ * **Recommendation:** Calculates optimal size based on RAM (e.g., 2GB for >16GB RAM, 4GB for 8-16GB).
+ * **Btrfs Check:** If the filesystem is Btrfs, it warns about `nodatacow` requirements and hibernation limitations.
+ * **Existence Check:** If `/swapfile` exists, it prompts to confirm recreation (deleting old data first via `swapoff`).
+ * **Allocation:** Uses `fallocate` or `dd` to zero the file. Sets permissions (`chmod 600`) and initializes swap (`mkswap`).
+ * **Persistence:** Attempts to write the new entry to `/etc/fstab`. If validation fails, it cleans up (removes file) before exiting.
+ * **Path C: Remove (`_swap_remove_file`)**
+ * Checks for the unique `SWAP_FSTAB_TAG` in fstab.
+ * Confirms user intent to delete.
+ * Executes `swapoff`, removes the fstab line, and deletes the physical file.
+ * **Path D: Swappiness (`_swap_set_swappiness`)**
+ * Validates input (0-100 integer).
+ * Writes a temporary sysctl config file.
+ * Applies changes immediately via `sysctl -w`.
+
+### 4. What does each menu item do and what does it mean?
+Each option in the swap management submenu serves a specific technical purpose:
+
+* **Option 1: Show current swap & swappiness**
+ * **Technical Action:** Aggregates data from `/proc/swaps`, `/proc/sys/vm/swappiness`, and `/etc/fstab`.
+ * **Significance:** Provides an audit trail of the current memory management state. It verifies if ZRAM is active (implied by priority check) and how much disk swap is currently in use.
+
+* **Option 2: Create / resize swapfile**
+ * **Technical Action:** Allocates a new block device file (`/swapfile`) or expands an existing one. Sets the `pri=10` flag to ensure it acts as a secondary memory layer after ZRAM fills up.
+ * **Significance:** Essential for systems with low RAM that need overflow protection without installing physical partitions. The "Resize" capability allows adapting to new hardware configurations dynamically.
+
+* **Option 3: Remove swapfile**
+ * **Technical Action:** Disables the swapfile (`swapoff`), removes it from `/etc/fstab`, and deletes the file from disk.
+ * **Significance:** Useful for troubleshooting, freeing up disk space (e.g., on SSDs where write cycles are a concern), or migrating to ZRAM-only configurations if RAM is sufficient.
+
+* **Option 4: Change swappiness**
+ * **Technical Action:** Modifies the kernel parameter `vm.swappiness`.
+ * **Significance:** Controls the "aggressiveness" of swapping. A lower value (e.g., 10) tells the kernel to keep data in RAM longer, only using swap as a last resort. This is critical for desktop performance and battery life on laptops.
+
+* **Option 5: Back to main menu**
+ * **Technical Action:** Releases the file lock (`exec 9>&-`) and terminates the submenu loop.
+ * **Significance:** Returns control to the user, ensuring no swap operations are running in the background before they navigate to other system configurations.
diff --git a/media/gift/script.gif b/media/gift/script.gif
new file mode 100644
index 0000000000000000000000000000000000000000..af12e96e44be1512a45cbaf169174dfd0a9c23f1
GIT binary patch
literal 872491
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