mcpField
N
nixos-best-practices

nixos-best-practices

github.com/lihaoze123クラウド・DevOps3282 回インストール34 週間前に更新
リポジトリ

nixos-best-practices について

flakes と Home Manager を使った NixOS 設定のためのリファレンススキルです。overlay の適用範囲、ホスト構成、トラブルシューティングを説明し、既存のパターンに沿った設定を支援します。

主な機能

  1. 01flakes 設定構造のガイド
  2. 02overlay の適用範囲と useGlobalPkgs の規則
  3. 03ホストと共有モジュールの構成
  4. 04パッケージ導入の実践方法
  5. 05設定トラブルの調査手順

活用シーン

  1. 01複数ホストの NixOS 設定の整理
  2. 02Home Manager での overlay 追加
  3. 03再ビルド後にパッケージがない問題の調査
  4. 04設定エラーの体系的なデバッグ

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/lihaoze123/my-claude-code --skill nixos-best-practices

インストール後、Claude Code で/nixos-best-practicesを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

AGENTS.md
rules/
_sections.md
common-mistakes.md
flakes-structure.md
host-organization.md
overlay-scope.md
package-installation.md
troubleshooting.md

詳細

Flakes を使用した NixOS システムの設定

Flakes を使用して NixOS システムを設定し、オーバーレイを適切に管理し、保守しやすい構成に整理します。

⚠️ 重要:変更する前にお読みください

NixOS の設定を変更する前に、必ず次のことを行ってください。

  1. クイックリファレンスにある関連ルールファイルを確認する
  2. よくある間違いを避けるため、common-mistakes.md を確認する
  3. 体系的なデバッグ方法を把握するため、troubleshooting.md を確認する
  4. コードベースにある既存のパターンに従う

該当するドキュメントを読むまでは、コーディングを始めないでください。

設定エラーのほとんどは、最初にルールを読まないことが原因で起こります。読むのにかかる5分で、何時間ものデバッグを省けます。

危険信号 — コーディングを始める前に中断してください

  • 「このオプションを試せばいいだけ」 → nixpkgs または Home Manager に存在するか確認してください
  • 「いろいろな方法を試してみよう」 → 推測せず、ドキュメントを読んでください
  • 「これなら動くはず」 → nixpkgs で構文と利用可否を確認してください
  • 何度もビルドを試みる → 体系的なデバッグができていません
  • 「これは動くと覚えている」 → ドキュメントは更新されます。現在の方法を確認してください

基本原則

NixOS システム設定と Home Manager のオーバーレイの相互作用を理解してください。

useGlobalPkgs = true の場合、オーバーレイは Home Manager の設定ファイルではなく、NixOS の設定レベルで定義する必要があります。

使用する場面

  • Flakes と Home Manager を使用して NixOS を設定する
  • 適用されないように見えるオーバーレイを追加する
  • カスタムオーバーレイと useGlobalPkgs = true を使用する
  • 複数のホストにわたる NixOS 設定を整理する
  • 再ビルド後もパッケージの変更が反映されない
  • オーバーレイの定義場所がわからない

次の用途には使用しないでください。

  • 新しいソフトウェアをパッケージ化する(nix-packaging-best-practices を使用してください)
  • オーバーレイを使用せずにパッケージを簡単にインストールする
  • NixOS モジュールを開発する(NixOS モジュールのドキュメントを参照してください)

クイックリファレンス

トピックルールファイル
オーバーレイのスコープと useGlobalPkgsoverlay-scope
Flakes の設定構造flakes-structure
ホスト設定の整理host-organization
パッケージインストールのベストプラクティスpackage-installation
よくある設定ミスcommon-mistakes
設定の問題のデバッグtroubleshooting

基本パターン:useGlobalPkgs を使ったオーバーレイ

# ❌ WRONG: Overlay in home.nix (doesn't apply)
# home-manager/home.nix
{
  nixpkgs.overlays = [ inputs.claude-code.overlays.default ];  # Ignored!
  home.packages = with pkgs; [ claude-code ];  # Not found!
}

# ✅ CORRECT: Overlay in NixOS home-manager block
# hosts/home/default.nix
{
  home-manager.useGlobalPkgs = true;
  home-manager.useUserPackages = true;
  home-manager.users.chumeng = import ./home.nix;
  home-manager.extraSpecialArgs = { inherit inputs pkgs-stable system; };
  # Overlay must be HERE when useGlobalPkgs = true
  nixpkgs.overlays = [ inputs.claude-code.overlays.default ];
}

よくあるタスク

タスク解決方法
Flake の入力を追加するflake.nix の inputs に追加します
システムパッケージ用のオーバーレイを追加するシステム設定の nixpkgs.overlays で定義します
Home Manager 用のオーバーレイを追加する(useGlobalPkgs=true)ホスト設定の home-manager.nixpkgs.overlays で定義します
Home Manager 用のオーバーレイを追加する(useGlobalPkgs=false)nixpkgs.overlays を使って home.nix で定義します
入力をモジュールに渡すnixosSystem または home-manager で specialArgs を使用します
複数のホスト設定を管理するhosts/ にホストごとのファイルを作成します
共通設定モジュールを管理するmodules/ にモジュールを作成し、各ホストでインポートします
オーバーレイ適用後もパッケージが見つからないオーバーレイのスコープと useGlobalPkgs の設定を確認します

オーバーレイのスコープ選択表

useGlobalPkgsオーバーレイの定義場所影響範囲
truehome-manager.nixpkgs.overlaysシステム + Home Manager のパッケージ
truenixpkgs.overlays を使った home.nixなし(無視されます!)
falsenixpkgs.overlays を使った home.nixHome Manager のパッケージのみ
falsehome-manager.nixpkgs.overlaysHome Manager のパッケージのみ
任意システムの nixpkgs.overlaysシステムパッケージのみ

設定レイヤー(下から上へ)

  1. システム設定(/etc/nixos/configuration.nix またはホストファイル)

    • システム全体のサービス
    • システムパッケージ
    • システムオーバーレイはこのレイヤーにのみ影響します
  2. Home Manager(useGlobalPkgs=true)

    • システムの pkgs を使用します(システムオーバーレイを含みます)
    • Home Manager のオーバーレイは、システムパッケージとユーザーパッケージの両方に影響します
    • 単一ユーザーのシステムで最も効率的です
  3. Home Manager(useGlobalPkgs=false)

    • 個別の pkgs インスタンスを作成します
    • Home Manager のオーバーレイはユーザーパッケージにのみ影響します
    • ニーズが異なる複数ユーザーのシステムに適しています

要注意事項 — 作業を中断してください

  • 「home.nix のオーバーレイが機能しない」→ useGlobalPkgs=true か確認し、ホスト設定に移動してください
  • 「オーバーレイをあちこちに追加すればよい」→ 適切なスコープで一度だけ定義してください
  • 「nix repl ではパッケージが機能するのに、インストールされない」→ オーバーレイのスコープを確認してください
  • 「再ビルド後も変更が反映されない」→ オーバーレイの場所が正しいか確認してください
  • 「理由もなく useGlobalPkgs=false にしている」→ パッケージセットを分ける必要がない限り、true を使用してください

使い方

詳しい説明とコード例については、各ルールファイルをお読みください。

rules/overlay-scope.md       # The core overlay scope issue
rules/flakes-structure.md    # How to organize flake.nix
rules/host-organization.md   # How to structure host configs
rules/common-mistakes.md     # Pitfalls and how to avoid them

各ルールファイルには、次の内容が含まれています。

  • 重要な理由の簡単な説明
  • 説明付きの誤ったコード例
  • 説明付きの正しいコード例
  • 補足情報と参考資料

完全版ドキュメント

すべてのルールを展開した完全なガイドは、AGENTS.md をご覧ください。

コメント