Le paquet Discourse échoue à être construit via nix-shell

J’ai tenté de télécharger et de compiler le paquet nix de Discourse, mais cela a échoué en raison d’une erreur de dépendance pnpm apparente :

 ERR_PNPM_INVALID_DEPENDENCY_NAME  Refusing to place a dependency under /build/source/frontend/discourse-types/node_modules with the invalid alias "@types/@glimmer__component"

ERROR: pnpm failed to install dependencies

If you see ERR_PNPM_NO_OFFLINE_TARBALL above this, follow these to fix the issue:
1. Set pnpmDeps.hash to "" (empty string)
2. Build the derivation and wait for it to fail with a hash mismatch
3. Copy the 'got: sha256-' value back into the pnpmDeps.hash field

If you see ERR_PNPM_LOCKFILE_CONFIG_MISMATCH above this, try changing the pnpm version
Found 'pnpm' with version '10.34.4'

error: Cannot build '/nix/store/k90f0nxqhlyb1bym9lg5xl6pfjz4vamf-discourse-assets-2026.1.4.drv'.
       Reason: builder failed with exit code 1.
       Output paths:
         /nix/store/biwwabb1xl58v4ywqmmc7d4vm0sl78q3-discourse-assets-2026.1.4-node_modules
         /nix/store/jsbd94c63h63yq5xvrp27m5l1sg6667c-discourse-assets-2026.1.4-generated
         /nix/store/n278iw1v8kzswvwm8f6n6g15gkw6wb0q-discourse-assets-2026.1.4-frontend
         /nix/store/qnxglj6z2n8fn46af9rp7161634brcgk-discourse-assets-2026.1.4
       Last 25 log lines:
       > Progress: resolved 1909, reused 1263, downloaded 0, added 0
       > Progress: resolved 1909, reused 1907, downloaded 0, added 65
       > Progress: resolved 1909, reused 1909, downloaded 0, added 435
       > Progress: resolved 1909, reused 1909, downloaded 0, added 530
       > Progress: resolved 1909, reused 1909, downloaded 0, added 672
       > Progress: resolved 1909, reused 1909, downloaded 0, added 838
       > Progress: resolved 1909, reused 1909, downloaded 0, added 1036
       > Progress: resolved 1909, reused 1909, downloaded 0, added 1175
       > Progress: resolved 1909, reused 1909, downloaded 0, added 1464
       > Progress: resolved 1909, reused 1909, downloaded 0, added 1767
       > Progress: resolved 1909, reused 1909, downloaded 0, added 1907
       > Progress: resolved 1909, reused 1909, downloaded 0, added 1908
       > Progress: resolved 1909, reused 1909, downloaded 0, added 1909, done
       >  ERR_PNPM_INVALID_DEPENDENCY_NAME  Refusing to place a dependency under /build/source/frontend/discourse-types/node_modules with the invalid alias "@types/@glimmer__component"
       >
       > ERROR: pnpm failed to install dependencies
       >
       > If you see ERR_PNPM_NO_OFFLINE_TARBALL above this, follow these to fix the issue:
       > 1. Set pnpmDeps.hash to "" (empty string)
       > 2. Build the derivation and wait for it to fail with a hash mismatch
       > 3. Copy the 'got: sha256-' value back into the pnpmDeps.hash field
       >
       > If you see ERR_PNPM_LOCKFILE_CONFIG_MISMATCH above this, try changing the pnpm version
       > Found 'pnpm' with version '10.34.4'
       >
       For full logs, run:
         nix log /nix/store/k90f0nxqhlyb1bym9lg5xl6pfjz4vamf-discourse-assets-2026.1.4.drv
error: Cannot build '/nix/store/9n8grwvci4gd2c64i9wm5ggw5v4r63xf-discourse-2026.1.4.drv'.
       Reason: 1 dependency failed.
       Output paths:
         /nix/store/l9xhbd5scihfln5jr9vh1c6l4xznaall-discourse-2026.1.4
error: Build failed due to failed dependency

Je n’ai pas vraiment vu ce problème signalé ailleurs et j’ai pensé que vous pourriez aimer en être informés.

Le problème, c’est que seuls Debian/Ubuntu sont pris en charge, pas Nix. Est-ce pour un environnement de développement ou pour la production ?

Il s’agit simplement de télécharger le paquet Discourse depuis nixpkgs en utilisant le gestionnaire de paquets Nix. Les dérivations fonctionnent essentiellement en clonant et en compilant un paquet directement depuis le code source.

J’installais simplement un paquet de manière éphémère, comme je le ferais pour n’importe quel autre paquet NixOS. Ce n’était pas spécifiquement pour du développement ou de la production ; je voulais surtout voir si je pouvais utiliser Discourse en ligne de commande. Mon navigateur TUI n’affichait pas certains éléments de l’interface, alors j’ai pensé tester le paquet Nix pour voir si l’expérience utilisateur serait plus adaptée.

J’ai essayé un téléchargement/compilation simple via Nix et j’ai obtenu l’erreur mentionnée ci-dessus.

Intéressant. Je pense que ce paquet n’est pas officiellement maintenu par Discourse. Un coup d’œil rapide aux Mainteneurs ne liste aucun membre de l’équipe Discourse que je connais. De plus, aucune Documentation à ce sujet, à ma connaissance.

Pour référence : ce plugin, je pense

ah oui, ce sont les mainteneur(s) de nixpkg

la source réelle se trouve dans le bloc `let in`

ligne 55 :

let
  version = "2026.1.4";

  src = fetchFromGitHub {
    owner = "discourse";
    repo = "discourse";
    rev = "v${version}";
    sha256 = "sha256-kQYDKZIMsWByuCZQfUlwhoIew5QykVylRMh6xvrHIBY=";
  };
in
# ...

donc cela provient de `discourse/discourse`, le reste de la dérivation consiste essentiellement en des étapes de compilation, où placer les fichiers, comment gérer certaines erreurs de compilation, etc.

ce paramètre `src` agit un peu comme une variable, car il est propagé tout au long du reste de la dérivation

Aussi, vous n’avez pas besoin de passer entièrement à NixOS pour tester cela.

Le gestionnaire de paquets Nix est disponible pour presque toutes les machines.

`nix-shell -p discourse`

où `nix-shell` démarre un shell dans lequel les paquets spécifiés par l’option `-p` sont désormais disponibles sur le système. Une fois le shell fermé, ces paquets ne sont plus installés.

Je fais un test pour voir si ce fil a été verrouillé, car je ne vois pas l’une de mes dernières modifications.

Peut-être que la modification doit être approuvée pour s’afficher dans le message.

Le fil n’est pas verrouillé et nous apprécions le sujet tout en apprenant. Merci pour ta contribution et bienvenue sur Meta :+1: