Сборка пакета Discourse через nix-shell завершается с ошибкой

Я попытался скачать и собрать пакет Discourse для Nix, но это не удалось из-за ошибки, связанной с зависимостями 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

Я нигде не видел этой проблемы и подумал, что вам, возможно, будет полезно об этом знать.

Дело в том, что поддерживаются только Debian/Ubuntu, а Nix — нет. Это для среды разработки или для продакшена?

Это просто загрузка пакета Discourse из nixpkgs с помощью пакетного менеджера Nix. Деривации работают, по сути, клонируя и собирая пакет непосредственно из исходного кода.

Я просто временно устанавливал пакет, как и любой другой в NixOS. Не специально для разработки или продакшена, а просто хотел проверить, можно ли использовать Discourse через командную строку. Мой текстовый браузер не отображал некоторые элементы интерфейса, поэтому я решил протестировать пакет из nixpkgs и посмотреть, будет ли пользовательский опыт более удобным.

Попытался выполнить простую загрузку/сборку через Nix и получил aforementioned ошибку.

Интересно. Я полагаю, что этот пакет не является официальным продуктом Discourse. Быстрый взгляд на список сопровождающих (Maintainers) не показывает ни одного члена команды Discourse, о котором я слышал. Кроме того, насколько мне известно, нет никакой #документации по этому поводу.

Для справки: я думаю, речь об этом плагине

ага, это как раз сопровождающий(ие) nixpkg

сам исходный код находится в блоке `let in`

строка 55:

let
  version = "2026.1.4";

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

так что он берет данные из `discourse/discourse`, а остальная часть деривации — это по сути шаги сборки: куда поместить файлы, как обработать определенные ошибки сборки и т.д.

этот параметр `src` работает как переменная, которая передается дальше по всей деривации

Также вам не нужно полностью переходить на NixOS, чтобы протестировать это.

Пакетный менеджер Nix доступен практически для любой системы.

`nix-shell -p discourse`

Здесь `nix-shell` запускает оболочку, в которой указанные пакеты (через флаг `-p`) становятся доступными в системе. После закрытия оболочки эти пакеты больше не установлены.

Проверяю, не заблокирована ли эта тема, так как я не вижу одного из своих последних изменений.

Возможно, для отображения в сообщении изменение нужно утвердить.

Тема не закрыта, и мы с удовольствием обсуждаем её и учимся. Спасибо за ваш вклад и добро пожаловать в Meta :+1: