← ClaudeAtlas

nix-tool-installlisted

新しい CLI ツール・パッケージをインストールしたくなったときの手順。brew install / npm -g / pip install --user 等を打つ前に必ず使用する。全デバイスが Nix 管理(nix-darwin / NixOS + home-manager)であり、Nix 外のパッケージマネージャでのインストールは禁止。
yktsnet/dotfiles-public · ★ 1 · Testing & QA · score 63
Install: claude install-skill yktsnet/dotfiles-public
# nix-tool-install フリートの全デバイスは Nix 管理下にある。ツールの導入は必ず Nix 経由で行い、**Homebrew・npm -g・pip install --user・cargo install 等でシステムにインストールしない**(`nix search` の前に brew へ手を伸ばすのが典型的な誤り)。 この禁止は `.claude/hooks/block-non-nix-install.sh` が PreToolUse で機械的に遮断しており、拒否メッセージから本スキルへ誘導される。 ## 手順 ### 1. 用途の寿命を判断する | 用途 | 導入先 | |---|---| | 今この場で1回きり(以後使う見込みなし) | `nix run nixpkgs#<pkg> -- <args>` または `nix shell nixpkgs#<pkg>`(設定変更なし) | | **繰り返し使う開発ツール(既定はこれ)** | `devices/gui/<device>/home.nix` の `home.packages` | | GUI 全デバイスで常用 | `devices/gui/home.nix` の `home.packages` | | headless 全デバイスで常用 | `devices/headless/home.nix` | | リポ固有のランタイム依存(clone した他人にも必要なもの) | そのリポの `shell.nix`(または flake devShell) | 対象デバイスは `hostname -s` で確認する。 迷ったら home.nix。`nix run` / `nix shell` は使い捨てであり、同じツールを何度も一時起動するのは非効率(毎回 eval が走る)。shell.nix は「自分の道具置き場」ではなく、リポの再現性(他人が clone して動かすのに必要なもの)のためだけに使う。 ### 2. パッケージ名を確認する ```bash nix search nixpkgs <tool> 2>/dev/null | head ``` nixpkgs に無い場合はその旨を user に報告して指示を仰ぐ(flake input 追加・overlay はここで勝手にやらない)。 ### 3. 反映する - **一時利用**: `nix run` / `nix shell` はそのまま使える。反映作業なし - **shell.nix**: 編集後、`nix-shell` に入り直せば反映される - **home.nix**: 編集まで行い、rebuild は user に依頼する - macOS: `sudo darwin-rebuild switch --flake ~/dotfiles#<host>` - NixOS: `sudo nixos-rebuild switch --flake ~/dotfiles#<host>` - rebuild は sudo を要するため Agent は実行しない。編集内容と上記コマンドを提示して終わる ## 一時的な依存が要るとき 検証のためだけに Python パッケージ等が要る場合は、使い捨て環境で取り込む。 ```bash nix-shell -p "python3.withPackages (ps: [ ps.pyyaml ps.fastapi ])" --run '..