6.0 KiB
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 :
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 :
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 :
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.