如何在Nix中打包命令行工具?

时间:2017-04-16 16:39:23

标签: nix

假设您有一个构成命令行工具的bash脚本的简单集合,bin/中有一个主脚本,lib/中有一些库脚本,所有这些脚本都与Nix打包在一起为方便起见,使用tool.nixdefault.nix

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

为了正确打包此工具,tool.nix应该是什么样的,允许在tool的shell中执行tool <args>

1 个答案:

答案 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来安装。