Switch to KDE Plasma and clean up Containerfile
ci/woodpecker/push/ci Pipeline was canceled
ci/woodpecker/cron/ci Pipeline was successful

This commit is contained in:
qpismont committed 2026-11-01 11:32:21 +01:00
1 parent 4d581a2acc
commit 5b169a7ddb
3 files changed
+54 -52

No files matched your search

+8 -22
View File
@@ -1,19 +1,17 @@
FROM registry.fedoraproject.org/fedora-bootc:44
#Install copr command
RUN dnf5 install 'dnf5-command(copr)' -y \
&& dnf copr enable yannmasoch/nautilus-my-computer -y
RUN dnf5 install 'dnf5-command(copr)' -y
#Ajout du dépot mullvad
RUN curl -fsSL https://repository.mullvad.net/rpm/stable/mullvad.repo -o /etc/yum.repos.d/mullvad.repo
#Install de gnome avec support hardware + Podman + Cups + Vulkan driver + Plymouth + dev tools + divers utilitaires
RUN dnf install -y --refresh \
#Install de KDE Plasma avec support hardware + Podman + Cups + Vulkan driver + Plymouth + dev tools + divers utilitaires
RUN dnf install -y --refresh --setopt=tsflags=nodocs \
@kde-desktop-environment \
@hardware-support \
@development-tools \
@multimedia \
nautilus-my-computer \
vulkan-tools \
ffmpegthumbnailer \
mesa-vulkan-drivers \
@@ -52,14 +50,14 @@ RUN dnf install -y --refresh \
gstreamer1-plugins-base \
gstreamer1-vaapi \
ffmpeg \
&& dnf remove -y sddm snapshot PackageKit PackageKit-gstreamer-plugin PackageKit-command-not-found toolbox || true \
&& dnf install -y flatpak \
&& dnf clean all \
&& rm -rf /var/cache/dnf
flatpak \
&& (dnf remove -y sddm snapshot PackageKit PackageKit-gstreamer-plugin PackageKit-command-not-found toolbox || true) \
&& dnf clean all
#Installation de Filen Desktop
RUN wget https://cdn.filen.io/@filen/desktop/release/latest/Filen_linux_x86_64.rpm -O /tmp/filen.rpm \
&& dnf install -y /tmp/filen.rpm \
&& dnf install -y --setopt=tsflags=nodocs /tmp/filen.rpm \
&& dnf clean all \
&& rm -f /tmp/filen.rpm
@@ -87,18 +85,6 @@ RUN echo "LANG=fr_FR.UTF-8" > /etc/locale.conf \
&& ln -sf /usr/share/zoneinfo/Europe/Paris /etc/localtime \
&& echo "user.max_user_namespaces=28633" > /etc/sysctl.d/userns.conf
# Installation du pack d'icones MoreWaita
RUN git clone https://github.com/somepaulo/MoreWaita.git && cd MoreWaita && ./install.sh && \
rm -rf MoreWaita && \
printf "[org/gnome/desktop/interface]\nicon-theme='MoreWaita'\n" > /etc/dconf/db/local.d/02-icon-theme && \
dconf update 2>/dev/null || true
#Configuration des fenêtres gnome pour avoir les btns style windows
RUN mkdir -p /etc/dconf/db/local.d /etc/dconf/profile && \
printf "[org/gnome/desktop/wm/preferences]\nbutton-layout=':minimize,maximize,close'\n" > /etc/dconf/db/local.d/02-window-buttons && \
printf "user-db:user\nsystem-db:local\n" > /etc/dconf/profile/user && \
dconf update 2>/dev/null || true
#Activation du module xpad pour support manette xbox
RUN echo "xpad" > /etc/modules-load.d/xpad.conf
+43 -27
View File
@@ -1,42 +1,44 @@
# 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.
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
- **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
- **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
- **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
- **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é
- **Yaak** (dernière version) - Client API REST
- **Proton Drive** (non officiel, dernière version) - Client FUSE + CLI + app GTK4 + tray
- **Filen** - Stockage cloud
- **Bazaar** (Flatpak) - Gestionnaire d'applications
- **CUPS** - Support d'impression (avec cups-pdf)
- **CUPS** - Support d'impression (avec `cups-pdf`)
- **FFmpeg** (`ffmpeg-free`), GStreamer et `ffmpegthumbnailer`
### Configuration Système
- **Locale** : Français (fr_FR.UTF-8)
- **Clavier** : AZERTY (fr)
- **Fuseau horaire** : Europe/Paris
- **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 `xpad`** chargé au démarrage (manettes Xbox)
### 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)
- PackageKit supprimé (gestion via Flatpak)
- `dnf` avec `--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
@@ -52,37 +54,47 @@ Distribution Fedora 43 personnalisée basée sur Fedora Bootc avec GNOME et un e
./build.sh
```
Construit l'image localement avec le tag `localhost/tintounn/my-fedora:latest`
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 :
```bash
PULL_POLICY=missing ./build.sh
```
### Générer une ISO bootable
```bash
./build-iso.sh
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
```bash
./push-image.sh
```
Pousse l'image vers `docker.io/tintounn/my-fedora:latest`
Pousse l'image vers `docker.io/tintounn/my-fedora:latest`.
## Architecture
- **Base** : `registry.fedoraproject.org/fedora-bootc:42`
- **Base** : `registry.fedoraproject.org/fedora-bootc:44`
- **Type** : Image conteneur bootable (Bootc)
- **Target** : Système graphique (graphical.target)
- **Target** : Système graphique (`graphical.target`)
## Services Activés
- GDM (GNOME Display Manager)
- NetworkManager
- Bluetooth
- Podman Socket
- CUPS (Impression)
- `plasmalogin.service` (Plasma Login Manager)
- `NetworkManager.service`
- `bluetooth.service`
- `podman.socket`
- `cups.service`
- `mullvad-daemon.service`
- `flatpak-first-boot.service` (installe Bazaar au premier démarrage)
## Intégration Continue
@@ -100,6 +112,9 @@ Le pipeline CI construit et publie automatiquement l'image sur Docker Hub.
├── 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é)
@@ -108,8 +123,9 @@ Le pipeline CI construit et publie automatiquement l'image sur Docker Hub.
## Notes
- Les mises à jour automatiques Bootc sont masquées pour un contrôle manuel
- L'image utilise l'isolation chroot lors de la construction
- 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
- `ffmpeg` provient des dépôts Fedora (`ffmpeg-free`) : pour les codecs complets, activer RPM Fusion
## Licence
+3 -3
View File
@@ -3,8 +3,8 @@ set -euo pipefail
IMAGE_NAME="tintounn/my-fedora"
IMAGE_TAG="latest"
OUTPUT_DIR="output/"
PULL_POLICY="${PULL_POLICY:-always}"
echo "[INFO] Build de l'image avec sudo..."
buildah bud --isolation chroot -t localhost/${IMAGE_NAME}:${IMAGE_TAG} .
echo "[INFO] Build de l'image (pull=${PULL_POLICY})..."
buildah bud --layers --pull="${PULL_POLICY}" --isolation chroot -t localhost/${IMAGE_NAME}:${IMAGE_TAG} .