Il pacchetto Discourse non viene compilato tramite nix-shell

Ho tentato di scaricare e compilare il pacco nix di Discourse, ma è fallito a causa di un apparente errore di dipendenza pnpm:

 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

Non ho visto segnalato questo problema da nessuna parte e ho pensato che vi sarebbe piaciuto saperlo.

Il punto è che sono supportati solo Debian/Ubuntu, non Nix. Questo è per un ambiente di sviluppo o per la produzione?

Si tratta semplicemente di scaricare il pacchetto Discourse da nixpkgs utilizzando il gestore dei pacchetti Nix. Le derivazioni funzionano essenzialmente clonando e compilando un pacchetto direttamente dalla sorgente.

Stavo installando temporaneamente un pacchetto come farei con qualsiasi altro pacchetto su NixOS. Non specificamente per sviluppo o produzione, in realtà volevo solo verificare se potessi utilizzare Discourse da riga di comando. Il mio browser testuale (TUI) non visualizzava alcune parti dell’interfaccia utente, quindi ho pensato di fare una prova con il pacchetto Nix per vedere se l’esperienza utente fosse più adatta.

Ho provato un semplice download/compilazione tramite Nix e ho ottenuto l’errore menzionato sopra.

Interessante. Credo che il pacchetto non sia ufficiale di Discourse. Una rapida occhiata ai Manutentori non mostra alcun membro del team di Discourse che io conosca. Inoltre, nessun #documentazione al riguardo, per quanto ne so.

Per riferimento: questo plugin penso

ah sì, quelli sono i manutentori di nixpkg

la sorgente effettiva si trova nel blocco let in

riga 55:

let
  version = "2026.1.4";

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

quindi attinge da discourse/discourse; il resto della derivazione è fondamentalmente composto da passaggi di compilazione, indicazioni su dove posizionare i file, come gestire determinati errori di compilazione, ecc.

il parametro src è simile a una variabile, nel senso che viene propagato nel resto della derivazione

Quindi non è necessario passare completamente a NixOS per testare questa funzionalità

il gestore di pacchetti Nix è disponibile per quasi qualsiasi macchina

`nix-shell -p discourse`

dove `nix-shell` avvia una shell in cui i pacchetti specificati con `-p` sono ora disponibili sul sistema. una volta chiusa la shell, tali pacchetti non saranno più installati

Sto facendo una prova per vedere se questa discussione è stata bloccata, poiché non riesco a vedere una delle mie ultime modifiche.

Forse la modifica deve essere approvata per essere visualizzata nel post.

La discussione non è bloccata e stiamo godendoci l’argomento e imparando. Grazie per il tuo contributo e benvenuto su Meta :+1: