dependency-intake

Manages external dependency intake in a Nix monorepo with fetchers, hashes, and update scripts.

Updated Aug 5, 2026
One-click install
npx skills add https://github.com/harivansh-afk/loom-index-e2e --skill dependency-intake-harivansh-afk
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: dependency-intake
Source: https://github.com/harivansh-afk/loom-index-e2e/tree/main/skills/dependency-intake
Command: npx skills add https://github.com/harivansh-afk/loom-index-e2e --skill dependency-intake-harivansh-afk

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Adding or updating external dependencies in a Nix monorepo requires consistent ownership, real hashes, and predictable update paths; this Skill encodes the rules so dependencies never end up with placeholder hashes, fake fetchers, or no updater. ## Core Features & Use Cases - Fetcher and owner selection: Chooses the right pkgs.* fetcher (fetchurl, fetchgit, fetchzip, forge fetchers, ecosystem fetchers) and assigns each external input an owner that can update it. - Hash and lockfile discipline: Enforces real SRI hashes materialized by updaters, lock commands, or prefetch commands, and keeps generated catalogs as build inputs rather than hand-edited source. - Update automation: Wires prebuilt-binary packages into the repo-wide nix run .#update runner via passthru.updateScript, with separate hourly workflows for Cargo.lock and flake.lock. - Use Case: When packaging a third-party Rust CLI tool, use this Skill to build it with rustPlatform.buildRustPackage, pin the source with fetchFromGitHub, reuse the committed Cargo.lock, and handle macOS quirks like bindgen and VCS version stamping. ## Quick Start Add a new external dependency to the repo following the dependency-intake rules for fetchers, hashes, and update scripts.

Frequently Asked Questions about dependency-intake

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I add an external dependency to a Nix monorepo?▼

Assign the dependency an owner that can update it, pick the most specific pkgs fetcher such as fetchurl or fetchgit, materialize a real SRI hash with the owning updater or prefetch command, and commit the source and generated hash output together.

How do I package a third-party Rust CLI tool in Nix?▼

Use pkgs.rustPlatform.buildRustPackage in packages/<name>/default.nix with a paired package.nix carrying id and systems. Pin the source with fetchFromGitHub at a git rev and reuse the committed Cargo.lock via cargoLock.lockFile.

Which Nix fetcher should I use for a dependency?▼

Use fetchurl for opaque single files, forge fetchers for forge snapshots, fetchgit for raw git refs, fetchzip for archives that must unpack, and ecosystem fetchers when one exists. Avoid builtins.fetch* in tracked files because they fetch during evaluation.

Why does my Rust build fail in the Nix sandbox on macOS?▼

Crates using bindgen need rustPlatform.bindgenHook in nativeBuildInputs for libclang. Crates reading VCS state at build time fail without .git, so put a stable value like env!("CARGO_PKG_VERSION") in the checked source view.

When should I use __impure in a Nix derivation?▼

Use __impure only for explicit dependency-discovery or prefetch derivations whose output is turned into a checked hash-bearing artifact before product builds consume it. Keep the impure boundary named next to the updater or generated lock output.

How are dependency updates automated in this repo?▼

Packages set updateScript = true and join the repo-wide nix run .#update runner, executed hourly by the update.yml workflow. Cargo.lock and flake.lock have their own separate hourly updater workflows that open individual PRs.