Noctalia/Umbriel
My Fedora - Distribution Fedora Personnalisée
Distribution Fedora 44 personnalisée basée sur Fedora Bootc avec KDE Plasma et un ensemble d'outils de développement préinstallés.
Caractéristiques
Environnement de Bureau
- KDE Plasma (
@kde-desktop-environment) avec support matériel complet - Plasma Login Manager (
plasmalogin) à la place de SDDM - Plymouth pour l'animation de démarrage
- Vulkan et pilotes Mesa (x86_64 et i686)
Outils de Développement
- Development Tools complet
- Podman, Buildah, Podman Compose, distrobox
- Support Docker via
podman-docker - Starship (prompt) configuré pour tous les utilisateurs
- FiraMono Nerd Font
Applications Préinstallées
- Mullvad VPN - Client VPN sécurisé
- Filen - Stockage cloud
- Bazaar (Flatpak) - Gestionnaire d'applications
- CUPS - Support d'impression (avec
cups-pdf) - FFmpeg (
ffmpeg-free), GStreamer etffmpegthumbnailer
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
- Module
xpadchargé au démarrage (manettes Xbox)
Optimisations
user.max_user_namespacesaugmenté pour Podman- Support FUSE pour overlayfs
- Mise à jour automatique Bootc désactivée
- PackageKit supprimé (gestion via Flatpak)
dnfavec--setopt=tsflags=nodocs(pas de documentation dans l'image)- Build avec cache de couches (
buildah bud --layers) et pull de l'image de base (--pull=always)
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
./build.sh
Construit l'image localement avec le tag localhost/tintounn/my-fedora:latest.
Le script utilise buildah bud --layers --pull=always --isolation chroot. Pour éviter de retélécharger l'image de base à chaque build local, tu peux utiliser :
PULL_POLICY=missing ./build.sh
Générer une ISO bootable
sudo ./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.
Le script utilise sudo podman et le storage root de Podman : lance-le avec sudo pour que l'image construite soit visible par bootc-image-builder.
Publier l'image sur Docker Hub
./push-image.sh
Pousse l'image vers docker.io/tintounn/my-fedora:latest.
Architecture
- Base :
registry.fedoraproject.org/fedora-bootc:44 - Type : Image conteneur bootable (Bootc)
- Target : Système graphique (
graphical.target)
Services Activés
plasmalogin.service(Plasma Login Manager)NetworkManager.servicebluetooth.servicepodman.socketcups.servicemullvad-daemon.serviceflatpak-first-boot.service(installe Bazaar au premier démarrage)
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
├── iso.toml # Configuration de l'installeur Anaconda
├── services/
│ └── flatpak-first-boot.service
├── .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
chrootlors de la construction - Le builder d'ISO nécessite des privilèges élevés et l'accès au storage Podman
ffmpegprovient des dépôts Fedora (ffmpeg-free) : pour les codecs complets, activer RPM Fusion
Licence
Projet personnel