idc — Nixプロジェクトの柔軟なインポートツール

Library

概要

idcは「Import Nix projects regardless of how they are exposed.」を目的とした小さなNixユーティリティです。Nilla、Sprinkles、Flakes(入力の上書き対応)、Nixpkgs(特別扱いでflakeとしては読み込まない)、そして単純なdefault.nixのような多様な公開方法に対応し、消費側のコードから一貫した方法で依存を取り込めるようにします。リポジトリにはdefault.nixやREADMEが含まれており、プロジェクトにそのdefault.nixをコピーして簡単に使い始められます。

GitHub

リポジトリの統計情報

  • スター数: 9
  • フォーク数: 0
  • ウォッチャー数: 9
  • コミット数: 2
  • ファイル数: 3
  • メインの言語: Nix

主な特徴

  • Nilla、Sprinkles、Flakes、Nixpkgs、plain default.nix を透過的にサポート
  • Flakes の入力を上書きして柔軟に利用可能
  • Nixpkgs はflakeとして扱わない特別処理
  • プロジェクトにdefault.nixを置くだけで利用しやすい設計

技術的なポイント

idcのコアは「与えられたNixソースがどのように公開されていても、それを適切に評価して取り込む」ための検出とフォールバックロジックにあります。典型的には、まずFlakeとして解釈できるかを試し、flake.nixがあれば入力の上書き(input overriding)を可能にして柔軟な評価を行います。Flakesに対応しつつも、既存のNixpkgsレポジトリを不用意にflakeとして扱わないよう特別ケースを設けることで、意図しない挙動を避けています。さらにNillaやSprinklesといったフレームワークの慣例にも対応し、これらのラッパーやレイヤーを経由して公開されたパッケージ群を直接参照できるようにします。最終的に、最も単純なdefault.nixからのインポートもサポートしており、どの形式でも消費側が同じインターフェースで依存を取り込めることが利点です。実装はNix式(default.nix)主体で提供され、プロジェクト側にコピーして使える点からも軽量で実用的なユーティリティとして作用します。ドキュメントはREADMEに簡潔にまとまっており、小さなモジュールを別のレポジトリへ取り込む際の橋渡し役として有用です。

プロジェクトの構成

主要なファイルとディレクトリ:

  • README.md: file
  • default.nix: file
  • npins: dir

まとめ

多様なNixプロジェクト形式を透過的に扱う、小さく実用的なインポートヘルパー。

リポジトリ情報:

READMEの抜粋:

idc

Import Nix projects regardless of how they are exposed.

idc supports all of the following frameworks/libraries:

  • Nilla
  • Sprinkles
  • Flakes (with input overriding)
  • Nixpkgs (special cased to not import as a flake)
  • Plain default.nix files

Install

Using idc is easy. Fetch it from this repository or even copy ./default.nix to your project as idc....