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
+60 -58

No files matched your search

+8 -22
View File
@@ -1,19 +1,17 @@
FROM registry.fedoraproject.org/fedora-bootc:44 FROM registry.fedoraproject.org/fedora-bootc:44
#Install copr command #Install copr command
RUN dnf5 install 'dnf5-command(copr)' -y \ RUN dnf5 install 'dnf5-command(copr)' -y
&& dnf copr enable yannmasoch/nautilus-my-computer -y
#Ajout du dépot mullvad #Ajout du dépot mullvad
RUN curl -fsSL https://repository.mullvad.net/rpm/stable/mullvad.repo -o /etc/yum.repos.d/mullvad.repo 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 #Install de KDE Plasma avec support hardware + Podman + Cups + Vulkan driver + Plymouth + dev tools + divers utilitaires
RUN dnf install -y --refresh \ RUN dnf install -y --refresh --setopt=tsflags=nodocs \
@kde-desktop-environment \ @kde-desktop-environment \
@hardware-support \ @hardware-support \
@development-tools \ @development-tools \
@multimedia \ @multimedia \
nautilus-my-computer \
vulkan-tools \ vulkan-tools \
ffmpegthumbnailer \ ffmpegthumbnailer \
mesa-vulkan-drivers \ mesa-vulkan-drivers \
@@ -52,14 +50,14 @@ RUN dnf install -y --refresh \
gstreamer1-plugins-base \ gstreamer1-plugins-base \
gstreamer1-vaapi \ gstreamer1-vaapi \
ffmpeg \ ffmpeg \
&& dnf remove -y sddm snapshot PackageKit PackageKit-gstreamer-plugin PackageKit-command-not-found toolbox || true \ flatpak \
&& dnf install -y flatpak \ && (dnf remove -y sddm snapshot PackageKit PackageKit-gstreamer-plugin PackageKit-command-not-found toolbox || true) \
&& dnf clean all \ && dnf clean all
&& rm -rf /var/cache/dnf
#Installation de Filen Desktop #Installation de Filen Desktop
RUN wget https://cdn.filen.io/@filen/desktop/release/latest/Filen_linux_x86_64.rpm -O /tmp/filen.rpm \ 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 && 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 \ && ln -sf /usr/share/zoneinfo/Europe/Paris /etc/localtime \
&& echo "user.max_user_namespaces=28633" > /etc/sysctl.d/userns.conf && 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 #Activation du module xpad pour support manette xbox
RUN echo "xpad" > /etc/modules-load.d/xpad.conf RUN echo "xpad" > /etc/modules-load.d/xpad.conf
+48 -32
View File
@@ -1,42 +1,44 @@
# My Fedora - Distribution Fedora Personnalisée # 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 ## Caractéristiques
### Environnement de Bureau ### Environnement de Bureau
- **GNOME Desktop** avec support matériel complet - **KDE Plasma** (`@kde-desktop-environment`) avec support matériel complet
- Configuration des boutons de fenêtre style Windows (minimize, maximize, close) - **Plasma Login Manager** (`plasmalogin`) à la place de SDDM
- Plymouth pour l'animation de démarrage - **Plymouth** pour l'animation de démarrage
- Support Vulkan et pilotes AMD - **Vulkan** et pilotes Mesa (x86_64 et i686)
### Outils de Développement ### Outils de Développement
- **Visual Studio Code** (depuis le dépôt officiel Microsoft)
- **Development Tools** complet - **Development Tools** complet
- **Podman** et **Buildah** pour la conteneurisation - **Podman**, **Buildah**, **Podman Compose**, **distrobox**
- **Podman Compose** pour orchestration - Support Docker via `podman-docker`
- Support Docker via podman-docker - **Starship** (prompt) configuré pour tous les utilisateurs
- **FiraMono Nerd Font**
### Applications Préinstallées ### Applications Préinstallées
- **Mullvad VPN** - Client VPN sécurisé - **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 - **Filen** - Stockage cloud
- **Bazaar** (Flatpak) - Gestionnaire d'applications - **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 ### Configuration Système
- **Locale** : Français (fr_FR.UTF-8) - **Locale** : Français (`fr_FR.UTF-8`)
- **Clavier** : AZERTY (fr) - **Clavier** : AZERTY (`fr`)
- **Fuseau horaire** : Europe/Paris - **Fuseau horaire** : `Europe/Paris`
- **Système de fichiers root** : Btrfs - **Système de fichiers root** : Btrfs
- **Flatpak** : Flathub configuré par défaut - **Flatpak** : Flathub configuré par défaut
- **Module `xpad`** chargé au démarrage (manettes Xbox)
### Optimisations ### Optimisations
- `user.max_user_namespaces` augmenté pour Podman - `user.max_user_namespaces` augmenté pour Podman
- Support FUSE pour overlayfs - Support FUSE pour overlayfs
- Mise à jour automatique Bootc désactivée - 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 ## Prérequis
@@ -52,37 +54,47 @@ Distribution Fedora 43 personnalisée basée sur Fedora Bootc avec GNOME et un e
./build.sh ./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 ### Générer une ISO bootable
```bash ```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. 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 ### Publier l'image sur Docker Hub
```bash ```bash
./push-image.sh ./push-image.sh
``` ```
Pousse l'image vers `docker.io/tintounn/my-fedora:latest` Pousse l'image vers `docker.io/tintounn/my-fedora:latest`.
## Architecture ## Architecture
- **Base** : `registry.fedoraproject.org/fedora-bootc:42` - **Base** : `registry.fedoraproject.org/fedora-bootc:44`
- **Type** : Image conteneur bootable (Bootc) - **Type** : Image conteneur bootable (Bootc)
- **Target** : Système graphique (graphical.target) - **Target** : Système graphique (`graphical.target`)
## Services Activés ## Services Activés
- GDM (GNOME Display Manager) - `plasmalogin.service` (Plasma Login Manager)
- NetworkManager - `NetworkManager.service`
- Bluetooth - `bluetooth.service`
- Podman Socket - `podman.socket`
- CUPS (Impression) - `cups.service`
- `mullvad-daemon.service`
- `flatpak-first-boot.service` (installe Bazaar au premier démarrage)
## Intégration Continue ## Intégration Continue
@@ -97,19 +109,23 @@ Le pipeline CI construit et publie automatiquement l'image sur Docker Hub.
``` ```
. .
├── Containerfile # Définition de l'image ├── Containerfile # Définition de l'image
├── build.sh # Script de construction d'image ├── build.sh # Script de construction d'image
├── build-iso.sh # Script de génération d'ISO ├── build-iso.sh # Script de génération d'ISO
├── push-image.sh # Script de publication ├── push-image.sh # Script de publication
├── iso.toml # Configuration de l'installeur Anaconda
├── services/
│ └── flatpak-first-boot.service
├── .woodpecker/ ├── .woodpecker/
│ └── ci.yaml # Configuration Woodpecker CI │ └── ci.yaml # Configuration Woodpecker CI
└── output/ # Répertoire de sortie pour les ISO (généré) └── output/ # Répertoire de sortie pour les ISO (généré)
``` ```
## Notes ## Notes
- Les mises à jour automatiques Bootc sont masquées pour un contrôle manuel - 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 - 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 ## Licence
+4 -4
View File
@@ -3,8 +3,8 @@ set -euo pipefail
IMAGE_NAME="tintounn/my-fedora" IMAGE_NAME="tintounn/my-fedora"
IMAGE_TAG="latest" IMAGE_TAG="latest"
OUTPUT_DIR="output/" PULL_POLICY="${PULL_POLICY:-always}"
echo "[INFO] Build de l'image avec sudo..." echo "[INFO] Build de l'image (pull=${PULL_POLICY})..."
buildah bud --isolation chroot -t localhost/${IMAGE_NAME}:${IMAGE_TAG} . buildah bud --layers --pull="${PULL_POLICY}" --isolation chroot -t localhost/${IMAGE_NAME}:${IMAGE_TAG} .