{ stdenv, }: # hyperhive-authored Claude Code plugin marketplace (source tree at # ../../claude-plugins), shipped as a standalone derivation and spliced # into the *default* `hyperhive.claudeMarketplaces`/`claudePlugins` lists # (nix/agent-modules/claude-settings.nix) as a local marketplace source. # `claude plugin marketplace add` accepts a plain filesystem path (verified: # `claude plugin marketplace add --help` → "Add a marketplace from a URL, # path, or GitHub repo"), and registers it under the marketplace.json's own # `name` field ("hyperhive") rather than the path — so # `@hyperhive` is a stable plugin spec regardless of the store # path's hash. The built store path IS the marketplace: no forge repo, no # git remote, no PAT/PR ceremony needed to ship a skill hive-wide. # # Every hive-authored skill lives under its own `plugins//` subtree # in the source tree; add one there plus a matching entry in # `.claude-plugin/marketplace.json`'s `plugins` list to ship another. # # Pure data: nothing to build, `$out` is the tree as-is (mirrors # ./reference-docs.nix). `cp -r . "$out"` (not `cp -r ./* $out`) because # the marketplace/plugin manifests live under `.claude-plugin/` — a # hidden directory a shell glob (`*`) would silently skip. stdenv.mkDerivation { pname = "hyperhive-claude-plugins"; version = "0.1.0"; # Narrow src keeps this derivation's input hash decoupled from the rest # of the tree — a skill edit only re-hashes this. src = ../../claude-plugins; dontBuild = true; dontConfigure = true; installPhase = '' runHook preInstall mkdir -p $out cp -r . "$out"/ runHook postInstall ''; dontFixup = true; meta = { description = "hyperhive-authored Claude Code plugin marketplace (skills shipped hive-wide)"; homepage = "https://forge.darkest.space/hyperhive/hyperhive"; }; }