Open3

nixpkgsのreferenceを読む

satlersatler

installshellfiles -- 実装

postInstall hookで使える便利関数とか。以下を追加することで使えるようになる。

nativeBuildInputs = [ pkgs.installShellFiles ];

installBin

chmod で 755 にしていい感じの場所に移動してくれる。正直そこまで使う必要はなさそう。

installShellCompletion

補完のファイルをいい感じの名前で良い感じの場所に作ってくれる。ファイルの拡張子からシェルの種類を判定することもできるし、--zshみたいに指定することもできる。パスのかわりに、<()みたいな感じでコマンドを呼ぶやつでもいい。

postInstall
# explicit behavior
installShellCompletion --bash --name foobar.bash share/completions.bash
installShellCompletion --fish --name foobar.fish share/completions.fish
installShellCompletion --zsh --name _foobar share/completions.zsh
# implicit behavior
installShellCompletion share/completions/foobar.{bash,fish,zsh}

installManPage

いい感じの場所にmanページをインストールする。

postInstall
installManPage foobar.1 delmar.3
satlersatler

Overrides

大体理解してるけどメモ。

<pkg>.override

引数を上書きする。(多分 pkgs.callPackageをするときに上書きされる?あとから実装を読むかドキュメントを読む。)

<pkg>.overrideAttrs

stdenv.mkDerivation に渡されるAttrsetをoverrideする。

lib.makeOverridable

Attrsetの引数を受け取ってAttrsetを返す関数を上の関数でoverrideできるようにする。