Discourse-Paket lässt sich über nix-shell nicht erstellen

Ich habe versucht, das Discourse-Nixpaket herunterzuladen und zu erstellen, aber es ist aufgrund eines scheinbaren pnpm-Abhängigkeitsfehlers fehlgeschlagen:

 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

Ich habe dieses Problem bisher nicht woanders gesehen und dachte, ihr möchtet es vielleicht wissen.

Das Problem ist, dass nur Debian/Ubuntu unterstützt werden, nicht aber Nix. Ist das für eine Entwicklungsumgebung oder für den Produktivbetrieb?

Hierbei wird das Discourse-Paket aus den nixpkgs einfach über den Nix-Paketmanager heruntergeladen. Derivationen funktionieren, indem sie ein Paket im Wesentlichen direkt aus dem Quellcode klonen und bauen.

Ich habe das Paket nur vorübergehend installiert, genau wie jedes andere Paket unter NixOS. Es ging mir nicht speziell um Entwicklung oder Produktion; eigentlich wollte ich nur prüfen, ob ich Discourse in einer CLI nutzen kann. Mein TUI-Browser rendert einige Teile der Benutzeroberfläche nicht korrekt, daher dachte ich, ich teste die Nix-Paketversion, um zu sehen, ob die UX damit besser funktioniert.

Ich habe einen einfachen Download/Build über Nix versucht und erhielt den oben genannten Fehler.

Interessant. Ich glaube, das Paket stammt nicht offiziell von Discourse. Ein kurzer Blick auf die Maintainer zeigt keine Mitglieder des Discourse-Teams, die ich kenne. Außerdem gibt es meines Wissens keine #Dokumentation dazu.

Zur Referenz: dieses Plugin, vermute ich

ah ja, das sind die Nixpkgs-Maintainer(s)

der eigentliche Quellcode befindet sich im `let in`-Block

Zeile 55:

let
  version = "2026.1.4";

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

es wird also von `discourse/discourse` bezogen; der Rest der Ableitung besteht im Wesentlichen aus Build-Schritten, dem Platzieren von Dateien, dem Umgang mit bestimmten Build-Fehlern usw.

der `src`-Parameter wirkt insofern wie eine Variable, als er durch den Rest der Ableitung weitergegeben wird

Außerdem musst du dich nicht vollständig auf NixOS verpflichten, um dies zu testen.

Der Nix-Paketmanager ist für fast jede Maschine verfügbar.

`nix-shell -p discourse`

Dabei startet `nix-shell` eine Shell, in der die angegebenen Pakete (`-p`) nun auf dem System verfügbar sind. Sobald die Shell geschlossen wird, sind diese Pakete nicht mehr installiert.

Ich teste, ob dieser Thread gesperrt wurde, da ich eine meiner jüngsten Bearbeitungen nicht sehen kann.

Vielleicht muss die Bearbeitung genehmigt werden, damit sie im Beitrag angezeigt wird.

Der Thread ist nicht gesperrt, und wir genießen das Thema und lernen dabei. Vielen Dank für deinen Beitrag und willkommen bei Meta :+1: