Switch to KDE Plasma and clean up Containerfile
This commit is contained in:
1 parent
4d581a2acc
commit
5b169a7ddb
3 files changed
+60
-58
No files matched your search
+8
-22
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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} .
|
||||||
|
|
||||||
Reference in new issue
Block a user