mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-06-22 10:32:00 +00:00
The npm workspace pins a single npmDepsHash for fetchNpmDeps. Any change to package-lock.json that doesn't also refresh that hash breaks the bundled hermes-tui / hermes-desktop-renderer build for Nix flake consumers, and no nix CI catches it — the workflow that ran fix-lockfiles was removed in9eb0bcd6("change(ci): rip out nix ci for now"). Fetch the workspace deps with pkgs.importNpmLock instead. It resolves each package from the lockfile's own integrity hashes, so package-lock.json is the single source of truth and there is no separate hash to drift. This also removes: - the fix-lockfiles checker/refresher and its devShell wiring — it existed only to keep npmDepsHash in sync, so it is dead once the hash is gone, and its sole CI consumer was already removed in9eb0bcd6; - the patchPhase that normalized lockfile trailing newlines — importNpmLock's npmConfigHook overwrites the lockfile rather than diffing it, so the normalization is unnecessary. npm-lockfile-fix is retained: importNpmLock requires an integrity-complete lockfile, which that tool guarantees when the lockfile is regenerated. Co-authored-by: ak2k <19240940+ak2k@users.noreply.github.com>
55 lines
1.7 KiB
Nix
55 lines
1.7 KiB
Nix
# nix/packages.nix — Hermes Agent package built with uv2nix
|
|
{ inputs, ... }:
|
|
{
|
|
perSystem =
|
|
{ pkgs, lib, inputs', ... }:
|
|
let
|
|
hermesAgent = pkgs.callPackage ./hermes-agent.nix {
|
|
inherit (inputs) uv2nix pyproject-nix pyproject-build-systems;
|
|
npm-lockfile-fix = inputs'.npm-lockfile-fix.packages.default;
|
|
# Only embed clean revs — dirtyRev doesn't represent any upstream
|
|
# commit, so comparing it would always claim "update available".
|
|
rev = inputs.self.rev or null;
|
|
};
|
|
in
|
|
{
|
|
packages = {
|
|
default = hermesAgent;
|
|
|
|
# Ships discord.py + python-telegram-bot + slack-sdk so a plain
|
|
# `nix profile install .#messaging` connects to Discord/Telegram/Slack
|
|
# on first run — lazy-install can't write to the read-only /nix/store.
|
|
messaging = hermesAgent.override {
|
|
extraDependencyGroups = [ "messaging" ];
|
|
};
|
|
|
|
# All platform-portable optional integrations pre-built.
|
|
# matrix is Linux-only (oqs/liboqs lacks aarch64-darwin wheels).
|
|
full = hermesAgent.override {
|
|
extraDependencyGroups = [
|
|
"anthropic"
|
|
"azure-identity"
|
|
"bedrock"
|
|
"daytona"
|
|
"dingtalk"
|
|
"edge-tts"
|
|
"exa"
|
|
"fal"
|
|
"feishu"
|
|
"firecrawl"
|
|
"hindsight"
|
|
"honcho"
|
|
"messaging"
|
|
"modal"
|
|
"parallel-web"
|
|
"tts-premium"
|
|
"voice"
|
|
] ++ lib.optionals pkgs.stdenv.isLinux [ "matrix" ];
|
|
};
|
|
|
|
tui = hermesAgent.hermesTui;
|
|
web = hermesAgent.hermesWeb;
|
|
desktop = hermesAgent.hermesDesktop;
|
|
};
|
|
};
|
|
}
|