Nix writer functions (writeShellApplication, writeText, etc.) for generating scripts, text files, and data. Use when creating derivations that produce scripts or configuration files.
From nix-tasukenpx claudepluginhub ncaq/konoka --plugin nix-tasukeThis skill uses the workspace's default tool permissions.
Searches prompts.chat for AI prompt templates by keyword or category, retrieves by ID with variable handling, and improves prompts via AI. Use for discovering or enhancing prompts.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Guides agent creation for Claude Code plugins with file templates, frontmatter specs (name, description, model), triggering examples, system prompts, and best practices.
ファイルやスクリプトを生成する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系と同じ構造です。
pkgs.*)nixpkgs/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: シェルスクリプト用の最高機能writerwriteCBin pname code: Cソースをコンパイルしてバイナリを生成concatTextFile: 複数ファイルを連結concatText name files: concatTextFileのラッパーconcatScript name files: 実行可能な連結ファイルを生成writeClosure paths: ランタイム依存クロージャのパス一覧を書き出すwriteDirectReferencesToFile path: 直接参照のパス一覧を書き出すwriteStringReferencesToFile string: 文字列コンテキストの依存パスを書き出すpkgs.writers.*)nixpkgs/pkgs/build-support/writers/scripts.nix
配下に定義されています。
各関数にBinサフィックス版があり、
$out/bin/に配置します。
makeScriptWriter: インタープリタ言語用スクリプトの基盤makeBinWriter: コンパイル言語用バイナリの基盤writeBash / writeBashBinwriteDash / writeDashBinwriteFish / writeFishBinwriteNu / writeNuBinwriteBabashka / writeBabashkaBinwriteGuile / writeGuileBinwriteJS / writeJSBinwriteLua / writeLuaBinwritePerl / writePerlBinwritePyPy2 / writePyPy2BinwritePyPy3 / writePyPy3BinwritePython3 / writePython3BinwriteRuby / writeRubyBinwriteFSharp / writeFSharpBinwriteHaskell / writeHaskellBinwriteNim / writeNimBinwriteRust / writeRustBinnixpkgs/pkgs/build-support/writers/data.nix に定義されています。
writeJSON name data: Nixの値をJSONファイルとして書き出すwriteTOML name data: Nixの値をTOMLファイルとして書き出すwriteYAML name data: Nixの値をYAMLファイルとして書き出すwriteShellApplicationを優先する理由シェルスクリプトを書く場合はwriteShellApplicationを優先的に使用します。
writeShellApplication {
name = "my-script";
runtimeInputs = with pkgs; [ curl jq ];
text = ''
response=$(curl -s "https://api.example.com/data")
echo "$response" | jq '.items[]'
'';
}
writeShellScript/writeShellScriptBinと比較した利点:
set -o errexit, set -o nounset, set -o pipefailが自動適用されること。
いわゆるset -euo pipefailがデフォルトで有効になります。
bashOptionsで制御可能です。runtimeInputsでPATH管理ができ、実行時依存が明示的になるruntimeEnvで環境変数を設定できる