8.1 KiB
title | description | slug | date | categories | tags | weight | ||
---|---|---|---|---|---|---|---|---|
Configurer kde-builder sur des bases immuables et lancer un projet KDE | Je vais vous expliquer comment configurer kde-builder sur des bases immuables comme NixOS ou Fedora Atomic et vous allez lancer votre premier programme compilé avec kde-builder. | kdedev_on_immuable | 2024-10-06 00:00:00+0000 |
|
|
1 |
Introduction
Les systèmes d'exploitation à base immuable, tels que NixOS ou Fedora Atomic, offrent de nombreux avantages en termes de stabilité et de sécurité. Cependant, ils présentent également des défis uniques pour les développeurs, notamment lorsqu'il s'agit de configurer des environnements de développement comme kde-builder. Dans ce post, nous explorerons comment surmonter ces obstacles en utilisant des outils comme distrobox ou toolbox, permettant ainsi aux développeurs de profiter des avantages des systèmes immuables tout en conservant la flexibilité nécessaire pour travailler efficacement avec kde-builder.
Préparer son environnement
Introduction
La préparation de l'environnement de développement est essentielle pour utiliser kde-builder sur des systèmes immuables. Les outils et étapes varient selon la distribution : Fedora Atomic intègre toolbox, facilitant le processus, tandis que NixOS nécessite la configuration manuelle de distrobox. Je vais donc dans un premier temps expliquer comment installer distrobox sur NixOS. Ensuite, je finirais par la configuration générale pour Fedora Atomic et aussi pour Nix OS.
Installation de distrobox sur Nix OS
Pour installer distrobox, il suffit de rajouter dans sa configuration configuration.nix
ou dans son flake
la configuration suivante:
# Active docker
virtualisation.docker = {
enable = true;
};
# Rajoute l'utilisateur au group docker pour éviter d'utiliser la commande sudo tout le temps.
# Par contre, ça rajoute un risque d'élévation de privilège sur le système
# Voir le warning ici https://docs.docker.com/engine/install/linux-postinstall/#manage-docker-as-a-non-root-user
users.users.<user>.extraGroups = [ "docker" ];
# On peut aussi l'ajouter en rootless
virtualisation.docker.rootless = {
enable = true;
# L'option setSocketVariable définit la variable DOCKER_HOST pour l'instance Docker rootless pour les utilisateurs normaux par défaut.
setSocketVariable = true;
};
# Si vous souhaitez utiliser podman à la place
virtualisation.containers.enable = true;
virtualisation = {
podman = {
enable = true;
# Ajoute l'alias `docker` pour une utilisation plus transparente avec les outils compatibles docker seulement
dockerCompat = true;
# Nécessaire pour que les conteneurs sous podman-compose puissent communiquer entre eux.
defaultNetwork.settings.dns_enabled = true;
};
};
# On rajoute distrobox
environment.systemPackages = with pkgs; [ distrobox ];
Une fois la configuration ajouté, il suffit de taper la commande:
Sans flake
nixos-rebuild switch
Avec flake
nixos-rebuild switch --flake [path du flake]#[nom de la configuraiton]
Normalement, vous devriez avoir la commande distrobox
de disponible. Si c'est le cas, vous pouvez allez à cette étape
Création du container pour travailler
NixOS Distrobox
Pour créer le container avec distrobox, on peut passer par ce fichier distrobox.ini
; Nom de notre environnement
[kdedev]
image=quay.io/fedora/fedora:latest
; Change le home directory si vous souhaitez isoler votre environnement de travail de votre home directory host
home="${HOME}/.distrobox_home/kdedev"
; Uniquement si vous possedez une carte NVIDIA. Distrobox va intégrer des patchs pour mieux gérer les intégrations avec NVIDIA.
nvidia=true
; Si vous souhaitez faire une image rootless
root=false
; Pull l'image durant la création de l'environnement
pull=true
Ensuite, il suffit de taper la commande pour créer notre environnement nommé kdedev
distrobox assemble create
Une fois l'environnement créer, il reste une dernière étape à faire.
Je recommande de rajouter ceci dans votre ~/.bashrc
ou dans le bashrc
situé dans le container configuré avec home
:
alias new_shell="env -u PATH -u QML2_IMPORT_PATH -u QT_PLUGIN_PATH -u NIXPKGS_QT6_QML_IMPORT_PATH -u XDG_CONFIG_DIRS bash -l"
Vous pouvez l'éditer plus facilement en allant dans votre environnement de travail avec:
distrobox enter kdedev
Cet alias peut-être utile pour retirer les variables d'environnements que rajoute NixOS. Sur Fedora Atomic, ça ne pose pas de problème, car ils respectent la FHS donc les librairies pointent au même endroit que dans le container. Sauf que Nix OS ne respecte pas la FHS (pour de bonnes raisons), donc on peut avoir des conflits lors de la compilation ou de l'exécution de programme que l'on aura compilé avec kde-builder
.
La FHS est une structure de fichier normalisé dans le monde Linux plus d'info ici
Pour l'utiliser, une fois dans votre environnement de travail, il suffit de faire:
distrobox enter kdedev # Pour rentrer dans votre environnement de travail
new_shell
Fedora Toolbox
Pour la configuration avec Fedora Toolbox, c'est assez simple, car Fedora intègre tout par défaut. Il suffit de taper la commande:
toolbox create -r [numéro de release fedora] [nom de l'environnement]
Dans notre cas, ça sera:
toolbox create -r 40 kdedev
Note: À l'heure ou j'écris le post, j'ai encore des soucis pour lancer kwin
avec Fedora Toolbox. J'ai des problèmes de permission sur les DRM. Je pense que c'est lié à selinux
.
J'obtiens l'erreur ci-dessous lors du lancement de kwin_wayland
KMS: DRM_IOCTL_MODE_CREATE_DUMB failed: Permission denied
DRM : C'est Direct Rendering Manager et non Digital Rights Management pour plus d'infos
Test de notre environnement
Avant de lancer notre test, il faut installer kde-builder
. Vous pouvez voir mon post précédent [ici]({{< ref "/post/kde_contribution.md#ma-configuration" >}}) ou vous pouvez suivre ce lien qui est le même que dans le post.
Rappel Il faut l'installer dans votre environnement créé juste avant.
distrobox enter kdedev
NixOS Distrobox
toolbox enter kdedev
Fedora Toolbox
Une fois votre environnement configurer, normalement vous pouvez tester de compiler solid
avec la commande :
kde-builder solid
Puis de lancer solid avec la commande:
source "$HOME/kde/build/solid/prefix.sh" && solid-hardware6 list
Voilà 🙂 Normalement vous êtes prêt à travailler sur KDE avec un système immuable.
Note pour le démarrage de KDE Plasma Mobile
Pour plasma-mobile, il est nécessaire de configurer d'autres variables d'environnements. Voici le script que j'utilise :
source "$HOME/kde/build/plasma-mobile/prefix.sh"
QT_QPA_PLATFORM=offscreen plasma-mobile-envmanager --apply-settings
# Environment variables
export QT_WAYLAND_DISABLE_WINDOWDECORATION=1
export QT_QUICK_CONTROLS_MOBILE=1
export PLASMA_PLATFORM=phone:handheld
export QT_QUICK_CONTROLS_STYLE=org.kde.breeze
QT_QPA_PLATFORM=wayland dbus-run-session kwin_wayland --xwayland "plasmashell -p org.kde.plasma.mobileshell" --width 360 --height 720
Vous pouvez aussi lancer le menu du haut sans lancer tout kwin
avec le script :
source "$HOME/kde/build/plasma-mobile/prefix.sh"
QT_QPA_PLATFORM=offscreen plasma-mobile-envmanager --apply-settings
# Environment variables
export QT_WAYLAND_DISABLE_WINDOWDECORATION=1
export QT_QUICK_CONTROLS_MOBILE=1
export PLASMA_PLATFORM=phone:handheld
export QT_QUICK_CONTROLS_STYLE=org.kde.breeze
qmlscene-qt6 "$HOME/kde/src/plasma-mobile/tests/ActionDrawerTest.qml"