Agent Skills by ALSEL
Anthropic Claudeその他⭐ リポ 0品質スコア 50/100

nix-best-practices

Nix flakes、overlays、shell.nix、flake.nix ファイルを扱う際に使用します。

description の原文を見る

Use when working with Nix flakes, overlays, shell.nix, or flake.nix files.

SKILL.md 本文

Nix Best Practices

Flake Structure

標準的な flake.nix の構造:

{
  description = "Project description";

  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
    flake-utils.url = "github:numtide/flake-utils";
  };

  outputs = { self, nixpkgs, flake-utils }:
    flake-utils.lib.eachDefaultSystem (system:
      let
        pkgs = import nixpkgs {
          inherit system;
        };
      in {
        devShells.default = pkgs.mkShell {
          buildInputs = with pkgs; [
            # packages here
          ];
        };
      });
}

Follows パターン (重複する Nixpkgs を避ける)

オーバーレイ入力を追加する場合、follows を使用して親の nixpkgs を共有し、複数バージョンのダウンロードを回避します:

inputs = {
  nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";

  # オーバーレイは親の nixpkgs に従う
  some-overlay.url = "github:owner/some-overlay";
  some-overlay.inputs.nixpkgs.follows = "nixpkgs";

  # 中間の入力を通じて follows をチェーンする
  another-overlay.url = "github:owner/another-overlay";
  another-overlay.inputs.nixpkgs.follows = "some-overlay";
};

すべての入力は、直接使用しない場合でも outputs 関数に列挙する必要があります:

outputs = { self, nixpkgs, some-overlay, another-overlay, ... }:

オーバーレイの適用

オーバーレイは nixpkgs のパッケージを修正または追加します:

let
  pkgs = import nixpkgs {
    inherit system;
    overlays = [
      overlay1.overlays.default
      overlay2.overlays.default
      # インラインオーバーレイ
      (final: prev: {
        myPackage = prev.myPackage.override { ... };
      })
    ];
  };
in

Unfree パッケージの処理

オプション 1: nixpkgs-unfree (チームに推奨)

EULA ライセンスパッケージ用に numtide/nixpkgs-unfree を使用し、ユーザー設定が不要:

inputs = {
  nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
  nixpkgs-unfree.url = "github:numtide/nixpkgs-unfree/nixos-unstable";
  nixpkgs-unfree.inputs.nixpkgs.follows = "nixpkgs";

  # Unfree オーバーレイは nixpkgs-unfree に従う
  proprietary-tool.url = "github:owner/proprietary-tool-overlay";
  proprietary-tool.inputs.nixpkgs.follows = "nixpkgs-unfree";
};

これにより、チェーンされます: proprietary-toolnixpkgs-unfreenixpkgs

オプション 2: ユーザー設定

ユーザーが ~/.config/nixpkgs/config.nix に追加:

{ allowUnfree = true; }

オプション 3: 特定パッケージ (Flake)

let
  pkgs = import nixpkgs {
    inherit system;
    config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [
      "specific-package"
    ];
  };
in

注: flake.nix の config.allowUnfreenix develop では機能しません - nixpkgs-unfree またはユーザー設定を使用してください。

バイナリオーバーレイリポジトリの作成

nixpkgs が機能が不足したコミュニティバージョンをビルドする場合 (オープンコアツールで一般的)、公式バイナリを取得するオーバーレイを作成します。

パターン (0xBigBoss/atlas-overlay、0xBigBoss/bun-overlay を参照)

{
  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
    flake-utils.url = "github:numtide/flake-utils";
  };

  outputs = { self, nixpkgs, flake-utils }:
    flake-utils.lib.eachDefaultSystem (system:
      let
        pkgs = nixpkgs.legacyPackages.${system};

        version = "1.0.0";

        # プラットフォーム固有のバイナリ
        sources = {
          "x86_64-linux" = {
            url = "https://example.com/tool-linux-amd64-v${version}";
            sha256 = "sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=";
          };
          "aarch64-linux" = {
            url = "https://example.com/tool-linux-arm64-v${version}";
            sha256 = "sha256-BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB=";
          };
          "x86_64-darwin" = {
            url = "https://example.com/tool-darwin-amd64-v${version}";
            sha256 = "sha256-CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC=";
          };
          "aarch64-darwin" = {
            url = "https://example.com/tool-darwin-arm64-v${version}";
            sha256 = "sha256-DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD=";
          };
        };

        source = sources.${system} or (throw "Unsupported system: ${system}");

        toolPackage = pkgs.stdenv.mkDerivation {
          pname = "tool";
          inherit version;

          src = pkgs.fetchurl {
            inherit (source) url sha256;
          };

          sourceRoot = ".";
          dontUnpack = true;

          installPhase = ''
            mkdir -p $out/bin
            cp $src $out/bin/tool
            chmod +x $out/bin/tool
          '';

          meta = with pkgs.lib; {
            description = "Tool description";
            homepage = "https://example.com";
            license = licenses.unfree;  # or appropriate license
            platforms = builtins.attrNames sources;
          };
        };
      in {
        packages.default = toolPackage;
        packages.tool = toolPackage;

        overlays.default = final: prev: {
          tool = toolPackage;
        };
      })
    // {
      overlays.default = final: prev: {
        tool = self.packages.${prev.system}.tool;
      };
    };
}

SHA256 ハッシュの取得

nix-prefetch-url https://example.com/tool-linux-amd64-v1.0.0
# base32 形式のハッシュを返します、SRI 形式に変換:
nix hash to-sri --type sha256 <base32-hash>

または SRI を直接使用:

nix-prefetch-url --type sha256 https://example.com/tool-linux-amd64-v1.0.0

Dev Shell パターン

基本的なシェル

devShells.default = pkgs.mkShell {
  buildInputs = with pkgs; [
    nodejs
    python3
  ];

  shellHook = ''
    echo "Dev environment ready"
  '';
};

環境変数付き

devShells.default = pkgs.mkShell {
  buildInputs = with pkgs; [ postgresql ];

  # シェルエントリ時に設定
  DATABASE_URL = "postgres://localhost/dev";

  # または動的な値のため shellHook で
  shellHook = ''
    export PROJECT_ROOT="$(pwd)"
  '';
};

ネイティブ依存関係 (C ライブラリ)

devShells.default = pkgs.mkShell {
  buildInputs = with pkgs; [
    openssl
    postgresql
  ];

  # ヘッダーとライブラリを公開
  shellHook = ''
    export C_INCLUDE_PATH="${pkgs.openssl.dev}/include:$C_INCLUDE_PATH"
    export LIBRARY_PATH="${pkgs.openssl.out}/lib:$LIBRARY_PATH"
    export PKG_CONFIG_PATH="${pkgs.openssl.dev}/lib/pkgconfig:$PKG_CONFIG_PATH"
  '';
};

Direnv 統合

flake プロジェクト用の .envrc:

use flake

nixpkgs-unfree なしで unfree パッケージの場合:

export NIXPKGS_ALLOW_UNFREE=1
use flake --impure

よく使うコマンド

# すべての入力を更新
nix flake update

# 特定の入力を更新
nix flake update some-input

# flake の有効性を確認
nix flake check

# flake メタデータを表示
nix flake metadata

# dev シェルを開く
nix develop

# dev シェル内でコマンドを実行
nix develop -c <command>

# パッケージをビルド
nix build .#packageName

# パッケージを実行
nix run .#packageName

トラブルシューティング

"unexpected argument" エラー

すべての入力は outputs 関数に列挙する必要があります:

# 間違い
outputs = { self, nixpkgs }: ...

# 正しい (さらに入力がある場合)
outputs = { self, nixpkgs, other-input, ... }: ...

nix develop での Unfree パッケージエラー

flake.nix の config.allowUnfreenix develop に伝播しません。以下を使用:

  1. nixpkgs-unfree 入力 (推奨)
  2. ユーザーの ~/.config/nixpkgs/config.nix
  3. NIXPKGS_ALLOW_UNFREE=1 nix develop --impure

重複する Nixpkgs ダウンロード

follows を使用して入力を単一の nixpkgs ソースにチェーンします。

オーバーレイが適用されない

nixpkgs をインポートする際、オーバーレイが overlays リストにあることを確認:

pkgs = import nixpkgs {
  inherit system;
  overlays = [ my-overlay.overlays.default ];
};

ハッシュ不一致

nix-prefetch-url で再取得し、ハッシュを更新します。ハッシュは、アップストリームが同じ URL でバイナリを更新すると変更されます。

ライセンス: Apache-2.0(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
0xbigboss
リポジトリ
0xbigboss/claude-code
ライセンス
Apache-2.0
最終更新
不明

Source: https://github.com/0xbigboss/claude-code / ライセンス: Apache-2.0

関連スキル

汎用その他⭐ リポ 1,982

superfluid

Superfluidプロトコルおよびそのエコシステムに関するナレッジベースです。Superfluidについて情報を検索する際は、ウェブ検索の前にこちらを参照してください。対応キーワード:Superfluid、CFA、GDA、Super App、Super Token、stream、flow rate、real-time balance、pool(member/distributor)、IDA、sentinels、liquidation、TOGA、@sfpro/sdk、semantic money、yellowpaper、whitepaper

by LeoYeAI
汎用その他⭐ リポ 100

civ-finish-quotes

実質的なタスクが真に完了した際に、文明風の儀式的な引用句を追加します。ユーザーやエージェントが機能追加、リファクタリング、分析、設計ドキュメント、プロセス改善、レポート、執筆タスクといった実際の成果物を完成させるときに、明示的な依頼がなくても使用します。短い返信や小さな修正、未完成の作業には適用しません。

by huxiuhan
汎用その他⭐ リポ 1,110

nookplot

Base(Ethereum L2)上のAIエージェント向け分散型調整ネットワークです。エージェントがオンチェーンアイデンティティを登録する、コンテンツを公開する、他のエージェントにメッセージを送る、マーケットプレイスで専門家を雇う、バウンティを投稿・請求する、レピュテーションを構築する、共有プロジェクトで協業する、リサーチチャレンジを解くことでNOOKをマイニングする、キュレーションされたナレッジを備えたスタンドアロンオンチェーンエージェントをデプロイする、またはアグリーメントとリワードで収益を得る場合に利用できます。エージェントネットワーク、エージェント調整、分散型エージェント、NOOKトークン、マイニングチャレンジ、ナレッジバンドル、エージェントレピュテーション、エージェントマーケットプレイス、ERC-2771メタトランザクション、Prepare-Sign-Relay、AgentFactory、またはNookplotが言及された場合にトリガーされます。

by BankrBot
汎用その他⭐ リポ 59

web3-polymarket

Polygon上でのPolymarket予測市場取引統合です。認証機能(L1 EIP-712、L2 HMAC-SHA256、ビルダーヘッダー)、注文発注(GTC/GTD/FOK/FAK、バッチ、ポストオンリー、ハートビート)、市場データ(Gamma API、Data API、オーダーブック、サブグラフ)、WebSocketストリーミング(市場・ユーザー・スポーツチャネル)、CTF操作(分割、統合、償却、ネガティブリスク)、ブリッジ機能(入金、出金、マルチチェーン)、およびガスレスリレイトランザクションに対応しています。AIエージェント、自動マーケットメーカー、予測市場UI、またはPolygraph上のPolymarketと統合するアプリケーション構築時に活用できます。

by elophanto
汎用その他⭐ リポ 52

ethskills

Ethereum、EVM、またはブロックチェーン関連のリクエストに対応します。スマートコントラクト、dApps、ウォレット、DeFiプロトコルの構築、監査、デプロイ、インタラクションに適用されます。Solidityの開発、コントラクトアドレス、トークン規格(ERC-20、ERC-721、ERC-4626など)、Layer 2ネットワーク(Base、Arbitrum、Optimism、zkSync、Polygon)、Uniswap、Aave、Curveなどのプロトコルとの統合をカバーします。ガスコスト、コントラクトのデシマル設定、オラクルセキュリティ、リエントランシー、MEV、ブリッジング、ウォレット管理、オンチェーンデータの取得、本番環境へのデプロイ、プロトコル進化(EIPライフサイクル、フォーク追跡、今後の変更予定)といったトピックを含みます。

by jiayaoqijia
汎用その他⭐ リポ 44

xxyy-trade

このスキルは、ユーザーが「トークン購入」「トークン売却」「トークンスワップ」「暗号資産取引」「取引ステータス確認」「トランザクション照会」「トークンスキャン」「フィード」「チェーン監視」「トークン照会」「トークン詳細」「トークン安全性確認」「ウォレット一覧表示」「マイウォレット」「AIスキャン」「自動スキャン」「ツイートスキャン」「オンボーディング」「IP確認」「IPホワイトリスト」「トークン発行」「自動売却」「損切り」「利益確定」「トレーリングストップ」「保有者」「トップホルダー」「KOLホルダー」などをリクエストした場合、またはSolana/ETH/BSC/BaseチェーンでXXYYを経由した取引について言及した場合に使用します。XXYY Open APIを通じてオンチェーン取引とデータ照会を実現します。

by Jimmy-Holiday
本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: 0xbigboss · 0xbigboss/claude-code · ライセンス: Apache-2.0