title: Configurer kde-builder sur des bases immuables et lancer un projet KDE
description: 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.
slug: kdedev_on_immuable
date: 2024-10-06 00:00:00+0000
categories:
- Linux
tags:
- KDE
weight: 1 # You can add weight to some posts to override the default sorting (date descending)
---
## 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:
```nix
# 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
```nix
nixos-rebuild switch
```
Avec flake
```nix
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](#test-de-notre-environnement)
Vous pouvez l'éditer plus facilement en allant dans votre environnement de travail avec:
```bash
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](https://fr.wikipedia.org/wiki/Filesystem_Hierarchy_Standard)
Pour l'utiliser, une fois dans votre environnement de travail, il suffit de faire:
```bash
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:
```bash
toolbox create -r [numéro de release fedora] [nom de l'environnement]
```
Dans notre cas, ça sera:
```bash
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`
> DRM : C'est Direct Rendering Manager et non Digital Rights Management [pour plus d'infos](https://en.wikipedia.org/wiki/Direct_Rendering_Manager)
## 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](https://kde-builder.kde.org/en/getting-started/before-building.html#install-kde-builder) qui est le même que dans le post.