将运行时依赖项注入nix包

时间:2016-06-05 09:51:47

标签: nix nixpkgs

通过覆盖buildInputs向包添加运行时依赖项会导致包重建。是否有一种简单的方法可以将运行时依赖项注入包中而无需重新编译?

所以基本上将package / bin添加到PATH并将package / lib添加到LD_LIBRARY_PATH

1 个答案:

答案 0 :(得分:0)

如果我理解你想要调整Nix安装的应用运行时使用的环境,而不是内置时使用的环境,那么一个方法我知道如下。通过使用它,您实际上创建了一个包装脚本,它会覆盖“默认命令”。因此,类似于创建例如一个自定义~/bin/vim脚本,它将一些选项/ env覆盖添加到默认的vim二进制文件中,该二进制文件在脚本中使用“硬编码的原始路径”进行调用。

nixpkgs中的一个示例是vimutils.vimWithRC如何使用自定义脚本覆盖vim命令。为了您自己的使用,您可以编写更多或更少的内容,如下所示:

with import <nixpkgs> {};

writeScriptBin "vim" ''
  #!/usr/bin/env bash
  export PATH=package/bin:$PATH   # whatever you like; I've added what you asked for
  export LD_LIBRARY_PATH=package/lib:$LD_LIBRARY_PATH
  ${vim}/bin/vim --my-options "$@"
'';

如果你把它放在my-vim.nix中,你应该可以安装它:

$ nix-env -e vim   # REMOVE NORMAL VIM. I think this should be done first to avoid conflict
$ nix-env -i -f my-vim.nix

希望它能为你工作并“覆盖”默认的vim。

免责声明:我还没有以这种确切的形式对其进行测试,抱歉。不幸的是,目前还没有方便的Nix控制台。