Как сделать пакет, который включает в себя зависимости времени выполнения и переменные среды? - PullRequest
0 голосов
/ 20 мая 2019

Вопрос может быть не точным, но я пытаюсь достичь этого:

Пакет puppeteer-core NPM требует автономного браузера во время выполнения, и я обнаружил, что могу использовать его с последней версией Chromium в Nixpkgs. Мой текущий рабочий процесс:

  1. Я переопределил node2nix -созданный default.nix с override.nix, добавив хром к buildInputs:

    {pkgs ? import <nixpkgs> {
        inherit system;
    }, system ? builtins.currentSystem}:
    let
      nodePackages = import ./default.nix {
        inherit pkgs system;
      };
    in
    nodePackages // {
      shell = nodePackages.shell.override {
        buildInputs = [ pkgs.chromium ];
      };
    }
    
  2. Выпуск nix-shell override.nix -A shell.

  3. export CHROMIUM_PATH=$(which chromium)

  4. Настройка Chromium в файлах javascript с помощью process.env.CHROMIUM_PATH.

Это хорошо работает, и проект можно легко поделиться с другими, создав тарбол, но им также придется настраивать среду вручную, и мне также не нравится, когда Chromium включается в зависимости сборки. Я мог бы просто установить его глобально с Nix, но остальные шаги по-прежнему будут там.

Я прочитал руководства и освоился с языком, но еще не создал деривацию или пакет, поэтому уверен, что упустил что-то очевидное.


Некоторые обсуждения, которые я нашел по теме:

...