{ stdenv, librsvg, }: # Branding SVG/PNG family + claude prompts, split out from the rust # workspace so a tweak here doesn't invalidate the rust cargo cache. # Rationale + agent-configs PNG rendering: docs/gotchas.md::Split asset # derivations away from the rust workspace. # # Output layout: # $out/share/hyperhive/branding/{hyperhive,agent-configs}.{svg,png} # $out/share/hyperhive/prompts/{system.md, claude-settings.json} # # The repo docs/ tree is a SEPARATE derivation (./reference-docs.nix) # so agents can consume the docs without the branding+prompt assets and # the website repo can reuse it — see that file. stdenv.mkDerivation { pname = "hyperhive-assets"; version = "0.1.0"; # Narrow `srcs` (branding/ + hive-agent/prompts/) is what decouples # this derivation's input hash from the rest of the tree. srcs = [ ../../branding ../../hive-agent/prompts ]; unpackPhase = '' runHook preUnpack cp -r ${../../branding} branding cp -r ${../../hive-agent/prompts} prompts chmod -R u+w branding prompts runHook postUnpack ''; nativeBuildInputs = [ librsvg ]; # 300×300 matches branding/hyperhive.png — the size Forgejo's avatar # endpoint accepts without resampling on upload. buildPhase = '' runHook preBuild rsvg-convert --width 300 --height 300 \ -o branding/agent-configs.png \ branding/agent-configs.svg runHook postBuild ''; installPhase = '' runHook preInstall mkdir -p $out/share/hyperhive cp -r branding $out/share/hyperhive/branding cp -r prompts $out/share/hyperhive/prompts runHook postInstall ''; # Pure data — no executables to fixup, no shared libs to patchelf. dontFixup = true; meta = { description = "hyperhive static assets (branding + claude prompts)"; homepage = "https://forge.darkest.space/hyperhive/hyperhive"; }; }