commit fa66347002d89a66ddcfe2f46ec1202317f6cc73
parent 7af9c1c938bc42e788b884a5ddf1a59ac7591f80
Author: Toni Brown <me@tb148.net>
Date: Fri, 8 May 2026 16:15:01 +0800
enable hermes agent
Diffstat:
6 files changed, 396 insertions(+), 16 deletions(-)
diff --git a/flake.lock b/flake.lock
@@ -10,11 +10,11 @@
"systems": "systems"
},
"locked": {
- "lastModified": 1777337743,
- "narHash": "sha256-oRwlY4tHyamXKJyn1sEFy0zUIgfSUo5xrSinTzyJbj0=",
+ "lastModified": 1778074663,
+ "narHash": "sha256-tKPbQx+DPHtknvo2I8nquXJZQ+jcRTwpQ/HUxp0pq9k=",
"owner": "HeitorAugustoLN",
"repo": "betterfox-nix",
- "rev": "3b96fa583dbdfee62f733df6c16da994eaf24922",
+ "rev": "f8f5d6d3359abe1c979551ca18ee6496907607e8",
"type": "github"
},
"original": {
@@ -23,6 +23,65 @@
"type": "github"
}
},
+ "blueprint": {
+ "inputs": {
+ "nixpkgs": [
+ "llm-agents",
+ "nixpkgs"
+ ],
+ "systems": [
+ "llm-agents",
+ "systems"
+ ]
+ },
+ "locked": {
+ "lastModified": 1776249299,
+ "narHash": "sha256-Dt9t1TGRmJFc0xVYhttNBD6QsAgHOHCArqGa0AyjrJY=",
+ "owner": "numtide",
+ "repo": "blueprint",
+ "rev": "56131e8628f173d24a27f6d27c0215eff57e40dd",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "blueprint",
+ "type": "github"
+ }
+ },
+ "bun2nix": {
+ "inputs": {
+ "flake-parts": [
+ "llm-agents",
+ "flake-parts"
+ ],
+ "nixpkgs": [
+ "llm-agents",
+ "nixpkgs"
+ ],
+ "systems": [
+ "llm-agents",
+ "systems"
+ ],
+ "treefmt-nix": [
+ "llm-agents",
+ "treefmt-nix"
+ ]
+ },
+ "locked": {
+ "lastModified": 1777369708,
+ "narHash": "sha256-1xW7cRZNsFNPQD+cE0fwnLVStnDth0HSoASEIFeT7uI=",
+ "owner": "nix-community",
+ "repo": "bun2nix",
+ "rev": "e659e1cc4b8e1b21d0aa85f1c481f9db61ecfa98",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-community",
+ "ref": "staging-2.1.0",
+ "repo": "bun2nix",
+ "type": "github"
+ }
+ },
"catppuccin": {
"inputs": {
"nixpkgs": [
@@ -30,11 +89,11 @@
]
},
"locked": {
- "lastModified": 1777734189,
- "narHash": "sha256-kbIhdhDPaTP6gxAPkcRYeB+cqPFDpTM/bnw+m+26vkI=",
+ "lastModified": 1778336446,
+ "narHash": "sha256-axlSmUkHgMSnHitMgIWH8iNfU9Ej39Th50KD8NePjac=",
"owner": "catppuccin",
"repo": "nix",
- "rev": "e68cf5deaf1a7afed2e548835dba2ae99f5a3ccb",
+ "rev": "f656000aa5e6dc2664f71bc57ce00bf68dc65366",
"type": "github"
},
"original": {
@@ -67,6 +126,48 @@
"flake-parts_2": {
"inputs": {
"nixpkgs-lib": [
+ "hermes-agent",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1772408722,
+ "narHash": "sha256-rHuJtdcOjK7rAHpHphUb1iCvgkU3GpfvicLMwwnfMT0=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "f20dc5d9b8027381c474144ecabc9034d6a839a3",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "flake-parts_3": {
+ "inputs": {
+ "nixpkgs-lib": [
+ "llm-agents",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1777988971,
+ "narHash": "sha256-qIoWPDs+0/8JecyYgE3gpKQxW/4bLW/gp45vow9ioCQ=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "0678d8986be1661af6bb555f3489f2fdfc31f6ff",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "flake-parts_4": {
+ "inputs": {
+ "nixpkgs-lib": [
"nur",
"nixpkgs"
]
@@ -85,6 +186,31 @@
"type": "github"
}
},
+ "hermes-agent": {
+ "inputs": {
+ "flake-parts": "flake-parts_2",
+ "nixpkgs": [
+ "nixpkgs"
+ ],
+ "npm-lockfile-fix": "npm-lockfile-fix",
+ "pyproject-build-systems": "pyproject-build-systems",
+ "pyproject-nix": "pyproject-nix_2",
+ "uv2nix": "uv2nix_2"
+ },
+ "locked": {
+ "lastModified": 1778326495,
+ "narHash": "sha256-ggiTVuj35N7rSqX7qHc6GU3xcId4wKWa9/nebHa3hY0=",
+ "owner": "NousResearch",
+ "repo": "hermes-agent",
+ "rev": "f6d45e5df49c85c87a3f2ec44f9e92e233019622",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NousResearch",
+ "repo": "hermes-agent",
+ "type": "github"
+ }
+ },
"home-manager": {
"inputs": {
"nixpkgs": [
@@ -92,11 +218,11 @@
]
},
"locked": {
- "lastModified": 1778009629,
- "narHash": "sha256-nUoQtf4Zq7DRYJrfv904hjrxjAlWVP6a1pNNFKx3FCg=",
+ "lastModified": 1778248595,
+ "narHash": "sha256-dhFgEjoeJMYN/7OY6xfxS799YB4IjbbYXTjyGIJyLpc=",
"owner": "nix-community",
"repo": "home-manager",
- "rev": "00ed86e58bb6979a7921859fd1615d19382eac5c",
+ "rev": "fdb2ccba9d5e1238d32e0c4a3ec1a277efa80c1d",
"type": "github"
},
"original": {
@@ -120,6 +246,31 @@
"type": "github"
}
},
+ "llm-agents": {
+ "inputs": {
+ "blueprint": "blueprint",
+ "bun2nix": "bun2nix",
+ "flake-parts": "flake-parts_3",
+ "nixpkgs": [
+ "nixpkgs"
+ ],
+ "systems": "systems_2",
+ "treefmt-nix": "treefmt-nix"
+ },
+ "locked": {
+ "lastModified": 1778304612,
+ "narHash": "sha256-7FkBnR56KZ8RwY5kPd3ans8f68IYjF1J66gOUlLsiLA=",
+ "owner": "numtide",
+ "repo": "llm-agents.nix",
+ "rev": "c741913095c4815f6651aa0a2c24b3ce15e414e4",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "llm-agents.nix",
+ "type": "github"
+ }
+ },
"nixpkgs": {
"locked": {
"lastModified": 1777954456,
@@ -138,11 +289,11 @@
},
"nixpkgs-small": {
"locked": {
- "lastModified": 1778016882,
- "narHash": "sha256-P0r7DKpsh9Sn8v/ckIv5xgBm9RWSgJsJskadaQiX4us=",
+ "lastModified": 1778228972,
+ "narHash": "sha256-L34YTBob9sdjnc+rd7nMC2X8ddw0LT4RfufnlFyArRU=",
"owner": "NixOS",
"repo": "nixpkgs",
- "rev": "5c21abf2abb5bcbbb8d486d1fc32305fb03b0414",
+ "rev": "1c5503ba41146fb6b49ed9706823b30de7f3a78f",
"type": "github"
},
"original": {
@@ -152,19 +303,40 @@
"type": "github"
}
},
+ "npm-lockfile-fix": {
+ "inputs": {
+ "nixpkgs": [
+ "hermes-agent",
+ "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"
+ }
+ },
"nur": {
"inputs": {
- "flake-parts": "flake-parts_2",
+ "flake-parts": "flake-parts_4",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
- "lastModified": 1778032338,
- "narHash": "sha256-o9x+mc6nDMiTPHpUC8j7o3D5nioNiilOr1u1Xr5WLj8=",
+ "lastModified": 1778334545,
+ "narHash": "sha256-yVHaHDRqlSX8veSUjZaXsPX3GD3+EF3Zap85hDVrt6M=",
"owner": "nix-community",
"repo": "NUR",
- "rev": "63d2dc1ba0ddc14069edc53329d87c8109c7efe2",
+ "rev": "6f73c3738867b974b78aca91ed38560f03f77850",
"type": "github"
},
"original": {
@@ -173,11 +345,101 @@
"type": "github"
}
},
+ "pyproject-build-systems": {
+ "inputs": {
+ "nixpkgs": [
+ "hermes-agent",
+ "nixpkgs"
+ ],
+ "pyproject-nix": "pyproject-nix",
+ "uv2nix": "uv2nix"
+ },
+ "locked": {
+ "lastModified": 1772555609,
+ "narHash": "sha256-3BA3HnUvJSbHJAlJj6XSy0Jmu7RyP2gyB/0fL7XuEDo=",
+ "owner": "pyproject-nix",
+ "repo": "build-system-pkgs",
+ "rev": "c37f66a953535c394244888598947679af231863",
+ "type": "github"
+ },
+ "original": {
+ "owner": "pyproject-nix",
+ "repo": "build-system-pkgs",
+ "type": "github"
+ }
+ },
+ "pyproject-nix": {
+ "inputs": {
+ "nixpkgs": [
+ "hermes-agent",
+ "pyproject-build-systems",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1769936401,
+ "narHash": "sha256-kwCOegKLZJM9v/e/7cqwg1p/YjjTAukKPqmxKnAZRgA=",
+ "owner": "nix-community",
+ "repo": "pyproject.nix",
+ "rev": "b0d513eeeebed6d45b4f2e874f9afba2021f7812",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-community",
+ "repo": "pyproject.nix",
+ "type": "github"
+ }
+ },
+ "pyproject-nix_2": {
+ "inputs": {
+ "nixpkgs": [
+ "hermes-agent",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1772865871,
+ "narHash": "sha256-/ZTSg97aouL0SlPHaokA4r3iuH9QzHVuWPACD2CUCFY=",
+ "owner": "pyproject-nix",
+ "repo": "pyproject.nix",
+ "rev": "e537db02e72d553cea470976b9733581bcf5b3ed",
+ "type": "github"
+ },
+ "original": {
+ "owner": "pyproject-nix",
+ "repo": "pyproject.nix",
+ "type": "github"
+ }
+ },
+ "pyproject-nix_3": {
+ "inputs": {
+ "nixpkgs": [
+ "hermes-agent",
+ "uv2nix",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1771518446,
+ "narHash": "sha256-nFJSfD89vWTu92KyuJWDoTQJuoDuddkJV3TlOl1cOic=",
+ "owner": "pyproject-nix",
+ "repo": "pyproject.nix",
+ "rev": "eb204c6b3335698dec6c7fc1da0ebc3c6df05937",
+ "type": "github"
+ },
+ "original": {
+ "owner": "pyproject-nix",
+ "repo": "pyproject.nix",
+ "type": "github"
+ }
+ },
"root": {
"inputs": {
"betterfox": "betterfox",
"catppuccin": "catppuccin",
+ "hermes-agent": "hermes-agent",
"home-manager": "home-manager",
+ "llm-agents": "llm-agents",
"nixpkgs": "nixpkgs",
"nixpkgs-small": "nixpkgs-small",
"nur": "nur"
@@ -197,6 +459,91 @@
"repo": "default",
"type": "github"
}
+ },
+ "systems_2": {
+ "locked": {
+ "lastModified": 1681028828,
+ "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
+ "owner": "nix-systems",
+ "repo": "default",
+ "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-systems",
+ "repo": "default",
+ "type": "github"
+ }
+ },
+ "treefmt-nix": {
+ "inputs": {
+ "nixpkgs": [
+ "llm-agents",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1775636079,
+ "narHash": "sha256-pc20NRoMdiar8oPQceQT47UUZMBTiMdUuWrYu2obUP0=",
+ "owner": "numtide",
+ "repo": "treefmt-nix",
+ "rev": "790751ff7fd3801feeaf96d7dc416a8d581265ba",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "treefmt-nix",
+ "type": "github"
+ }
+ },
+ "uv2nix": {
+ "inputs": {
+ "nixpkgs": [
+ "hermes-agent",
+ "pyproject-build-systems",
+ "nixpkgs"
+ ],
+ "pyproject-nix": [
+ "hermes-agent",
+ "pyproject-build-systems",
+ "pyproject-nix"
+ ]
+ },
+ "locked": {
+ "lastModified": 1770770348,
+ "narHash": "sha256-A2GzkmzdYvdgmMEu5yxW+xhossP+txrYb7RuzRaqhlg=",
+ "owner": "pyproject-nix",
+ "repo": "uv2nix",
+ "rev": "5d1b2cb4fe3158043fbafbbe2e46238abbc954b0",
+ "type": "github"
+ },
+ "original": {
+ "owner": "pyproject-nix",
+ "repo": "uv2nix",
+ "type": "github"
+ }
+ },
+ "uv2nix_2": {
+ "inputs": {
+ "nixpkgs": [
+ "hermes-agent",
+ "nixpkgs"
+ ],
+ "pyproject-nix": "pyproject-nix_3"
+ },
+ "locked": {
+ "lastModified": 1773039484,
+ "narHash": "sha256-+boo33KYkJDw9KItpeEXXv8+65f7hHv/earxpcyzQ0I=",
+ "owner": "pyproject-nix",
+ "repo": "uv2nix",
+ "rev": "b68be7cfeacbed9a3fa38a2b5adc0cfb81d9bb1f",
+ "type": "github"
+ },
+ "original": {
+ "owner": "pyproject-nix",
+ "repo": "uv2nix",
+ "type": "github"
+ }
}
},
"root": "root",
diff --git a/flake.nix b/flake.nix
@@ -16,6 +16,14 @@
url = "github:catppuccin/nix";
inputs.nixpkgs.follows = "nixpkgs";
};
+ hermes-agent = {
+ url = "github:NousResearch/hermes-agent";
+ inputs.nixpkgs.follows = "nixpkgs";
+ };
+ llm-agents = {
+ url = "github:numtide/llm-agents.nix";
+ inputs.nixpkgs.follows = "nixpkgs";
+ };
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
@@ -28,6 +36,8 @@
nur,
betterfox,
catppuccin,
+ hermes-agent,
+ llm-agents,
home-manager,
...
}: {
@@ -42,6 +52,8 @@
./local/.
nur.modules.nixos.default
catppuccin.nixosModules.catppuccin
+ hermes-agent.nixosModules.default
+ {nixpkgs.overlays = [llm-agents.overlays.default];}
home-manager.nixosModules.home-manager
{
home-manager.extraSpecialArgs = specialArgs;
diff --git a/local/service/default.nix b/local/service/default.nix
@@ -2,6 +2,7 @@
imports = [
./boinc/.
./docker/.
+ ./hermes-agent/.
./pipewire/.
./searx/.
./timesyncd/.
diff --git a/local/service/hermes-agent/default.nix b/local/service/hermes-agent/default.nix
@@ -0,0 +1,17 @@
+{
+ config,
+ pkgs,
+ ...
+}: {
+ services.hermes-agent = {
+ enable = true;
+ container.enable = true;
+ container.backend = "podman";
+ container.hostUsers = ["tb148"];
+ environmentFiles = ["${config.users.users.tb148.home}/.hermes.env"];
+ extraPackages = with pkgs; [agent-browser];
+ settings.model.default = "deepseek-v4-pro";
+ addToSystemPackages = true;
+ };
+ virtualisation.podman.enable = true;
+}
diff --git a/local/service/searx/default.nix b/local/service/searx/default.nix
@@ -2,5 +2,6 @@
services.searx = {
enable = true;
environmentFile = "${config.users.users.tb148.home}/.searxng.env";
+ settings.search.formats = ["html" "json"];
};
}
diff --git a/local/system/nix/default.nix b/local/system/nix/default.nix
@@ -11,9 +11,11 @@
"https://mirrors.tuna.tsinghua.edu.cn/nix-channels/store?priority=30"
"https://mirrors.ustc.edu.cn/nix-channels/store?priority=30"
"https://cache.nixos-cuda.org"
+ "https://cache.numtide.com"
];
trusted-public-keys = [
"cache.nixos-cuda.org:74DUi4Ye579gUqzH4ziL9IyiJBlDpMRn9MBN8oNan9M="
+ "niks3.numtide.com-1:DTx8wZduET09hRmMtKdQDxNNthLQETkc/yaX7M4qK0g="
];
};
}