2017-04-16 42 views
3

假设你有bash脚本简单的集合组成一个命令行工具,在bin/主脚本,并在lib/一些库脚本,所有与尼克斯使用tool.nixdefault.nix为了方便包装:如何在Nix中打包命令行工具?

scriptdir 
└─ bin/ 
    └─ tool 
└─ lib/ 
└─ default.nix 
└─ tool.nix 

tool.nix应该如何正确打包此工具,允许在tool <args>的shell中执行tool

回答

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 {} 

,并可以通过调用scriptdirnix-env -f ./default.nix -i安装。