如何制作一个包含运行时依赖项和环境变量的软件包?

时间:2019-05-20 14:25:50

标签: nix

这个问题可能并不精确,但这是我要实现的目标:

puppeteer-core NPM软件包在运行时需要无头浏览器,我发现我可以将其与Nixpkgs中的最新Chromium一起使用。我当前的工作流程:

  1. 我已通过向node2nix添加Chromium来覆盖default.nix创建的override.nixbuildInputs

    {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. 通过process.env.CHROMIUM_PATH在javascript文件中设置Chromium。

这很好用,并且可以通过创建tarball与其他人轻松共享该项目,但是他们也必须手动设置环境,而且我也不希望Chromium包含在构建依赖项中。我本可以在Nix上将其全局安装,但是其余的手动步骤仍然存在。

我阅读了手册,对语言有所了解,但是还没有构建派生工具或程序包,因此,我确定我缺少明显的内容。


我在该主题上找到了一些讨论:

0 个答案:

没有答案