假设您有一个构成命令行工具的bash
脚本的简单集合,bin/
中有一个主脚本,lib/
中有一些库脚本,所有这些脚本都与Nix打包在一起为方便起见,使用tool.nix
和default.nix
:
scriptdir
└─ bin/
└─ tool
└─ lib/
└─ default.nix
└─ tool.nix
为了正确打包此工具,tool.nix
应该是什么样的,允许在tool
的shell中执行tool <args>
?
答案 0 :(得分:2)
在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 {}
可以通过nix-env -f ./default.nix -i
来调用scriptdir
来安装。