2017-04-16 49 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安裝。