Pacote Discourse falha ao compilar via nix-shell

Tentei baixar e compilar o pacote nix do Discourse, mas falhou devido a um aparente erro de dependência do 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

Não vi esse problema em nenhum outro lugar e achei que vocês poderiam querer saber.

O fato é que apenas Debian/Ubuntu são suportados, não Nix. Isso é para um ambiente de desenvolvimento ou para produção?

Isso é apenas baixar o pacote do Discourse do nixpkgs usando o gerenciador de pacotes Nix. As derivações funcionam essencialmente clonando e compilando um pacote diretamente da fonte.

Eu estava apenas instalando efemeramente um pacote como faria com qualquer outro no NixOS. Não especificamente para desenvolvimento ou produção, na verdade eu queria ver se poderia usar o Discourse em uma CLI. Meu navegador TUI não exibia parte da interface, então pensei em testar o pacote do Nix para ver se a experiência do usuário seria mais adequada.

Tentei um download/compilação simples via Nix e obtive o erro mencionado acima.

Interessante. Acredito que o pacote não seja oficialmente do Discourse. Uma rápida olhada nos Mantenedores não lista nenhum membro da equipe do Discourse que eu conheça. Além disso, sem #documentação sobre isso, pelo que eu sei.

Para referência: esse plugin, acho

ah sim, esses são os mantenedores do nixpkg

a fonte real está no bloco `let in`

linha 55:

let
  version = "2026.1.4";

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

então ele está obtendo do `discourse/discourse` o resto da derivação é basicamente apenas etapas de compilação, onde colocar arquivos, o que fazer com certos erros de compilação …etc

esse parâmetro `src` é meio como uma variável, pois é propagado pelo resto da derivação

Além disso, você não precisa adotar o NixOS completo para testar isso

o gerenciador de pacotes Nix está disponível para praticamente qualquer máquina

`nix-shell -p discourse`

onde o `nix-shell` inicia um shell no qual os pacotes especificados com `-p` ficam disponíveis no sistema. assim que o shell é fechado, esses pacotes deixam de estar instalados

testando para ver se este tópico foi bloqueado, pois não consigo ver uma das minhas edições mais recentes.

talvez a edição precise ser aprovada para ser exibida na publicação

o tópico não está travado e estamos aproveitando o assunto e aprendendo. Obrigado pela sua contribuição e bem-vindo ao Meta :+1: