From cc2dfc8747694ccb202b8fbf8b8f42ca82f9ffa3 Mon Sep 17 00:00:00 2001 From: Rongsong Shen Date: Sat, 9 May 2026 17:06:20 +0800 Subject: [PATCH] pkgs/h/hermes-agent: add hermes-agent 0.13.0 --- default.nix | 9 +- flake.lock | 162 +++++++++++++++++++++++++++++++- flake.nix | 25 ++++- pkgs/h/hermes-agent/package.nix | 54 +++++++++++ 4 files changed, 241 insertions(+), 9 deletions(-) create mode 100644 pkgs/h/hermes-agent/package.nix diff --git a/default.nix b/default.nix index a099027..0e6782f 100644 --- a/default.nix +++ b/default.nix @@ -1,4 +1,4 @@ -{pkgs,...}: +{pkgs, uv2nix ? null, pyproject-nix ? null, pyproject-build-systems ? null, npm-lockfile-fix-pkg ? null, ...}: with pkgs; let cedro = callPackage ./pkgs/c/cedro/package.nix {}; @@ -78,6 +78,12 @@ let cetcd = callPackage ./pkgs/c/cetcd/package.nix {}; deepseek-tui = callPackage ./pkgs/d/deepseek-tui/package.nix {}; kiro-account-manager = callPackage ./pkgs/k/kiro-account-manager/package.nix {}; + hermes-agent = callPackage ./pkgs/h/hermes-agent/package.nix { + uv2nix = uv2nix; + pyproject-nix = pyproject-nix; + pyproject-build-systems = pyproject-build-systems; + npm-lockfile-fix = npm-lockfile-fix-pkg; + }; struct2json = callPackage ./pkgs/s/struct2json/package.nix { pkgs = pkgs; }; @@ -96,6 +102,7 @@ in cetcd = cetcd; deepseek-tui = deepseek-tui; kiro-account-manager = kiro-account-manager; + hermes-agent = hermes-agent; libcello_debug = libcello_debug; packcc = packcc_main; struct2json = struct2json; diff --git a/flake.lock b/flake.lock index cb8f9c1..53c8a1a 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1764667669, - "narHash": "sha256-7WUCZfmqLAssbDqwg9cUDAXrSoXN79eEEq17qhTNM/Y=", + "lastModified": 1777954456, + "narHash": "sha256-hGdgeU2Nk87RAuZyYjyDjFL6LK7dAZN5RE9+hrDTkDU=", "owner": "nixos", "repo": "nixpkgs", - "rev": "418468ac9527e799809c900eda37cbff999199b6", + "rev": "549bd84d6279f9852cae6225e372cc67fb91a4c1", "type": "github" }, "original": { @@ -34,10 +34,118 @@ "type": "github" } }, + "npm-lockfile-fix": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1775903712, + "narHash": "sha256-2GV79U6iVH4gKAPWYrxUReB0S41ty/Y3dBLquU8AlaA=", + "owner": "jeslie0", + "repo": "npm-lockfile-fix", + "rev": "c6093acb0c0548e0f9b8b3d82918823721930fe8", + "type": "github" + }, + "original": { + "owner": "jeslie0", + "repo": "npm-lockfile-fix", + "type": "github" + } + }, + "pyproject-build-systems": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ], + "pyproject-nix": "pyproject-nix", + "uv2nix": "uv2nix" + }, + "locked": { + "lastModified": 1776659114, + "narHash": "sha256-qapCOQmR++yZSY43dzrp3wCrkOTLpod+ONtJWBk6iKU=", + "owner": "pyproject-nix", + "repo": "build-system-pkgs", + "rev": "ffaa2161dd5d63e0e94591f86b54fc239660fb2e", + "type": "github" + }, + "original": { + "owner": "pyproject-nix", + "repo": "build-system-pkgs", + "type": "github" + } + }, + "pyproject-nix": { + "inputs": { + "nixpkgs": [ + "pyproject-build-systems", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1776317425, + "narHash": "sha256-5iPq7MxKwAhKu76uGkRo/7RWfu9GCtsMdeacetTFINI=", + "owner": "nix-community", + "repo": "pyproject.nix", + "rev": "1b0021e93fa281f694510321514731086dbedd13", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "pyproject.nix", + "type": "github" + } + }, + "pyproject-nix_2": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1776715674, + "narHash": "sha256-Gs1VnEkCkkRZxJQAC/Dhz0Jbfi22mFXChbtNg9w/Ybg=", + "owner": "pyproject-nix", + "repo": "pyproject.nix", + "rev": "69f57f27e52a87c54e28138a75ec741cd46663c9", + "type": "github" + }, + "original": { + "owner": "pyproject-nix", + "repo": "pyproject.nix", + "type": "github" + } + }, + "pyproject-nix_3": { + "inputs": { + "nixpkgs": [ + "uv2nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1776715674, + "narHash": "sha256-Gs1VnEkCkkRZxJQAC/Dhz0Jbfi22mFXChbtNg9w/Ybg=", + "owner": "pyproject-nix", + "repo": "pyproject.nix", + "rev": "69f57f27e52a87c54e28138a75ec741cd46663c9", + "type": "github" + }, + "original": { + "owner": "pyproject-nix", + "repo": "pyproject.nix", + "type": "github" + } + }, "root": { "inputs": { "flake-utils": "flake-utils", - "nixpkgs": "nixpkgs" + "nixpkgs": "nixpkgs", + "npm-lockfile-fix": "npm-lockfile-fix", + "pyproject-build-systems": "pyproject-build-systems", + "pyproject-nix": "pyproject-nix_2", + "uv2nix": "uv2nix_2" } }, "systems": { @@ -54,6 +162,52 @@ "repo": "default", "type": "github" } + }, + "uv2nix": { + "inputs": { + "nixpkgs": [ + "pyproject-build-systems", + "nixpkgs" + ], + "pyproject-nix": [ + "pyproject-build-systems", + "pyproject-nix" + ] + }, + "locked": { + "lastModified": 1776317509, + "narHash": "sha256-nSriomT9IJvyVY/mzyFz4Un6DHSjCfrVitcIfV+VHnY=", + "owner": "pyproject-nix", + "repo": "uv2nix", + "rev": "56cfeb9813150e1f900f13e4d6fe46e2845f82d5", + "type": "github" + }, + "original": { + "owner": "pyproject-nix", + "repo": "uv2nix", + "type": "github" + } + }, + "uv2nix_2": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ], + "pyproject-nix": "pyproject-nix_3" + }, + "locked": { + "lastModified": 1777895960, + "narHash": "sha256-KebDsQd+A7pm++Tp0744EjULttHvz1wbKqNKkMA/088=", + "owner": "pyproject-nix", + "repo": "uv2nix", + "rev": "5ad90d48b80ecc920ca2247d53f46beba302e186", + "type": "github" + }, + "original": { + "owner": "pyproject-nix", + "repo": "uv2nix", + "type": "github" + } } }, "root": "root", diff --git a/flake.nix b/flake.nix index ff47767..555325e 100644 --- a/flake.nix +++ b/flake.nix @@ -4,16 +4,35 @@ inputs = { nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable"; flake-utils.url = "github:numtide/flake-utils"; + pyproject-nix = { + url = "github:pyproject-nix/pyproject.nix"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + uv2nix = { + url = "github:pyproject-nix/uv2nix"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + pyproject-build-systems = { + url = "github:pyproject-nix/build-system-pkgs"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + npm-lockfile-fix = { + url = "github:jeslie0/npm-lockfile-fix"; + inputs.nixpkgs.follows = "nixpkgs"; + }; }; - outputs = { self, nixpkgs, flake-utils}: + outputs = { self, nixpkgs, flake-utils, uv2nix, pyproject-nix, pyproject-build-systems, npm-lockfile-fix }: let supportedSystems = [ "x86_64-linux" ]; in flake-utils.lib.eachSystem supportedSystems ( system: let pkgs = nixpkgs.legacyPackages.${system}; - xpkgs = import ./default.nix { inherit pkgs; }; + xpkgs = import ./default.nix { + inherit pkgs uv2nix pyproject-nix pyproject-build-systems; + npm-lockfile-fix-pkg = npm-lockfile-fix.packages.${system}.default; + }; in rec { packages = xpkgs; defaultPackage = xpkgs.uem; @@ -25,5 +44,3 @@ } ); } - - diff --git a/pkgs/h/hermes-agent/package.nix b/pkgs/h/hermes-agent/package.nix new file mode 100644 index 0000000..c239ecd --- /dev/null +++ b/pkgs/h/hermes-agent/package.nix @@ -0,0 +1,54 @@ +{ + lib, + stdenv, + makeWrapper, + callPackage, + fetchFromGitHub, + python312, + nodejs_22, + ripgrep, + git, + openssh, + ffmpeg, + uv2nix, + pyproject-nix, + pyproject-build-systems, + npm-lockfile-fix, +}: +let + rev = "96dc2726232fc02c836b29968550d7dc5af03e36"; + + src = fetchFromGitHub { + owner = "NousResearch"; + repo = "hermes-agent"; + inherit rev; + hash = "sha256-pyqKp9gQLhHz0F8Gsw482CB6M8lRF5mW+Jvxj8sYP7k="; + }; + + # tirith is an optional security scanner that auto-downloads itself at runtime + # if not found on PATH; provide a stub so the nix package builds cleanly. + tirith = stdenv.mkDerivation { + pname = "tirith-stub"; + version = "0"; + dontUnpack = true; + installPhase = "mkdir -p $out/bin"; + }; +in + callPackage "${src}/nix/hermes-agent.nix" { + inherit + lib + stdenv + makeWrapper + python312 + nodejs_22 + ripgrep + git + openssh + ffmpeg + tirith + uv2nix + pyproject-nix + pyproject-build-systems + npm-lockfile-fix + ; + }