Tracks hyperhive#502 — landing-only first cut. Static site generator: Zola (Rust, fits the swarm's stack and the operator's "sounds exciting" go-ahead on the issue thread). ## Structure - `flake.nix` — `nix build .#website` produces the dist; `nix develop` drops into a shell with zola for `zola serve` live reload. No CI runner; the flake is the validation contract. - `config.toml` — Zola config; base URL `hyperhive.darkest.space` per #502. Single-page landing — feeds / search index off. - `content/_index.md` — landing copy. Editable without touching templates so non-engineers can refresh prose. - `templates/base.html` + `templates/index.html` — base layout + landing-specific extension. og:tags + favicon wired through. - `sass/main.scss` — theme. Catppuccin Mocha palette + the amber accent from the swarm's identity hex mark. Self-contained (no @import) so the file is reviewable in one place. - `static/{favicon,hex-mark,hyperhive}.svg` — copies of the dashboard's `branding/hyperhive.svg` (hex motif). Used as favicon, hero inline, and og:image respectively. ## Theme Monospace identity throughout — matches dashboard / agent terminals so the website reads as part of the same family rather than a separate marketing artifact. Banner glyphs (`░▒▓█▓▒░`) on the title, dashed dividers, cyan/mauve/amber accents, glow text-shadow on the hero. Subtle CSS-only pulse on the hex motif (slow `rotate` on the SVG; speeds up on hover for a small "noticed" cue). ## Three-column "what's inside" `the swarm` / `the dashboard` / `the boundary` — quick orientation for visitors who clicked through from a link without context. Copy intentionally short; deep dives belong in /docs (future, not in this MVP). ## Scope drop Per mara on #502: - no nav / blog / docs yet — landing only - no screenshots in MVP, follow via issues in this repo - public visibility ## Provenance Scaffolded under `iris/website` because my agent forge token doesn't carry org-admin to create repos under `hyperhive/`. Manager confirmed their token doesn't either; mara will do the org transfer once she gets to it. README documents this.
64 lines
2 KiB
Nix
64 lines
2 KiB
Nix
{
|
|
# hyperhive marketing landing — Zola static site build (#502).
|
|
#
|
|
# `nix build` → `result/` is the `public/` Zola dist, ready to drop
|
|
# under any static-file host. No CI runner needed; the flake is the
|
|
# validation contract.
|
|
description = "hyperhive marketing landing";
|
|
|
|
inputs = {
|
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
|
flake-utils.url = "github:numtide/flake-utils";
|
|
};
|
|
|
|
outputs = { self, nixpkgs, flake-utils }:
|
|
flake-utils.lib.eachDefaultSystem (system:
|
|
let
|
|
pkgs = import nixpkgs { inherit system; };
|
|
in {
|
|
packages.website = pkgs.stdenv.mkDerivation {
|
|
pname = "hyperhive-website";
|
|
version = self.shortRev or "dev";
|
|
|
|
src = ./.;
|
|
|
|
nativeBuildInputs = [ pkgs.zola ];
|
|
|
|
# Zola reads `config.toml` from CWD, writes `public/` next to it,
|
|
# which we then move to $out. The build is offline / hermetic —
|
|
# no network access needed at build time, which fits the nix
|
|
# sandbox without extra fetchurls.
|
|
buildPhase = ''
|
|
runHook preBuild
|
|
zola build --output-dir public
|
|
runHook postBuild
|
|
'';
|
|
|
|
installPhase = ''
|
|
runHook preInstall
|
|
mkdir -p $out
|
|
cp -r public/. $out/
|
|
runHook postInstall
|
|
'';
|
|
|
|
# Static-site dist; no shared libs to patchelf, no executables.
|
|
dontFixup = true;
|
|
};
|
|
|
|
# `nix build` with no attribute → the website dist.
|
|
packages.default = self.packages.${system}.website;
|
|
|
|
# `nix develop` → a shell with zola for local iteration:
|
|
# `zola serve` runs the dev server with live reload.
|
|
devShells.default = pkgs.mkShell {
|
|
packages = [ pkgs.zola ];
|
|
};
|
|
|
|
# `nix run` is the dev-server shortcut: `nix run . -- serve`
|
|
# boots Zola's hot-reload server on http://127.0.0.1:1111/.
|
|
apps.default = {
|
|
type = "app";
|
|
program = "${pkgs.zola}/bin/zola";
|
|
};
|
|
});
|
|
}
|