dashboard: optional matrix GUI static mount at /matrix (#607 v0)

This commit is contained in:
damocles 2026-05-29 21:40:05 +02:00
commit 360f2af15f
3 changed files with 69 additions and 0 deletions

View file

@ -220,6 +220,13 @@ in
# Agents poll this URL for Forgejo notifications. Derived from
# hyperhive.forge.{domain,httpPort} so it tracks forge config changes.
HIVE_FORGE_URL = "http://${config.hyperhive.forge.domain}:${toString config.hyperhive.forge.httpPort}";
}
// lib.optionalAttrs config.hyperhive.matrix.gui.enable {
# Optional matrix-GUI static dist mounted at /matrix/ by the
# dashboard router (#607 v0). Pre-#15 / pre-nginx-front: this is
# the simplest same-origin shape — fluffychat-web ships as a
# static dist, no runtime daemon needed.
HIVE_MATRIX_GUI_DIR = "${config.hyperhive.matrix.gui.package}";
};
serviceConfig = {
ExecStart = "${cfg.package}/bin/hive-c0re --socket /run/hyperhive/host.sock serve --hyperhive-flake ${cfg.hyperhiveFlake} --dashboard-port ${toString cfg.dashboardPort} --operator-pronouns ${lib.escapeShellArg cfg.operatorPronouns} --context-window-tokens ${lib.escapeShellArg (builtins.toJSON cfg.contextWindowTokens)}";

View file

@ -155,6 +155,41 @@ in
registration tokens.
'';
};
gui = {
enable = lib.mkOption {
type = lib.types.bool;
default = false;
description = ''
Mount a matrix web client (default `pkgs.fluffychat-web`) as
a static sibling of the dashboard at `/matrix/`, served by
hive-c0re's own axum router via the `HIVE_MATRIX_GUI_DIR`
env var (#607 v0). Off by default; flip to `true` once the
operator wants matrix chat one tab away from the dashboard
without standing up a separate gateway.
Same-origin via hive-c0re is the simplest single-host
shape; the post-#15 nginx-front re-root (`https://matrix.''${hyperhive.domain}`)
is tracked separately in #609. fluffychat-web supports
per-login server pick point it at the in-host tuwunel URL
(`http://localhost:8008` by default) the first time.
'';
};
package = lib.mkOption {
type = lib.types.package;
default = pkgs.fluffychat-web;
defaultText = lib.literalExpression "pkgs.fluffychat-web";
description = ''
Static web client dist to serve at `/matrix/`. Defaults to
`pkgs.fluffychat-web` first-class threads support, e2ee
+ voice + spaces, full feature surface in the flutterweb
build. Override to swap for `hydrogen-web` (lightest),
`cinny` (no threads), `element-web` (heaviest, full
features), or an out-of-tree client dist.
'';
};
};
};
config = lib.mkIf cfg.enable {