# My Fedora - Distribution Fedora Personnalisée Distribution Fedora 43 personnalisée basée sur Fedora Bootc avec GNOME et un ensemble d'outils de développement préinstallés. ## Caractéristiques ### Environnement de Bureau - **GNOME Desktop** avec support matériel complet - Configuration des boutons de fenêtre style Windows (minimize, maximize, close) - Plymouth pour l'animation de démarrage - Support Vulkan et pilotes AMD ### Outils de Développement - **Visual Studio Code** (depuis le dépôt officiel Microsoft) - **Development Tools** complet - **Podman** et **Buildah** pour la conteneurisation - **Podman Compose** pour orchestration - Support Docker via podman-docker ### Applications Préinstallées - **Mullvad VPN** - Client VPN sécurisé - **Yaak** (dernière version) - Client API REST - **Filen** - Stockage cloud - **Bazaar** (Flatpak) - Gestionnaire d'applications - **CUPS** - Support d'impression (avec cups-pdf) ### Configuration Système - **Locale** : Français (fr_FR.UTF-8) - **Clavier** : AZERTY (fr) - **Fuseau horaire** : Europe/Paris - **Système de fichiers root** : Btrfs - **Flatpak** : Flathub configuré par défaut ### Optimisations - `user.max_user_namespaces` augmenté pour Podman - Support FUSE pour overlayfs - Mise à jour automatique Bootc désactivée - GNOME Software supprimé (gestion via Flatpak) ## Prérequis - Fedora avec Buildah et Podman installés - Accès root pour la génération d'ISO - Connexion Internet pour télécharger les dépendances ## Utilisation ### Construire l'image conteneur ```bash ./build.sh ``` Construit l'image localement avec le tag `localhost/tintounn/my-fedora:latest` ### Générer une ISO bootable ```bash ./build-iso.sh ``` Construit l'image puis génère une ISO Anaconda dans le répertoire `output/`. L'ISO utilise Btrfs comme système de fichiers root. ### Publier l'image sur Docker Hub ```bash ./push-image.sh ``` Pousse l'image vers `docker.io/tintounn/my-fedora:latest` ## Architecture - **Base** : `registry.fedoraproject.org/fedora-bootc:42` - **Type** : Image conteneur bootable (Bootc) - **Target** : Système graphique (graphical.target) ## Services Activés - GDM (GNOME Display Manager) - NetworkManager - Bluetooth - Podman Socket - CUPS (Impression) ## Intégration Continue Le projet utilise **Woodpecker CI** avec déclenchement automatique : - **Sur push** vers la branche `main` - **Nuit** via un cron nommé "upgrade base image" Le pipeline CI construit et publie automatiquement l'image sur Docker Hub. ## Structure du Projet ``` . ├── Containerfile # Définition de l'image ├── build.sh # Script de construction d'image ├── build-iso.sh # Script de génération d'ISO ├── push-image.sh # Script de publication ├── .woodpecker/ │ └── ci.yaml # Configuration Woodpecker CI └── output/ # Répertoire de sortie pour les ISO (généré) ``` ## Notes - Les mises à jour automatiques Bootc sont masquées pour un contrôle manuel - L'image utilise l'isolation chroot lors de la construction - Le builder d'ISO nécessite des privilèges élevés et l'accès au storage Podman ## Licence Projet personnel