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.

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:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# 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

1
nixos-rebuild switch

Avec flake

1
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

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
; 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

1
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:

1
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:

1
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:

1
2
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:

1
toolbox create -r [numéro de release fedora] [nom de l'environnement]

Dans notre cas, ça sera:

1
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

1
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 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.

1
distrobox enter kdedev

NixOS Distrobox

1
toolbox enter kdedev

Fedora Toolbox

Une fois votre environnement configurer, normalement vous pouvez tester de compiler solid avec la commande :

1
kde-builder solid

Puis de lancer solid avec la commande:

1
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 :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
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

Source

Vous pouvez aussi lancer le menu du haut sans lancer tout kwin avec le script :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
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"
Dernière mise à jour le oct. 06, 2024 18:07 +0200
Généré avec Hugo
Thème Stack conçu par Jimmy