# CONSIGNE.md ## Objectif du projet Créer un dépôt Git hébergé sur Gitea : https://gitea.maison43.duckdns.org/gilles/postinstall-debian Ce dépôt doit permettre l'exécution d'un script **post‑installation Debian 13** via une commande simple : ```bash curl -fsSL https://gitea.maison43.duckdns.org/gilles/postinstall-debian/raw/branch/main/install.sh | bash ``` Le script doit permettre : - d'installer automatiquement des outils - de configurer le système - de proposer des menus interactifs - d'être évolutif et modulaire - d'intégrer facilement de nouveaux outils - d'offrir une interface console claire et agréable Le projet doit être pensé comme un **framework de post‑installation Debian 13**. --- # Principes généraux ## Modularité Chaque outil doit être installé via un **module indépendant**. Un module correspond à : - un script d'installation - un script de configuration - des métadonnées - des tests éventuels Chaque module doit pouvoir être : - installé indépendamment - intégré dans un menu - utilisé dans un profil - testé isolément --- # Structure du dépôt Structure recommandée : ```text postinstall-debian/ install.sh README.md CONSIGNE.md tools.md CHANGELOG.md assets/ config/ core/ lib/ menus/ modules/ profiles/ hardware/ tests/ docs/ ``` --- # Organisation détaillée ## install.sh Script principal. Fonctions : - vérification environnement - vérification Debian - gestion sudo/root - chargement librairies - chargement thème console - affichage menu principal Doit fonctionner via **curl | bash**. --- # Dossier core/ Scripts internes du framework. Exemples : - bootstrap.sh - runtime.sh - registry.sh - dispatcher.sh Rôle : - gestion des modules - gestion de l'environnement - découverte des outils --- # Dossier lib/ Fonctions réutilisables. Exemples : ui.sh log.sh package.sh system.sh network.sh prompts.sh validation.sh --- # Dossier menus/ Gestion des menus interactifs. Menus possibles : Menu principal Installation par catégorie Installation par profil Installation par matériel Configuration système Tests --- # Dossier modules/ Chaque outil possède un dossier dédié. Exemple : ``` modules/dev/git/ module.sh config.sh metadata.conf tests.sh ``` Fonctions attendues : module_git_metadata module_git_check module_git_install module_git_configure module_git_test --- # Catégories d'outils Les outils doivent être classés. Exemples : system network dev gnome desktop multimedia containers virtualization security monitoring backup shell productivity communication selfhosted hardware --- # Profils Les profils installent plusieurs outils. Exemples : Desktop minimal Développeur Homelab Laptop VM de test Un profil contient une **liste de modules**. --- # Installation par matériel Possibilité d'installer un ensemble d'outils selon le matériel. Exemples : Laptop ASUS HP EliteDesk VM Debian Poste GNOME --- # Interface utilisateur Le script doit être user friendly. Prévoir : couleurs messages clairs étapes visibles résumé final Fonctions UI : ui_header ui_section ui_info ui_success ui_warn ui_error ui_menu ui_confirm ui_pause --- # Journalisation Créer un système de logs. Objectifs : - log installation - log erreurs - log tests --- # Sécurité curl | bash Le script doit : - vérifier Debian - vérifier réseau - vérifier droits Éviter : - suppression brutale - modification silencieuse fichiers critiques --- # Gestion des erreurs Prévoir : - arrêt propre - messages clairs - gestion codes retour --- # Qualité Bash Le code doit : - être lisible - être structuré - utiliser des fonctions Utiliser si possible : shellcheck --- # tools.md Ce fichier liste les outils demandés. Pour chaque outil : nom description catégorie questions méthode installation tests statut --- # Brainstorming avant ajout d'un outil Questions obligatoires : Quel est l'outil Quel usage Installation via apt ? Dépendances Configuration Service systemd Interface graphique Compatibilité Debian 13 Tests possibles Menu cible Profil cible --- # Tests Types de tests possibles : - présence binaire - version - service actif - port ouvert Tests VM Debian 13 recommandés. --- # Intégration d'un outil Cycle : 1 Brainstorming 2 Décision architecture 3 Implémentation module 4 Intégration menu 5 Tests 6 Documentation --- # Gestion des thèmes et ressources visuelles Le projet doit permettre d'intégrer des **ressources graphiques et thèmes**. Exemples : - thèmes GRUB - thèmes GNOME - thèmes GTK - packs d'icônes - curseurs - wallpapers - polices - thèmes terminal Ces ressources doivent être stockées dans **assets/**. Structure possible : ```text assets/ assets/grub/ assets/gnome/ assets/icons/ assets/cursors/ assets/fonts/ assets/wallpapers/ assets/terminal/ ``` Chaque thème doit idéalement posséder : metadata.conf Exemple : THEME_ID THEME_NAME THEME_TYPE THEME_TARGET THEME_DESCRIPTION THEME_DEPENDENCIES --- # Menus de personnalisation Ajouter un menu : Personnalisation Sous menus : Thèmes GRUB Thèmes GNOME Icônes Curseurs Wallpapers Fonts Terminal --- # Bonnes pratiques pour GRUB Toujours : sauvegarder config régénérer grub avertir utilisateur --- # GNOME Distinguer : GTK Shell Icônes Curseurs --- # Métadonnées modules Chaque module peut définir : TOOL_NAME TOOL_ID TOOL_CATEGORY TOOL_DESCRIPTION TOOL_DEPENDENCIES TOOL_SUPPORTED_ON TOOL_TEST_AVAILABLE --- # Documentation Créer documentation : architecture.md add_tool_workflow.md menu_strategy.md testing_strategy.md security_notes.md --- # README Le README doit contenir : objectif installation structure dépôt ajout outils --- # Priorités du projet 1 Clarté 2 Stabilité 3 Modularité 4 Testabilité 5 Évolutivité 6 UX terminal --- # Conclusion Ce dépôt doit devenir une **plateforme de post‑installation Debian 13 modulaire** permettant : - installation d'outils - configuration système - personnalisation - évolution continue Le projet doit rester lisible, modulaire et maintenable sur le long terme.