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

  • 本文关键字:命令行 工具 Nix nix
  • 更新时间 :
  • 英文 :


假设你有一个简单的bash脚本集合组成了一个命令行工具,其中bin/的主脚本和lib/中的一些库脚本,为了方便起见,所有这些都使用带有default.nixtool.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来安装。

最新更新