#!/bin/bash

# ==============================================================================
# SCRIPT D'INSTALLATION OFFICIEL DE GRIMOS (Debian 13)
# À exécuter via: sudo bash install_grimos.sh
# ==============================================================================

TARGET_USER="grimos"
TARGET_DIR="/home/$TARGET_USER/grimos"

# 1. Vérification des privilèges
if [ "$EUID" -ne 0 ]; then
  echo "❌ Erreur : Vous devez exécuter ce script en tant qu'administrateur (root ou sudo)."
  exit 1
fi

# Vérifier si l'utilisateur cible existe, sinon l'avertir
if ! id "$TARGET_USER" &>/dev/null; then
    echo "❌ Erreur : L'utilisateur système '$TARGET_USER' n'existe pas."
    echo "Veuillez créer cet utilisateur lors de l'installation de Debian ou via 'adduser grimos'."
    exit 1
fi

echo "=============================================================================="
echo "🚀 DÉBUT DE L'INSTALLATION DE GRIMOS POUR L'UTILISATEUR : $TARGET_USER"
echo "=============================================================================="

# 2. Mise à jour du système
echo "🔄 Mise à jour des dépôts Debian..."
apt-get update -y

# 3. Installation des dépendances système complètes
echo "📦 Installation des paquets requis..."
DEPS=(
    # Environnement Graphique et Python
    "xorg" "python3" "python3-tk" "x11-xserver-utils" "xprintidle"
    # Gestion des disques et clés USB
    "util-linux" "pmount"
    # Audio et Réseau
    "alsa-utils" "wpasupplicant" "openssh-server" "rsync"
    # Application Caméra (OpenCV & PIL)
    "python3-opencv" "python3-pil" "python3-pil.imagetk"
    # Application Imprimante
    "cups" "cups-client" "cups-ipp-utils"
    # Application Navigateur Web (WebKit)
    "python3-gi" "gir1.2-gtk-3.0" "gir1.2-webkit2-4.1"
)

# On installe tous les paquets d'un coup
apt-get install -y "${DEPS[@]}"

# 4. Déploiement des fichiers GrimOS
echo "📂 Déploiement des fichiers système vers $TARGET_DIR..."
# Créer le répertoire s'il n'existe pas
mkdir -p "$TARGET_DIR"

# Copier le contenu du dossier où se trouve le script (clé USB) vers la machine cible
# On exclut le script lui-même et les fichiers git
rsync -a --exclude '.git' --exclude 'install_grimos.sh' ./ "$TARGET_DIR/"

# Appliquer les permissions à l'utilisateur grimos
chown -R $TARGET_USER:$TARGET_USER "$TARGET_DIR"
chmod +x "$TARGET_DIR/main.py"

# 5. Configuration de l'Autoboot (Boot-to-GUI)
echo "⚙️  Configuration du démarrage automatique (Auto-login)..."
mkdir -p /etc/systemd/system/getty@tty1.service.d/
cat > /etc/systemd/system/getty@tty1.service.d/override.conf << EOF
[Service]
ExecStart=
ExecStart=-/sbin/agetty --autologin $TARGET_USER --noclear %I \$TERM
EOF
systemctl daemon-reload

echo "⚙️  Configuration du lancement automatique de l'interface graphique..."
PROFILE_PATH="/home/$TARGET_USER/.profile"

# S'assurer que le fichier existe et appartient à l'utilisateur
touch "$PROFILE_PATH"
chown $TARGET_USER:$TARGET_USER "$PROFILE_PATH"

if grep -q "exec startx" "$PROFILE_PATH"; then
    echo "ℹ️  La configuration auto-startx est déjà présente."
else
    cat >> "$PROFILE_PATH" << EOF
# Démarrage automatique de GrimOS
if [ -z "\$DISPLAY" ] && [ "\$(tty)" = "/dev/tty1" ]; then
    # Lancement de GrimOS
    cd $TARGET_DIR
    startx
    clear
    echo "==========================================================="
    echo "Vous avez quitté l'interface GrimOS."
    echo "Vous êtes maintenant dans le terminal maître (TTY)."
    echo "Pour relancer l'interface graphique, tapez : startx"
    echo "Pour redémarrer automatiquement la machine, tapez : exit"
    echo "==========================================================="
fi
EOF
fi

# Configuration X11 pour contourner les potentiels problèmes de .xinitrc
XINITRC_PATH="/home/$TARGET_USER/.xinitrc"
cat > "$XINITRC_PATH" << EOF
#!/bin/bash
cd $TARGET_DIR
exec python3 main.py
EOF
chown $TARGET_USER:$TARGET_USER "$XINITRC_PATH"
chmod +x "$XINITRC_PATH"


echo "=============================================================================="
echo "🎉 INSTALLATION TERMINÉE AVEC SUCCÈS !"
echo "👉 Veuillez débrancher la clé USB et taper la commande : sudo reboot"
echo "Au prochain démarrage, GrimOS se lancera automatiquement."
echo "=============================================================================="
