nix: split static runtime assets into their own derivation (#555)
Hoists the project's branding/* + hive-ag3nt/prompts/* out of the
rust derivation's src set. Lives as `packages.<system>.assets` (also
exported as `pkgs.hyperhive-assets` via the default overlay).
Output layout:
$out/share/hyperhive/branding/{hyperhive,agent-configs}.{svg,png}
$out/share/hyperhive/prompts/{system.md,claude-settings.json}
`agent-configs.png` is rendered at build time from its SVG via
rsvg-convert — same shape as the old `hive-c0re/build.rs` rasteriser,
just hoisted into nix so the librsvg dependency stays *here* instead
of in the rust derivation.
No consumer change yet — the rust binaries still `include_bytes!`
their copies from the in-source paths; later commits in this PR cut
those over to runtime loads from `$HIVE_ASSETS_DIR/share/hyperhive/`.
Why split: `src = ./.;` on the crane derivation invalidates the
cargo cache on every edit to anything in the repo, including
branding tweaks + prompt edits + docs. Splitting these out is the
first step toward dropping the rust src input down to
`craneLib.cleanCargoSource ./.` (the eventual end-state in the
final commit of this PR).
This commit is contained in:
parent
dfb2595a50
commit
246dd19390
2 changed files with 87 additions and 0 deletions
10
flake.nix
10
flake.nix
|
|
@ -106,6 +106,12 @@
|
|||
frontend = pkgs.callPackage ./nix/frontend.nix {
|
||||
branding-svg = ./branding/hyperhive.svg;
|
||||
};
|
||||
# Static runtime assets the rust binaries read via
|
||||
# `assets::path()` (#555): branding/* + hive-ag3nt/prompts/*,
|
||||
# plus the rendered agent-configs.png. Split out of the
|
||||
# rust derivation so a tweak to e.g. system.md doesn't bust
|
||||
# the cargo cache.
|
||||
assets = pkgs.callPackage ./nix/assets.nix { };
|
||||
# Pre-built per-container system closures. Exposed as packages
|
||||
# so operators can `nix build .#agent-base-toplevel` (or wire
|
||||
# them into their host system closure via the
|
||||
|
|
@ -137,6 +143,10 @@
|
|||
# is applied (manager + agent containers both apply it via
|
||||
# `mkContainer` further down).
|
||||
hyperhive-frontend = self.packages.${prev.stdenv.hostPlatform.system}.frontend;
|
||||
# Static runtime assets (#555). Exposed alongside the binary
|
||||
# so the harness module can wire $HIVE_ASSETS_DIR straight
|
||||
# to `${pkgs.hyperhive-assets}/share/hyperhive`.
|
||||
hyperhive-assets = self.packages.${prev.stdenv.hostPlatform.system}.assets;
|
||||
};
|
||||
claude-unstable =
|
||||
final: prev:
|
||||
|
|
|
|||
Loading…
Reference in a new issue