Debian 13 : le script complet que j’utilise pour obtenir une machine propre, sécurisée et prête à l’emploi

Posted on

Debian 13 : le script complet que j’utilise pour obtenir une machine propre, sécurisée et prête à l’emploi

Installer Debian, ce n’est pas compliqué.
En revanche, la remettre exactement comme on l’aime, avec les bons dépôts, les bons outils, les bons réglages GNOME, le bon boot, un minimum de sécurité, Steam, Tor, ProtonVPN, les codecs, les outils réseau et tout le reste… ça prend vite du temps.

À force de refaire les mêmes étapes, j’ai fini par regrouper toute ma post-install dans un script unique.

L’idée n’est pas de transformer Debian en distribution exotique.
Le but est plus simple : obtenir une Debian 13 stable, propre, cohérente, confortable au quotidien et suffisamment complète pour travailler, naviguer et jouer.

Avant de lancer ce script ,veillez à activer le secureboot dans le bios et pendant l’installation de debian choisissez de chiffrer votre disque avec lvm pour plus de securité !

En résumé

Ce script automatise une vraie post-install Debian desktop :

  • dépôts Debian complets
  • firmwares et microcodes
  • GNOME + thème + outils
  • boot propre avec Plymouth Moonlight
  • Firefox via Mozilla, Brave, Steam, Tor Browser, Wine, ProtonVPN
  • LibreOffice, Flatpak, Flatseal, GIMP, Inkscape
  • UFW, AppArmor, quelques réglages de hardening
  • optimisation laptop (TLP, zram, trim SSD)
  • outils de monitoring et helpers système

Ce que fait le script

Concrètement, le script couvre les blocs suivants :

Base système

  • activation de main contrib non-free non-free-firmware
  • mise à jour complète
  • installation des outils de base

Support matériel

  • firmwares non libres
  • microcodes Intel / AMD
  • outils GPU / vidéo

Interface

  • GNOME Tweaks
  • Extension Manager
  • Dash to Dock
  • icônes Tela Circle Green
  • helpers de thème GNOME

Boot

  • GRUB discret
  • Plymouth Moonlight
  • démarrage plus silencieux

Sécurité

  • UFW
  • AppArmor
  • ClamAV
  • quelques réglages sysctl raisonnables

Réseau

  • Wireshark
  • Nmap
  • dnsutils
  • net-tools
  • mtr
  • tcpdump
  • iperf3
  • arp-scan

Applications

  • Firefox via dépôt Mozilla
  • Brave via dépôt officiel
  • Tor Browser
  • Steam
  • Wine + Winetricks
  • ProtonVPN
  • LibreOffice complet
  • Flatpak + Flatseal

Création et productivité

  • GIMP
  • Inkscape
  • scanner
  • impression
  • outils PDF

Monitoring / maintenance

  • btop, htop, fastfetch
  • smartmontools
  • nvme-cli
  • Timeshift
  • scripts de healthcheck et rapport GPU

Optimisation laptop

  • TLP
  • zram
  • trim SSD

Ce que ce script n’essaie pas de faire

Il n’installe pas tout et n’importe quoi juste pour “faire monter un score”.
Par exemple :

  • pas de openssh-server par défaut
  • pas de fail2ban si le portable n’expose pas SSH
  • pas de hardening serveur extrême qui ruine le confort d’usage

Comment utiliser le script

1) Créer le fichier

nano debian13_premium_interactif.sh

2) Coller le script complet

Le script complet est plus bas dans l’article.

3) Rendre le fichier exécutable

chmod +x debian13_premium_interactif.sh

Petit rappel utile : chmod +x ajoute le droit d’exécution au fichier.
Sans cette commande, Linux voit simplement ton script comme un fichier texte.

4) Vérifier la syntaxe

bash -n debian13_premium_interactif.sh

Si la commande ne renvoie rien, c’est bon.

5) Lancer le script

sudo ./debian13_premium_interactif.sh

6) Choisir l’installation complète

14) Tout installer - V2 CYBER + GODMODE

Conseil

Si tu veux simplement reproduire toute la config décrite ici, prends directement l’option 14.
Le menu interactif est pratique, mais dans mon cas c’est cette option que j’utilise.


Script complet

#!/usr/bin/env bash
set -Eeuo pipefail

trap 'echo; echo "[ERREUR] Ligne ${LINENO}. Le script a rencontré une erreur." >&2' ERR

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
LOG_FILE="${SCRIPT_DIR}/debian13-premium-install.log"
exec > >(tee -a "$LOG_FILE") 2>&1

CODENAME="$(. /etc/os-release && echo "${VERSION_CODENAME:-}")"
REAL_USER="${SUDO_USER:-${USER}}"
REAL_HOME="$(getent passwd "$REAL_USER" | cut -d: -f6)"
REAL_UID="$(id -u "$REAL_USER")"
REAL_GID="$(id -g "$REAL_USER")"

if [[ $EUID -ne 0 ]]; then
  echo "Ce script doit être lancé avec sudo ou en root."
  exit 1
fi

if [[ "$CODENAME" != "trixie" ]]; then
  echo "Attention : ce script a été prévu pour Debian 13 / trixie. Système détecté : ${CODENAME:-inconnu}."
  read -r -p "Continuer quand même ? [o/N] " ans
  [[ "$ans" =~ ^[oOyY]$ ]] || exit 1
fi

export DEBIAN_FRONTEND=noninteractive

msg() { echo; echo "==> $*"; }
warn() { echo "[!] $*"; }
ok() { echo "[OK] $*"; }

configure_debian_repos() {
  msg "Activation de main contrib non-free non-free-firmware"
  cat >/etc/apt/sources.list <<EOF
# Debian 13 (trixie)
deb http://deb.debian.org/debian trixie main contrib non-free non-free-firmware
deb http://deb.debian.org/debian trixie-updates main contrib non-free non-free-firmware
deb http://security.debian.org/debian-security trixie-security main contrib non-free non-free-firmware
EOF
  apt-get update
  ok "Dépôts Debian configurés"
}

ensure_base_tools() {
  msg "Installation des outils de base"
  apt-get update
  apt-get install -y \
    apt-transport-https ca-certificates curl wget gnupg gpg jq \
    lsb-release unzip zip p7zip-full unrar \
    git rsync file xdg-utils dbus-x11 dconf-cli build-essential \
    bash-completion nano vim sudo sed grep tar gzip xz-utils
}

full_upgrade() {
  msg "Mise à niveau complète"
  apt-get update
  apt-get full-upgrade -y
  apt-get autoremove -y
  apt-get autoclean -y
  ok "Système mis à jour"
}

install_firmware() {
  msg "Installation des firmwares et microcodes"
  local pkgs=(firmware-linux firmware-misc-nonfree)
  if grep -qi intel /proc/cpuinfo; then pkgs+=(intel-microcode); fi
  if grep -qi amd /proc/cpuinfo; then pkgs+=(amd64-microcode); fi
  apt-get install -y "${pkgs[@]}"
  ok "Firmwares installés"
}

install_desktop_base() {
  msg "Installation du socle GNOME / confort"
  apt-get install -y \
    gnome-tweaks gnome-shell-extensions gnome-shell-extension-manager \
    gnome-browser-connector dconf-editor baobab file-roller \
    adwaita-icon-theme-full papirus-icon-theme gnome-software-plugin-flatpak
  ok "Socle GNOME installé"
}

install_fonts() {
  msg "Installation des polices"
  apt-get install -y \
    fonts-cantarell fonts-inter fonts-noto fonts-noto-cjk \
    fonts-firacode fonts-jetbrains-mono fonts-font-awesome
  ok "Polices installées"
}

install_codecs_media() {
  msg "Installation codecs et multimédia"
  apt-get install -y \
    ffmpeg vlc mpv pavucontrol \
    gstreamer1.0-libav gstreamer1.0-plugins-good \
    gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly
  ok "Codecs installés"
}

install_network_tools() {
  msg "Installation des outils réseau"
  apt-get install -y \
    wireshark nmap dnsutils net-tools traceroute whois tcpdump \
    mtr ethtool iperf3 arp-scan curl wget rsync openssh-client \
    nftables inetutils-ping inetutils-traceroute bind9-dnsutils
  if getent group wireshark >/dev/null 2>&1; then
    usermod -aG wireshark "$REAL_USER" || true
  fi
  ok "Outils réseau installés"
}

install_security_stack() {
  msg "Installation de la pile sécurité"
  apt-get install -y \
    ufw gufw apparmor apparmor-utils \
    clamav clamav-daemon clamtk rkhunter chkrootkit
  systemctl enable apparmor || true
  ufw default deny incoming || true
  ufw default allow outgoing || true
  yes | ufw enable || true
  freshclam || true
  ok "Sécurité installée et UFW activé"
}

install_monitoring_backup() {
  msg "Installation monitoring / sauvegarde"
  apt-get install -y \
    btop htop fastfetch lm-sensors smartmontools nvme-cli \
    deja-dup timeshift
  systemctl enable smartmontools || true
  ok "Monitoring et sauvegarde installés"
}

install_creative_tools() {
  msg "Installation outils créatifs / PDF / impression"
  apt-get install -y \
    gimp inkscape simple-scan cups system-config-printer \
    ghostscript poppler-utils imagemagick
  ok "Outils créatifs / PDF installés"
}

install_office_suite() {
  msg "Installation bureautique LibreOffice"
  apt-get install -y \
    libreoffice libreoffice-l10n-fr libreoffice-help-fr \
    libreoffice-gtk3 libreoffice-style-colibre libreoffice-style-breeze \
    hunspell-fr mythes-fr hyphen-fr
  ok "LibreOffice installé"
}

install_reading_apps() {
  msg "Installation lecture / confort"
  apt-get install -y foliate evince okular loupe
  ok "Applications de lecture installées"
}

configure_plymouth_grub() {
  msg "Configuration de Plymouth et d'un démarrage discret"
  apt-get install -y plymouth plymouth-themes

  if grep -q '^GRUB_TERMINAL=' /etc/default/grub; then
    sed -i 's/^GRUB_TERMINAL=.*/GRUB_TERMINAL=console/' /etc/default/grub
  else
    echo 'GRUB_TERMINAL=console' >> /etc/default/grub
  fi

  if grep -q '^GRUB_DEFAULT=' /etc/default/grub; then
    sed -i 's/^GRUB_DEFAULT=.*/GRUB_DEFAULT=0/' /etc/default/grub
  else
    echo 'GRUB_DEFAULT=0' >> /etc/default/grub
  fi

  if grep -q '^GRUB_TIMEOUT=' /etc/default/grub; then
    sed -i 's/^GRUB_TIMEOUT=.*/GRUB_TIMEOUT=0/' /etc/default/grub
  else
    echo 'GRUB_TIMEOUT=0' >> /etc/default/grub
  fi

  if grep -q '^GRUB_TIMEOUT_STYLE=' /etc/default/grub; then
    sed -i 's/^GRUB_TIMEOUT_STYLE=.*/GRUB_TIMEOUT_STYLE=hidden/' /etc/default/grub
  else
    echo 'GRUB_TIMEOUT_STYLE=hidden' >> /etc/default/grub
  fi

  if grep -q '^GRUB_CMDLINE_LINUX_DEFAULT=' /etc/default/grub; then
    sed -i 's|^GRUB_CMDLINE_LINUX_DEFAULT=.*|GRUB_CMDLINE_LINUX_DEFAULT="quiet splash loglevel=3 rd.systemd.show_status=0 vt.global_cursor_default=0"|' /etc/default/grub
  else
    echo 'GRUB_CMDLINE_LINUX_DEFAULT="quiet splash loglevel=3 rd.systemd.show_status=0 vt.global_cursor_default=0"' >> /etc/default/grub
  fi

  if grep -q '^GRUB_CMDLINE_LINUX=' /etc/default/grub; then
    sed -i 's|^GRUB_CMDLINE_LINUX=.*|GRUB_CMDLINE_LINUX=""|' /etc/default/grub
  else
    echo 'GRUB_CMDLINE_LINUX=""' >> /etc/default/grub
  fi

  if grep -q '^GRUB_GFXMODE=' /etc/default/grub; then
    sed -i 's/^GRUB_GFXMODE=.*/GRUB_GFXMODE=1920x1080x32/' /etc/default/grub
  else
    echo 'GRUB_GFXMODE=1920x1080x32' >> /etc/default/grub
  fi

  sed -i 's/^quiet_boot="0"/quiet_boot="1"/' /etc/grub.d/10_linux || true

  if plymouth-set-default-theme -l 2>/dev/null | grep -qx 'moonlight'; then
    plymouth-set-default-theme -R moonlight || true
    ok "Thème Plymouth activé : moonlight"
  else
    warn "Le thème Moonlight n'est pas listé par Plymouth sur cette machine. Plymouth reste installé, et tu pourras choisir un autre thème avec : sudo plymouth-set-default-theme -l"
  fi

  update-grub || true
  update-initramfs -u || true
  ok "GRUB et initramfs mis à jour"
}

install_tela_circle_green() {
  msg "Installation de Tela Circle Green"
  apt-get install -y gtk2-engines-murrine sassc
  local tmpdir
  tmpdir="$(mktemp -d)"
  if git clone --depth=1 https://github.com/vinceliuice/Tela-circle-icon-theme.git "$tmpdir/tela-circle"; then
    bash "$tmpdir/tela-circle/install.sh" -d /usr/share/icons -c green
    ok "Tela Circle Green installé"
  else
    warn "Échec du clonage de Tela Circle"
  fi
  rm -rf "$tmpdir"
}

create_user_theme_helpers() {
  msg "Création des helpers GNOME Cyber"
  install -d -m 0755 "$REAL_HOME/.config"

  cat >"$REAL_HOME/.config/debian-premium-apply-theme.sh" <<'EOF'
#!/usr/bin/env bash
set -e
if command -v gsettings >/dev/null 2>&1; then
  gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark' || true
  gsettings set org.gnome.desktop.interface gtk-theme 'Adwaita-dark' || true
  gsettings set org.gnome.desktop.interface icon-theme 'Tela-circle-green' || true
  gsettings set org.gnome.desktop.interface font-name 'Inter 10' || true
  gsettings set org.gnome.desktop.interface document-font-name 'Inter 10' || true
  gsettings set org.gnome.desktop.interface monospace-font-name 'JetBrains Mono 10' || true
  gsettings set org.gnome.desktop.wm.preferences button-layout ':minimize,maximize,close' || true
  gsettings set org.gnome.desktop.interface enable-animations true || true
fi
EOF

  cat >"$REAL_HOME/.config/debian-premium-enable-dock.sh" <<'EOF'
#!/usr/bin/env bash
set -e
EXT='dash-to-dock@micxgx.gmail.com'
if command -v gnome-extensions >/dev/null 2>&1; then
  gnome-extensions enable "$EXT" || true
fi
gsettings set org.gnome.shell.extensions.dash-to-dock dock-position 'BOTTOM' || true
gsettings set org.gnome.shell.extensions.dash-to-dock extend-height false || true
gsettings set org.gnome.shell.extensions.dash-to-dock autohide true || true
gsettings set org.gnome.shell.extensions.dash-to-dock multi-monitor true || true
gsettings set org.gnome.shell.extensions.dash-to-dock transparency-mode 'FIXED' || true
gsettings set org.gnome.shell.extensions.dash-to-dock background-opacity 0.65 || true
gsettings set org.gnome.shell.extensions.dash-to-dock dash-max-icon-size 42 || true
EOF

  cat >"$REAL_HOME/.config/debian-premium-transparent-top-bar.txt" <<'EOF'
Transparent Top Bar n'est pas empaqueté officiellement dans Debian trixie.
Le script installe gnome-browser-connector et Extension Manager.
Après reconnexion GNOME :
1) ouvre "Extension Manager"
2) cherche "Transparent Top Bar"
3) installe l'extension compatible avec ta version GNOME
4) active-la

Extensions GNOME utiles à ajouter ensuite :
- Blur my Shell
- Just Perfection
- AppIndicator and KStatusNotifierItem Support
- Clipboard Indicator
- Caffeine
EOF

  cat >"$REAL_HOME/.config/debian-premium-cyber-terminal.txt" <<'EOF'
Réglages conseillés pour un look cyber dark green :
- Terminal GNOME profil sombre
- police JetBrains Mono 11 ou Fira Code 11
- palette verte discrète
- fastfetch au démarrage si tu veux

Exemple à ajouter à ~/.bashrc :
if command -v fastfetch >/dev/null 2>&1; then
  fastfetch
fi
EOF

  cat >"$REAL_HOME/.config/debian-premium-cyber-wallpaper.txt" <<'EOF'
Pour le style Cyber Dark Green :
- choisis un fond sombre noir/vert dans Paramètres > Arrière-plan
- garde Adwaita-dark + Tela-circle-green
- active Transparent Top Bar + Blur my Shell
EOF

  chown "$REAL_UID:$REAL_GID" \
    "$REAL_HOME/.config/debian-premium-apply-theme.sh" \
    "$REAL_HOME/.config/debian-premium-enable-dock.sh" \
    "$REAL_HOME/.config/debian-premium-transparent-top-bar.txt" \
    "$REAL_HOME/.config/debian-premium-cyber-terminal.txt" \
    "$REAL_HOME/.config/debian-premium-cyber-wallpaper.txt"
  chmod +x "$REAL_HOME/.config/debian-premium-apply-theme.sh" "$REAL_HOME/.config/debian-premium-enable-dock.sh"
  ok "Helpers GNOME créés dans ~/.config"
}

remove_firefox_esr_and_install_mozilla() {
  msg "Suppression de Firefox ESR et installation de Firefox Mozilla"
  apt-get remove -y firefox-esr || true
  install -d -m 0755 /etc/apt/keyrings
  wget -q https://packages.mozilla.org/apt/repo-signing-key.gpg -O- | gpg --dearmor -o /etc/apt/keyrings/packages.mozilla.org.gpg
  echo 'deb [signed-by=/etc/apt/keyrings/packages.mozilla.org.gpg] https://packages.mozilla.org/apt mozilla main' >/etc/apt/sources.list.d/mozilla.list
  cat >/etc/apt/preferences.d/mozilla <<EOF
Package: *
Pin: origin packages.mozilla.org
Pin-Priority: 1000
EOF
  apt-get update
  apt-get install -y firefox firefox-l10n-fr
  ok "Firefox Mozilla installé"
}

install_brave() {
  msg "Installation de Brave"
  curl -fsSLo /usr/share/keyrings/brave-browser-archive-keyring.gpg https://brave-browser-apt-release.s3.brave.com/brave-browser-archive-keyring.gpg
  echo 'deb [signed-by=/usr/share/keyrings/brave-browser-archive-keyring.gpg arch=amd64] https://brave-browser-apt-release.s3.brave.com/ stable main' >/etc/apt/sources.list.d/brave-browser-release.list
  apt-get update
  apt-get install -y brave-browser
  ok "Brave installé"
}

install_steam() {
  msg "Installation de Steam"
  dpkg --add-architecture i386
  apt-get update
  apt-get install -y steam-installer
  ok "Steam installé"
}

install_protonvpn() {
  msg "Installation de ProtonVPN"
  local tmpdeb="/tmp/protonvpn-stable-release.deb"
  rm -f /etc/apt/sources.list.d/protonvpn-stable.list /etc/apt/sources.list.d/*proton* || true
  wget -O "$tmpdeb" https://repo.protonvpn.com/debian/dists/stable/main/binary-all/protonvpn-stable-release_1.0.8_all.deb
  dpkg -i "$tmpdeb" || apt-get install -fy
  apt-get update
  apt-get install -y proton-vpn-gnome-desktop || apt-get install -y proton-vpn-cli || true
  ok "ProtonVPN installé"
}

install_privacy_windows_tools() {
  msg "Installation de Tor Browser et Wine"
  dpkg --add-architecture i386
  apt-get update
  apt-get install -y \
    torbrowser-launcher \
    wine wine64 wine32 winetricks libwine fonts-wine
  ok "Tor Browser et Wine installés"
}

install_flatpak_stack() {
  msg "Installation de Flatpak / Flathub / Flatseal"
  apt-get install -y flatpak
  flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo || true
  flatpak install -y flathub com.github.tchx84.Flatseal || true
  ok "Flatpak et Flatseal installés"
}

install_gaming_tools() {
  msg "Installation des outils gaming"
  apt-get install -y gamemode mangohud goverlay
  ok "Outils gaming installés"
}

install_dash_to_dock() {
  msg "Installation de Dash to Dock"
  apt-get install -y gnome-shell-extension-dashtodock
  ok "Dash to Dock installé"
}

install_laptop_power_stack() {
  msg "Installation de la pile autonomie / laptop"
  apt-get install -y tlp tlp-rdw powertop acpi acpid smartmontools
  systemctl enable tlp || true
  systemctl enable acpid || true
  systemctl mask power-profiles-daemon || true
  systemctl stop power-profiles-daemon || true
  ok "TLP installé ; power-profiles-daemon neutralisé pour éviter les conflits"
}

install_auto_cpufreq_best_effort() {
  msg "Tentative d'installation d'auto-cpufreq"
  if apt-cache show auto-cpufreq >/dev/null 2>&1; then
    apt-get install -y auto-cpufreq
    systemctl enable auto-cpufreq || true
    ok "auto-cpufreq installé via APT"
  else
    warn "auto-cpufreq non disponible dans APT Debian. Je laisse TLP comme base fiable."
  fi
}

configure_zram() {
  msg "Activation de zram"
  if apt-cache show systemd-zram-generator >/dev/null 2>&1; then
    apt-get install -y systemd-zram-generator
    install -d /etc/systemd/zram-generator.conf.d
    cat >/etc/systemd/zram-generator.conf.d/cyber.conf <<EOF
[zram0]
zram-size = ram / 2
compression-algorithm = zstd
EOF
    systemctl daemon-reload
    ok "zram configuré via systemd-zram-generator"
  else
    warn "systemd-zram-generator absent du dépôt ; zram ignoré"
  fi
}

configure_ssd_trim() {
  msg "Activation du trim SSD hebdomadaire"
  systemctl enable fstrim.timer || true
  systemctl start fstrim.timer || true
  ok "fstrim.timer activé"
}

configure_sysctl_hardening() {
  msg "Application d'un durcissement sysctl raisonnable"
  cat >/etc/sysctl.d/99-debian-cyber.conf <<EOF
kernel.kptr_restrict = 2
kernel.dmesg_restrict = 1
kernel.unprivileged_bpf_disabled = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv6.conf.all.accept_redirects = 0
net.ipv6.conf.default.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
fs.protected_fifos = 2
fs.protected_regular = 2
vm.swappiness = 10
EOF
  sysctl --system || true
  ok "Durcissement sysctl appliqué"
}

configure_journald_limits() {
  msg "Réglage raisonnable de la taille des journaux"
  install -d /etc/systemd/journald.conf.d
  cat >/etc/systemd/journald.conf.d/size.conf <<EOF
[Journal]
SystemMaxUse=300M
RuntimeMaxUse=150M
EOF
  systemctl restart systemd-journald || true
  ok "Journald limité proprement"
}

configure_bash_cyber() {
  msg "Ajout d'un helper bash cyber pour $REAL_USER"
  local bashrc="$REAL_HOME/.bashrc"
  if ! grep -q 'DEBIAN_CYBER_FASTFETCH' "$bashrc" 2>/dev/null; then
    cat >>"$bashrc" <<'EOF'

# DEBIAN_CYBER_FASTFETCH
if command -v fastfetch >/dev/null 2>&1 && [[ $- == *i* ]]; then
  fastfetch
fi
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'
EOF
    chown "$REAL_UID:$REAL_GID" "$bashrc"
  fi
  ok "Helper bash ajouté"
}

install_secure_boot_tools() {
  msg "Installation des outils Secure Boot"
  apt-get install -y mokutil shim-signed sbctl || apt-get install -y mokutil shim-signed || true
  ok "Outils Secure Boot installés"
}

install_android_tools() {
  msg "Installation des outils Android"
  apt-get install -y adb fastboot mtp-tools jmtpfs android-sdk-platform-tools-common
  ok "Outils Android installés"
}

install_gpu_helpers() {
  msg "Préparation des outils GPU / vidéo"
  apt-get install -y mesa-utils vulkan-tools vainfo intel-media-va-driver mesa-vulkan-drivers firmware-amd-graphics || true

  cat >"$REAL_HOME/.config/debian-premium-gpu-report.sh" <<'EOF'
#!/usr/bin/env bash
set -e
echo "===== GPU REPORT ====="
lspci | grep -Ei 'vga|3d|display' || true
echo
echo "===== OPENGL ====="
command -v glxinfo >/dev/null 2>&1 && glxinfo -B || true
echo
echo "===== VULKAN ====="
command -v vulkaninfo >/dev/null 2>&1 && vulkaninfo --summary || true
echo
echo "===== VAAPI ====="
command -v vainfo >/dev/null 2>&1 && vainfo || true
echo
echo "===== NVIDIA SUGGESTION ====="
if lspci | grep -qi nvidia; then
  echo "GPU NVIDIA détecté. Vérifie les paquets Debian adaptés avant d'installer un pilote propriétaire."
else
  echo "Pas de GPU NVIDIA détecté."
fi
EOF
  chown "$REAL_UID:$REAL_GID" "$REAL_HOME/.config/debian-premium-gpu-report.sh"
  chmod +x "$REAL_HOME/.config/debian-premium-gpu-report.sh"
  ok "Helper GPU créé : ~/.config/debian-premium-gpu-report.sh"
}

install_maintenance_tools() {
  msg "Installation maintenance / diagnostic"
  apt-get install -y debsums apt-listbugs apt-listchanges needrestart ncdu plocate inxi usbutils pciutils
  updatedb || true

  cat >"$REAL_HOME/.config/debian-premium-healthcheck.sh" <<'EOF'
#!/usr/bin/env bash
set -e
echo "===== HEALTHCHECK DEBIAN PREMIUM ====="
echo
echo "--- Espace disque ---"
df -h
echo
echo "--- Mémoire / zram ---"
free -h
swapon --show || true
echo
echo "--- Services sécurité ---"
systemctl --no-pager --full status ufw apparmor 2>/dev/null || true
echo
echo "--- SMART/NVME ---"
command -v smartctl >/dev/null 2>&1 && sudo smartctl --scan || true
command -v nvme >/dev/null 2>&1 && nvme list || true
echo
echo "--- Derniers échecs systemd ---"
systemctl --failed || true
echo
echo "--- Mises à jour dispo ---"
apt list --upgradable 2>/dev/null || true
EOF
  chown "$REAL_UID:$REAL_GID" "$REAL_HOME/.config/debian-premium-healthcheck.sh"
  chmod +x "$REAL_HOME/.config/debian-premium-healthcheck.sh"
  ok "Helper healthcheck créé : ~/.config/debian-premium-healthcheck.sh"
}

install_terminal_tools() {
  msg "Installation des outils terminal"
  apt-get install -y kitty fastfetch zsh
  ok "Kitty, fastfetch et zsh installés"
}

prepare_gdm_note() {
  msg "Préparation d'une note GDM / écran de connexion"
  cat >"$REAL_HOME/.config/debian-premium-gdm-note.txt" <<'EOF'
La personnalisation profonde de l'écran de connexion GDM est volontairement laissée manuelle.
Pourquoi : les hacks CSS/GDM cassent facilement après mises à jour GNOME.
Approche recommandée : garder GDM standard, soigner Plymouth + fond d'écran + session GNOME.
EOF
  chown "$REAL_UID:$REAL_GID" "$REAL_HOME/.config/debian-premium-gdm-note.txt"
  ok "Note GDM créée"
}

final_notes() {
  cat <<EOF

============================================================
Installation terminée.
============================================================
Actions recommandées après redémarrage / reconnexion GNOME :

1) Appliquer le thème Cyber :
   bash ~/.config/debian-premium-apply-theme.sh

2) Activer et régler Dash to Dock :
   bash ~/.config/debian-premium-enable-dock.sh

3) Ouvrir Extension Manager et installer si compatibles :
   - Transparent Top Bar
   - Blur my Shell
   - Just Perfection
   - AppIndicator
   - Clipboard Indicator
   - Caffeine

4) Lire les notes créées :
   ~/.config/debian-premium-transparent-top-bar.txt
   ~/.config/debian-premium-cyber-terminal.txt
   ~/.config/debian-premium-cyber-wallpaper.txt
   ~/.config/debian-premium-gdm-note.txt

5) Vérifier le thème Plymouth :
   sudo plymouth-set-default-theme

6) Redémarrer pour TLP / zram / groupes / GRUB / Plymouth.

7) Outils GODMODE disponibles ensuite :
   bash ~/.config/debian-premium-gpu-report.sh
   bash ~/.config/debian-premium-healthcheck.sh

Log d'installation : $LOG_FILE
============================================================
EOF
}

show_menu() {
  cat <<'EOF'

================ Debian 13 ULTIMATE V2 CYBER ================
1) Préparer Debian (dépôts + outils de base + mise à jour)
2) Firmwares non libres + microcodes
3) Apparence premium (Plymouth/GRUB + Moonlight + Tela Circle Green + polices)
4) Bureau GNOME (Tweaks, Extension Manager, connecteur, Dash to Dock)
5) Multimédia (codecs, VLC, MPV)
6) Réseau (Wireshark, Nmap, DNS, MTR, outils LAN, etc.)
7) Sécurité (UFW, AppArmor, ClamAV, hardening sysctl)
8) Navigateurs / apps (Firefox Mozilla, Brave, Foliate, LibreOffice)
9) Gaming / VPN / Flatpak (Steam, GameMode, MangoHud, ProtonVPN, Flatseal, Tor Browser, Wine)
10) Monitoring / sauvegarde (btop, smartmontools, nvme-cli, deja-dup, timeshift)
10b) Création / PDF / imprimante (GIMP, Inkscape, scanner, CUPS)
11) Laptop / performance (TLP, auto-cpufreq best effort, zram, trim SSD)
12) Terminal / look Cyber (kitty, fastfetch, helpers GNOME/Bash, notes GDM)
13) GODMODE utilitaire (Secure Boot, Android tools, GPU report, maintenance)
14) Tout installer - V2 CYBER + GODMODE
0) Quitter
=============================================================
EOF
}

run_choice() {
  case "$1" in
    1)
      configure_debian_repos
      ensure_base_tools
      full_upgrade
      ;;
    2)
      install_firmware
      ;;
    3)
      configure_plymouth_grub
      install_fonts
      install_tela_circle_green
      create_user_theme_helpers
      ;;
    4)
      install_desktop_base
      install_dash_to_dock
      create_user_theme_helpers
      ;;
    5)
      install_codecs_media
      ;;
    6)
      install_network_tools
      ;;
    7)
      install_security_stack
      configure_sysctl_hardening
      configure_journald_limits
      ;;
    8)
      remove_firefox_esr_and_install_mozilla
      install_brave
      install_office_suite
      install_reading_apps
      ;;
    9)
      install_steam
      install_gaming_tools
      install_protonvpn
      install_privacy_windows_tools
      install_flatpak_stack
      ;;
    10)
      install_monitoring_backup
      ;;
    10b)
      install_creative_tools
      ;;
    11)
      install_laptop_power_stack
      install_auto_cpufreq_best_effort
      configure_zram
      configure_ssd_trim
      ;;
    12)
      install_terminal_tools
      create_user_theme_helpers
      configure_bash_cyber
      prepare_gdm_note
      ;;
    13)
      install_secure_boot_tools
      install_android_tools
      install_gpu_helpers
      install_maintenance_tools
      ;;
    14)
      configure_debian_repos
      ensure_base_tools
      full_upgrade
      install_firmware
      install_desktop_base
      install_fonts
      install_codecs_media
      install_network_tools
      install_security_stack
      configure_sysctl_hardening
      configure_journald_limits
      install_monitoring_backup
      install_creative_tools
      install_reading_apps
      configure_plymouth_grub
      install_tela_circle_green
      create_user_theme_helpers
      remove_firefox_esr_and_install_mozilla
      install_brave
      install_office_suite
      install_steam
      install_gaming_tools
      install_protonvpn
      install_privacy_windows_tools
      install_flatpak_stack
      install_dash_to_dock
      install_laptop_power_stack
      install_auto_cpufreq_best_effort
      configure_zram
      configure_ssd_trim
      install_terminal_tools
      configure_bash_cyber
      prepare_gdm_note
      install_secure_boot_tools
      install_android_tools
      install_gpu_helpers
      install_maintenance_tools
      final_notes
      ;;
    0)
      exit 0
      ;;
    *)
      warn "Choix invalide"
      ;;
  esac
}

main() {
  msg "Utilisateur cible pour la configuration GNOME : $REAL_USER"
  while true; do
    show_menu
    read -r -p "Ton choix : " choice
    run_choice "$choice"
    if [[ "$choice" == "14" ]]; then
      break
    fi
    echo
    read -r -p "Revenir au menu ? [O/n] " back
    if [[ "$back" =~ ^[nN]$ ]]; then
      final_notes
      break
    fi
  done
}

main "$@"

Après l’exécution

Une fois le script terminé, je conseille de faire ces deux commandes après redémarrage :

bash ~/.config/debian-premium-apply-theme.sh
bash ~/.config/debian-premium-enable-dock.sh

Ensuite, dans Extension Manager, j’ajoute généralement :

  • Transparent Top Bar
  • Blur my Shell
  • Just Perfection
  • AppIndicator
  • Clipboard Indicator
  • Caffeine

 

À l’usage, ce script me fait gagner un temps énorme.
Surtout, il me permet de retrouver une machine cohérente sans devoir me souvenir de 50 commandes différentes à chaque nouvelle installation.

Conclusion

Debian n’a pas besoin de mille couches de customisation pour être excellente. En revanche, une bonne post-install fait toute la différence.

Avec ce script, on obtient une base vraiment solide :

  • stable
  • assez sécurisée
  • agréable à utiliser
  • prête pour le travail, le réseau, le multimédia et un peu de gaming

 

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *