writer-functionlisted
Install: claude install-skill ncaq/konoka
# Nixのwriter系関数
ファイルやスクリプトを生成するderivationを作るための関数群です。
## 無印と`Bin`サフィックスの違い
多くのwriter関数には無印版と`Bin`サフィックス版があります。
### 無印(`writeShellScript`等)
`$out`がファイルそのもの。
`${myScript}`でバイナリパスを直接参照できる。
### `Bin`(`writeShellScriptBin`等):
`$out/bin/<name>`にファイルを出力し`meta.mainProgram`を設定する。
`lib.getExe myPkg`や`${myPkg}/bin/<name>`でパスを得る。
`lib.getExe`の使用を推奨します。
ファイルそのものではないので、
`environment.systemPackages`や`runtimeInputs`に入れて`$PATH`に載せられます。
`writeShellApplication`は名前に`Bin`が付いていませんが`$out/bin/<name>`に出力するため`Bin`系と同じ構造です。
## trivial-builders (`pkgs.*`)
[nixpkgs/pkgs/build-support/trivial-builders/default.nix](https://github.com/NixOS/nixpkgs/blob/master/pkgs/build-support/trivial-builders/default.nix)
に定義されています。
### テキスト系
- `writeTextFile`: 全テキスト系writerの基盤関数
- `writeText name text`: テキストファイルを生成
- `writeTextDir path text`: ディレクトリ構造付きでテキストファイルを生成
### 汎用スクリプト系
- `writeScript name text` / `writeScriptBin name text`: 実行可能スクリプト、シバンは手動で記述する
### シェルスクリプト系
- `writeShellScript name text` / `writeShellScriptBin name text`: シバン自動付与、構文チェックあり
- `writeShellApplication`: シェルスクリプト用の最高機能writer
### その他
- `writeCBin pname code`: Cソースをコンパイルしてバイナリを生成
- `concatTextFile`: 複数ファイルを連結
- `concatText name files`: `concatTextFile`のラッパー
- `concatScript name files`: 実行可能な連結ファイルを生成
- `writeClosure paths`: ランタイム依存クロージャのパス一覧を書き出す
- `writeDirectReferencesToFile path`: 直接参照のパス一覧を書き出す
- `writeStringReferencesToFile string`: 文字列コンテキストの依存パスを書き出す
## writers (`pkgs.writers.*`)
[nixpkgs/pkgs/build-support/writers/scripts