#!/usr/bin/env bash
set -euo pipefail
 
clear
echo "================================================================="
echo "   SUIVI ÉTAPE PAR ÉTAPE : CONFIGURATION NVIDIA (MÉTHODE F44)    "
echo "================================================================="
echo "Ce script reproduit et explique la méthode native de Fedora 44."
echo "Appuyez sur ENTRÉE pour valider chaque étape après lecture."
echo "================================================================="
read -p "[Appuyez sur Entrée pour commencer]"
 
# -----------------------------------------------------------------
echo -e "\n>>> ÉTAPE 1 : Nettoyage et initialisation du système"
echo "Explication : On vide les caches pour s'assurer que DNF n'utilise"
echo "pas d'anciennes configurations corrompues ou de liens brisés."
read -p "[Appuyez sur Entrée pour exécuter]"
sudo dnf clean all
 
# -----------------------------------------------------------------
echo -e "\n>>> ÉTAPE 2 : Activation du dépôt NVIDIA tiers officiel"
echo "Explication : C'est l'équivalent strict du clic dans la boutique"
echo "Gnome Logiciels. On active le dépôt Nvidia déjà intégré par Fedora."
read -p "[Appuyez sur Entrée pour exécuter]"
sudo dnf config-manager enable fedora-nvidia-driver
 
# -----------------------------------------------------------------
echo -e "\n>>> ÉTAPE 3 : Rafraîchissement des catalogues"
echo "Explication : DNF se connecte au nouveau dépôt pour télécharger"
echo "la liste des paquets disponibles (les métadonnées)."
read -p "[Appuyez sur Entrée pour exécuter]"
sudo dnf check-update || true
 
# -----------------------------------------------------------------
echo -e "\n>>> ÉTAPE 4 : Installation du pilote via le canal officiel"
echo "Explication : On installe le paquet 'akmod-nvidia'. C'est le système"
echo "qui va gérer automatiquement la récupération et la préparation."
read -p "[Appuyez sur Entrée pour exécuter]"
sudo dnf install -y akmod-nvidia
 
# -----------------------------------------------------------------
echo -e "\n>>> ÉTAPE 5 : Contournement de la sécurité Intel IBT (Dell G16)"
echo "Explication : Votre CPU Intel de 13e Gen fait geler le noyau avec"
echo "le pilote Nvidia. On injecte de force le paramètre 'ibt=off' dans GRUB."
read -p "[Appuyez sur Entrée pour exécuter]"
if command -v grubby &> /dev/null; then
  sudo grubby --update-kernel=ALL --args="ibt=off"
  echo "[OK] Paramètre ibt=off appliqué dans GRUB."
else
  echo "[!] Attention : l'outil 'grubby' est absent. Vérification nécessaire."
fi
 
# -----------------------------------------------------------------
echo -e "\n>>> ÉTAPE 6 : Déclenchement de la compilation"
echo "Explication : On force l'outil Akmods à compiler immédiatement"
echo "le pilote pour votre noyau Linux actuel."
read -p "[Appuyez sur Entrée pour exécuter]"
sudo akmods --force
 
# -----------------------------------------------------------------
echo -e "\n>>> ÉTAPE 7 : Vérification finale"
echo "Explication : On interroge le noyau via 'modinfo' pour valider"
echo "que le fichier binaire du pilote existe et est prêt pour le reboot."
read -p "[Appuyez sur Entrée pour exécuter]"
if modinfo -F version nvidia &> /dev/null; then
  VERSION_NV=$(modinfo -F version nvidia)
  echo "================================================================="
  echo "[SUCCÈS] Le pilote Nvidia (Version: ${VERSION_NV}) est prêt !"
  echo "Vous pouvez redémarrer votre Dell G16 en toute sécurité."
  echo "================================================================="
else
  echo "[-] Le module n'est pas encore visible. Attendez 2 minutes."
fi