refactor(#1003): nixpkgs + nixpkgs-unstable as top-level meta inputs
Per mara's direction: both nixpkgs and nixpkgs-unstable are now
top-level meta flake inputs with explicit store-path URLs. Hyperhive
follows them rather than the other way around:
inputs.nixpkgs.url = "path:${pkgs.path}";
inputs.nixpkgs-unstable.url = "path:${nixpkgs-unstable}";
inputs.hyperhive.url = "...";
inputs.hyperhive.inputs.nixpkgs.follows = "nixpkgs";
inputs.hyperhive.inputs.nixpkgs-unstable.follows = "nixpkgs-unstable";
New NixOS host options (auto-set at build time, overridable):
services.hyperhive.c0re.nixpkgsFlake
default: "path:${pkgs.path}" — host's evaluated nixpkgs.
services.hyperhive.c0re.nixpkgsUnstableFlake
default: "path:${nixpkgs-unstable}" from hyperhive's flake.nix —
the channel that carries claude-code. Operators can override to
track a different unstable snapshot.
Legacy fallback (both args empty) preserved for backward compat.
Two new Rust tests cover the full-URL and fallback paths.
This commit is contained in:
parent
fe5a41288d
commit
db50da570a
10 changed files with 124 additions and 28 deletions
|
|
@ -3,6 +3,7 @@
|
|||
hyperhiveFrontend,
|
||||
hyperhiveAssets,
|
||||
hyperhiveFlake,
|
||||
hyperhiveNixpkgsUnstable,
|
||||
agentBaseToplevel,
|
||||
managerToplevel,
|
||||
}:
|
||||
|
|
@ -187,6 +188,43 @@ in
|
|||
only override if you want agents tracking a different ref.
|
||||
'';
|
||||
};
|
||||
nixpkgsFlake = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "path:${pkgs.path}";
|
||||
defaultText = lib.literalMD "`\"path:\${pkgs.path}\"`";
|
||||
description = ''
|
||||
Store-path URL for the `nixpkgs` input in the generated meta
|
||||
flake. The meta flake declares this as a top-level input and
|
||||
wires `inputs.hyperhive.inputs.nixpkgs.follows = "nixpkgs"` so
|
||||
every agent container evaluates with this exact nixpkgs.
|
||||
|
||||
Defaults to `"path:''${pkgs.path}"` — the store path of the
|
||||
nixpkgs the host NixOS module was evaluated with. When the
|
||||
operator sets `inputs.hyperhive.inputs.nixpkgs.follows =
|
||||
"nixpkgs"` in their host flake, `pkgs.path` resolves to the
|
||||
host's own nixpkgs, so agents transparently track the same
|
||||
channel as the host.
|
||||
|
||||
Override to pin agents to a specific nixpkgs version regardless
|
||||
of the host's channel.
|
||||
'';
|
||||
};
|
||||
nixpkgsUnstableFlake = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = hyperhiveNixpkgsUnstable;
|
||||
defaultText = lib.literalMD "hyperhive's own `nixpkgs-unstable` store path";
|
||||
description = ''
|
||||
Store-path URL for the `nixpkgs-unstable` input in the generated
|
||||
meta flake. The meta flake declares this as a top-level input and
|
||||
wires `inputs.hyperhive.inputs.nixpkgs-unstable.follows =
|
||||
"nixpkgs-unstable"` so agents use this exact unstable nixpkgs.
|
||||
|
||||
Defaults to the store path of the `nixpkgs-unstable` input
|
||||
hyperhive's own `flake.nix` was evaluated with (the channel that
|
||||
carries `claude-code`). Override when you want to track a newer
|
||||
unstable snapshot or a custom `claude-code` package.
|
||||
'';
|
||||
};
|
||||
dashboardPort = lib.mkOption {
|
||||
type = lib.types.port;
|
||||
default = 7000;
|
||||
|
|
@ -373,7 +411,7 @@ in
|
|||
);
|
||||
};
|
||||
serviceConfig = {
|
||||
ExecStart = "${cfg.package}/bin/hive-c0re --socket /run/hyperhive/host.sock serve --hyperhive-flake ${cfg.hyperhiveFlake} --nixpkgs-flake path:${pkgs.path} --dashboard-port ${toString cfg.dashboardPort} --operator-pronouns ${lib.escapeShellArg cfg.operatorPronouns} --context-window-tokens ${lib.escapeShellArg (builtins.toJSON cfg.contextWindowTokens)}";
|
||||
ExecStart = "${cfg.package}/bin/hive-c0re --socket /run/hyperhive/host.sock serve --hyperhive-flake ${cfg.hyperhiveFlake} --nixpkgs-flake ${cfg.nixpkgsFlake} --nixpkgs-unstable-flake ${cfg.nixpkgsUnstableFlake} --dashboard-port ${toString cfg.dashboardPort} --operator-pronouns ${lib.escapeShellArg cfg.operatorPronouns} --context-window-tokens ${lib.escapeShellArg (builtins.toJSON cfg.contextWindowTokens)}";
|
||||
Restart = "on-failure";
|
||||
RestartSec = 2;
|
||||
RuntimeDirectory = "hyperhive";
|
||||
|
|
|
|||
Loading…
Reference in a new issue