← ClaudeAtlas

treefmtlisted

treefmt-nix and nix fmt guide. Unified formatting and linting with treefmt. Use when configuring or running nix fmt, treefmt, or adding formatters/linters to a Nix project.
ncaq/konoka · ★ 3 · Code & Development · score 72
Install: claude install-skill ncaq/konoka
# treefmt-nix ## 概要 [treefmt](https://github.com/numtide/treefmt)はプロジェクト内の複数言語ファイルを一コマンドで並列フォーマットするツールです。 [treefmt-nix](https://github.com/numtide/treefmt-nix)はNixモジュールシステムでtreefmtを設定・管理するラッパーです。 `nix fmt`コマンドはflakeの`formatter`出力を呼び出します。 treefmt-nixを組み込むと`nix fmt`の実体がtreefmtになり、 設定されたすべてのプログラムが実行されます。 FlakeはGitで追跡されているファイルのみを対象とするため、 新規ファイルがある場合は事前に`git ls-files --others --exclude-standard -z | git add --intent-to-add --pathspec-from-file=- --pathspec-file-nul`を実行してください。 未追跡ファイルがなく空の入力でもエラーにはなりません。 ## フォーマッタだけではなくリンターも含む `nix fmt`や`treefmt`という名前から「フォーマッタだけ」と誤解されがちですが、 treefmt-nixの`programs`にはリンターやチェッカーが多数含まれています。 フォーマッタの例: - `nixfmt` - `prettier` - `rustfmt` - `shfmt` リンターの例: - `actionlint` - `deadnix` - `hlint` - `shellcheck` - `statix` その他: - `typos`(スペルチェック) - `zizmor`(GitHub Actionsセキュリティ) treefmtのフォーマッタ仕様は「ファイルパスのリストを受け取り、変更があればファイルに書き戻す」というものです。 リンターはファイルを変更しませんが、エラー時に非ゼロ終了するためtreefmtがエラーとして検出します。 ## 典型的な設定例 flake-partsを使う場合の例です。 ```nix { inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; flake-parts.url = "github:hercules-ci/flake-parts"; treefmt-nix = { url = "github:numtide/treefmt-nix"; inputs.nixpkgs.follows = "nixpkgs"; }; }; outputs = inputs@{ flake-parts, treefmt-nix, ... }: flake-parts.lib.mkFlake { inherit inputs; } { imports = [ treefmt-nix.flakeModule ]; systems = [ "aarch64-linux" "x86_64-linux" ]; perSystem