假设你有一个简单的bash
脚本集合组成了一个命令行工具,其中bin/
的主脚本和lib/
中的一些库脚本,为了方便起见,所有这些都使用带有default.nix
的tool.nix
与Nix打包:
scriptdir
└─ bin/
└─ tool
└─ lib/
└─ default.nix
└─ tool.nix
为了正确打包此工具,tool.nix
应该是什么样子,允许使用 tool <args>
在 shell 中执行tool
?
在IRC的帮助下,以下tool.nix
工作:
{ stdenv }:
let
version = "0.0.1";
in stdenv.mkDerivation
rec
{
name = "tool-${version}";
src = ./.;
installPhase =
''
mkdir -p $out
cp -R ./bin $out/bin
cp -R ./lib $out/lib
'';
}
为了完整起见,default.nix
看起来像
{ pkgs ? import <nixpkgs> {} }:
pkgs.callPackage ./tool.nix {}
并且可以通过从scriptdir
调用nix-env -f ./default.nix -i
来安装。