{ stdenv, lib, 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} # $out/share/hyperhive/docs/ — the repo docs/ tree stdenv.mkDerivation { pname = "hyperhive-assets"; version = "0.1.0"; # Narrow `srcs` (branding/ + hive-ag3nt/prompts/ + docs/) is what # decouples this derivation's input hash from the rest of the tree. # Including docs/ surfaces the reference docs in-container at # `$HIVE_ASSETS_DIR/docs/` (no host mount, pulled from the nix store); # a docs/ edit re-hashes this asset, the accepted tradeoff for shipping # the docs declaratively. srcs = [ ../branding ../hive-ag3nt/prompts ../docs ]; unpackPhase = '' runHook preUnpack cp -r ${../branding} branding cp -r ${../hive-ag3nt/prompts} prompts cp -r ${../docs} docs chmod -R u+w branding prompts docs 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 cp -r docs $out/share/hyperhive/docs runHook postInstall ''; # Pure data — no executables to fixup, no shared libs to patchelf. dontFixup = true; meta = { description = "hyperhive static assets (branding + claude prompts + docs)"; homepage = "https://forge.darkest.space/hyperhive/hyperhive"; license = lib.licenses.mit; }; }