55 lines
1.6 KiB
Nix
55 lines
1.6 KiB
Nix
|
|
# nix/packages.nix — Hermes Agent package built with uv2nix
|
||
|
|
{ inputs, ... }: {
|
||
|
|
perSystem = { pkgs, system, ... }:
|
||
|
|
let
|
||
|
|
hermesVenv = pkgs.callPackage ./python.nix {
|
||
|
|
inherit (inputs) uv2nix pyproject-nix pyproject-build-systems;
|
||
|
|
};
|
||
|
|
|
||
|
|
# Import bundled skills, excluding runtime caches
|
||
|
|
bundledSkills = pkgs.lib.cleanSourceWith {
|
||
|
|
src = ../skills;
|
||
|
|
filter = path: _type:
|
||
|
|
!(pkgs.lib.hasInfix "/index-cache/" path);
|
||
|
|
};
|
||
|
|
|
||
|
|
runtimeDeps = with pkgs; [
|
||
|
|
nodejs_20 ripgrep git openssh ffmpeg
|
||
|
|
];
|
||
|
|
|
||
|
|
runtimePath = pkgs.lib.makeBinPath runtimeDeps;
|
||
|
|
in {
|
||
|
|
packages.default = pkgs.stdenv.mkDerivation {
|
||
|
|
pname = "hermes-agent";
|
||
|
|
version = "0.1.0";
|
||
|
|
|
||
|
|
dontUnpack = true;
|
||
|
|
dontBuild = true;
|
||
|
|
nativeBuildInputs = [ pkgs.makeWrapper ];
|
||
|
|
|
||
|
|
installPhase = ''
|
||
|
|
runHook preInstall
|
||
|
|
|
||
|
|
mkdir -p $out/share/hermes-agent $out/bin
|
||
|
|
cp -r ${bundledSkills} $out/share/hermes-agent/skills
|
||
|
|
|
||
|
|
${pkgs.lib.concatMapStringsSep "\n" (name: ''
|
||
|
|
makeWrapper ${hermesVenv}/bin/${name} $out/bin/${name} \
|
||
|
|
--prefix PATH : "${runtimePath}" \
|
||
|
|
--set HERMES_BUNDLED_SKILLS $out/share/hermes-agent/skills
|
||
|
|
'') [ "hermes" "hermes-agent" "hermes-acp" ]}
|
||
|
|
|
||
|
|
runHook postInstall
|
||
|
|
'';
|
||
|
|
|
||
|
|
meta = with pkgs.lib; {
|
||
|
|
description = "AI agent with advanced tool-calling capabilities";
|
||
|
|
homepage = "https://github.com/NousResearch/hermes-agent";
|
||
|
|
mainProgram = "hermes";
|
||
|
|
license = licenses.mit;
|
||
|
|
platforms = platforms.unix;
|
||
|
|
};
|
||
|
|
};
|
||
|
|
};
|
||
|
|
}
|