Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 80c49a6727 | |||
| 8b495c6bc9 | |||
| 9bceb1c6d0 | |||
| a5d321805b | |||
| 651b808f15 |
Generated
+246
-52
@@ -43,26 +43,6 @@
|
||||
}
|
||||
},
|
||||
"agent-lib": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1780681759,
|
||||
"narHash": "sha256-eszNyFb1If4ePaJD1aQTvHFog8lvpwjCTl8F9rUlXnk=",
|
||||
"ref": "refs/heads/master",
|
||||
"rev": "9a4ee71b1a9008422266e4364a76ee2f08868b5a",
|
||||
"revCount": 25,
|
||||
"type": "git",
|
||||
"url": "ssh://gitea@code.m3ta.dev/m3tam3re/agent-lib"
|
||||
},
|
||||
"original": {
|
||||
"type": "git",
|
||||
"url": "ssh://gitea@code.m3ta.dev/m3tam3re/agent-lib"
|
||||
}
|
||||
},
|
||||
"agent-lib_2": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"m3ta-home",
|
||||
@@ -70,11 +50,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1780157040,
|
||||
"narHash": "sha256-j2d3nj3FvOlxQ+Zlse+rMo3qHD3m4Gick5uiwtTaA2o=",
|
||||
"lastModified": 1780736323,
|
||||
"narHash": "sha256-b4CfjbWTT+5Z0XBI2/W2DnybwkYVwLxghCwXVmw9+Iw=",
|
||||
"ref": "refs/heads/master",
|
||||
"rev": "f63712a9ba03da6e2f591766d0f055aa65e6d237",
|
||||
"revCount": 24,
|
||||
"rev": "b0c832c9e02d8b3d8ad091f022c859382a037afd",
|
||||
"revCount": 26,
|
||||
"type": "git",
|
||||
"url": "ssh://gitea@code.m3ta.dev/m3tam3re/agent-lib"
|
||||
},
|
||||
@@ -420,6 +400,28 @@
|
||||
}
|
||||
},
|
||||
"flake-parts_3": {
|
||||
"inputs": {
|
||||
"nixpkgs-lib": [
|
||||
"m3ta-home",
|
||||
"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_4": {
|
||||
"inputs": {
|
||||
"nixpkgs-lib": [
|
||||
"m3ta-home",
|
||||
@@ -441,7 +443,7 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-parts_4": {
|
||||
"flake-parts_5": {
|
||||
"inputs": {
|
||||
"nixpkgs-lib": [
|
||||
"nur",
|
||||
@@ -472,16 +474,42 @@
|
||||
"uv2nix": "uv2nix_2"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1780061757,
|
||||
"narHash": "sha256-0CmNH879jnsAAszo1nkkFm8RNE49xtwUditYdFIYBCM=",
|
||||
"lastModified": 1780707343,
|
||||
"narHash": "sha256-ngpkopVczNrT0bfCXHm38QjgrZT96Bm/rO89NA/ls3Y=",
|
||||
"owner": "NousResearch",
|
||||
"repo": "hermes-agent",
|
||||
"rev": "77a1650c78a4cb1813d8a81fa1da40a15b6a3ec5",
|
||||
"rev": "3c231eb3979ab9c57d5cd6d02f1d577a3b718b43",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NousResearch",
|
||||
"ref": "v2026.6.5",
|
||||
"repo": "hermes-agent",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hermes-agent_2": {
|
||||
"inputs": {
|
||||
"flake-parts": "flake-parts_3",
|
||||
"nixpkgs": [
|
||||
"m3ta-home",
|
||||
"nixpkgs"
|
||||
],
|
||||
"npm-lockfile-fix": "npm-lockfile-fix_2",
|
||||
"pyproject-build-systems": "pyproject-build-systems_2",
|
||||
"pyproject-nix": "pyproject-nix_5",
|
||||
"uv2nix": "uv2nix_4"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1780733287,
|
||||
"narHash": "sha256-cMm2PL8ymiizMnK2JAHVSMCfPsMAis2OcIbdYwR3ZSs=",
|
||||
"owner": "NousResearch",
|
||||
"repo": "hermes-agent",
|
||||
"rev": "5af899c7ca753a56a4daeb6fa6ff3cbb113234b8",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NousResearch",
|
||||
"ref": "v2026.5.29.2",
|
||||
"repo": "hermes-agent",
|
||||
"type": "github"
|
||||
}
|
||||
@@ -514,11 +542,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1780593650,
|
||||
"narHash": "sha256-CHo7k65YTL3HY+WQVedDTupji+LMgNlKCdrtRHZFAK4=",
|
||||
"lastModified": 1780679734,
|
||||
"narHash": "sha256-KmRNvpNOb7QEORa06bVgjW9kITcx0VhsI7w0vhmZyD8=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "447fd9ff62501dae7206dfe180ee89f8de27b7d5",
|
||||
"rev": "b2b7db486e06e098711dc291bb25db82850e1d16",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -602,11 +630,11 @@
|
||||
"treefmt-nix": "treefmt-nix"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1780640554,
|
||||
"narHash": "sha256-dgnL2gTgRoO1D4z6wkARGCO/gimq3/UE/mVFcQcWBn8=",
|
||||
"lastModified": 1780723669,
|
||||
"narHash": "sha256-1GqON+bTWMrA8tTfZ194tk5Fi8R4YWjBUaScB1mTkmA=",
|
||||
"owner": "numtide",
|
||||
"repo": "llm-agents.nix",
|
||||
"rev": "f764eba1fdd162a1f2bc923f7e7034b894a22b4a",
|
||||
"rev": "7aa0fff2d50775e8b79040824385eaf250a250a9",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -618,10 +646,11 @@
|
||||
"m3ta-home": {
|
||||
"inputs": {
|
||||
"agenix": "agenix_2",
|
||||
"agent-lib": "agent-lib_2",
|
||||
"agent-lib": "agent-lib",
|
||||
"agents": "agents",
|
||||
"dms": "dms",
|
||||
"dms-plugin-registry": "dms-plugin-registry",
|
||||
"hermes-agent": "hermes-agent_2",
|
||||
"home-manager": "home-manager_4",
|
||||
"m3ta-nixpkgs": "m3ta-nixpkgs",
|
||||
"nix-colors": "nix-colors",
|
||||
@@ -631,11 +660,11 @@
|
||||
"nur": "nur"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1780420920,
|
||||
"narHash": "sha256-dxcRmexgCX+DlmlFRE/eW3gzdohVU7+JTAkzUzvG/1Y=",
|
||||
"lastModified": 1780744438,
|
||||
"narHash": "sha256-5tV7omai8Ed7qmqifsqleeHre0h/SeLcTnTacX76DSE=",
|
||||
"ref": "refs/heads/master",
|
||||
"rev": "19dea8277ef9c473e95e2dc3be367044dfa3f65c",
|
||||
"revCount": 45,
|
||||
"rev": "add002e05cd23e04c61471923d3367efc01e3530",
|
||||
"revCount": 48,
|
||||
"type": "git",
|
||||
"url": "ssh://gitea@code.m3ta.dev/m3tam3re/m3ta-home"
|
||||
},
|
||||
@@ -891,11 +920,11 @@
|
||||
},
|
||||
"nixpkgs-master_3": {
|
||||
"locked": {
|
||||
"lastModified": 1780675612,
|
||||
"narHash": "sha256-0uf5rIKWl6ljqZtDdYhVpBru9cggmUyoOw+m7IZNKYk=",
|
||||
"lastModified": 1780727454,
|
||||
"narHash": "sha256-mkqXK8st0OlcseyZGon2n+k7SThg+P5LRt3jTza26E0=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "a08eccd152a1534c8e01e69709fd21b108e5be2d",
|
||||
"rev": "51d40d1b686a6bb543d2edc5f8919aa62d26f27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -907,11 +936,11 @@
|
||||
},
|
||||
"nixpkgs-stable": {
|
||||
"locked": {
|
||||
"lastModified": 1779796641,
|
||||
"narHash": "sha256-ZsIrKmhp4vbBXoXXmR/tBXA/UCsAQiJL9vsgZEduhVY=",
|
||||
"lastModified": 1780511130,
|
||||
"narHash": "sha256-2v9lT4ya59Lh1FqPeLnz1MoX9y/wz2huqfe9RtQZITk=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "25f538306313eae3927264466c70d7001dcea1df",
|
||||
"rev": "535f3e6942cb1cead3929c604320d3db54b542b9",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -1086,9 +1115,31 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"npm-lockfile-fix_2": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"m3ta-home",
|
||||
"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_3",
|
||||
"flake-parts": "flake-parts_4",
|
||||
"nixpkgs": "nixpkgs_6"
|
||||
},
|
||||
"locked": {
|
||||
@@ -1107,17 +1158,17 @@
|
||||
},
|
||||
"nur_2": {
|
||||
"inputs": {
|
||||
"flake-parts": "flake-parts_4",
|
||||
"flake-parts": "flake-parts_5",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1780667345,
|
||||
"narHash": "sha256-JkFBPvT91un8Hq2wrMJxcJgiWwpIl6X5frAH6E8f32M=",
|
||||
"lastModified": 1780729463,
|
||||
"narHash": "sha256-FUkUJB+l3QLMzp/egsfvEnLJWe/FxyY/pYSrkYY4gtY=",
|
||||
"owner": "nix-community",
|
||||
"repo": "NUR",
|
||||
"rev": "c81bd4bb3912e373c17eaff12d67d478dfedf418",
|
||||
"rev": "80e259e2523c4ef547419d437872278a01d5a387",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -1192,6 +1243,30 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"pyproject-build-systems_2": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"m3ta-home",
|
||||
"hermes-agent",
|
||||
"nixpkgs"
|
||||
],
|
||||
"pyproject-nix": "pyproject-nix_4",
|
||||
"uv2nix": "uv2nix_3"
|
||||
},
|
||||
"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": [
|
||||
@@ -1257,6 +1332,74 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"pyproject-nix_4": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"m3ta-home",
|
||||
"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_5": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"m3ta-home",
|
||||
"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_6": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"m3ta-home",
|
||||
"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"
|
||||
}
|
||||
},
|
||||
"quickshell": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
@@ -1283,7 +1426,6 @@
|
||||
"root": {
|
||||
"inputs": {
|
||||
"agenix": "agenix",
|
||||
"agent-lib": "agent-lib",
|
||||
"disko": "disko",
|
||||
"hermes-agent": "hermes-agent",
|
||||
"home-manager": "home-manager_2",
|
||||
@@ -1505,6 +1647,58 @@
|
||||
"repo": "uv2nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"uv2nix_3": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"m3ta-home",
|
||||
"hermes-agent",
|
||||
"pyproject-build-systems",
|
||||
"nixpkgs"
|
||||
],
|
||||
"pyproject-nix": [
|
||||
"m3ta-home",
|
||||
"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_4": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"m3ta-home",
|
||||
"hermes-agent",
|
||||
"nixpkgs"
|
||||
],
|
||||
"pyproject-nix": "pyproject-nix_6"
|
||||
},
|
||||
"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",
|
||||
|
||||
@@ -25,7 +25,6 @@
|
||||
m3ta-nixpkgs.url = "git+ssh://gitea@code.m3ta.dev/m3tam3re/nixpkgs";
|
||||
llm-agents.url = "github:numtide/llm-agents.nix";
|
||||
|
||||
#
|
||||
nur = {
|
||||
url = "github:nix-community/NUR";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
@@ -48,12 +47,7 @@
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
agent-lib = {
|
||||
url = "git+ssh://gitea@code.m3ta.dev/m3tam3re/agent-lib";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
hermes-agent.url = "github:NousResearch/hermes-agent/v2026.5.29.2";
|
||||
hermes-agent.url = "github:NousResearch/hermes-agent/v2026.6.5";
|
||||
|
||||
rustfs = {
|
||||
url = "github:rustfs/rustfs-flake";
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{config, ...}: {
|
||||
virtualisation.oci-containers.containers."ghost" = {
|
||||
image = "docker.io/ghost:latest";
|
||||
image = "docker.io/ghost:6-alpine";
|
||||
environmentFiles = [config.age.secrets.ghost-env.path];
|
||||
ports = ["127.0.0.1:3002:2368"];
|
||||
volumes = ["ghost_data:/var/lib/ghost/content"];
|
||||
|
||||
@@ -8,44 +8,142 @@
|
||||
# Edge TTS: Seraphina — friendly, multilingual German female voice (free, no API key)
|
||||
edgeVoice = "de-DE-SeraphinaMultilingualNeural";
|
||||
|
||||
agentLock = builtins.fromJSON (builtins.readFile ../../../agent-sources.lock.json);
|
||||
|
||||
agentSkillSelections = {
|
||||
m3ta-agents.exclude = [];
|
||||
anthropic.exclude = ["pdf" "skill-creator" "xlsx"];
|
||||
basecamp.exclude = [];
|
||||
kestra.exclude = [];
|
||||
mattpocock.exclude = ["grill-me" "caveman"];
|
||||
superpowers.exclude = ["brainstorming" "systematic-debugging"];
|
||||
vercel.exclude = [];
|
||||
agentSkillExclusions = {
|
||||
m3ta-agents = [];
|
||||
anthropic = ["pdf" "skill-creator" "xlsx"];
|
||||
basecamp = [];
|
||||
kestra = [];
|
||||
mattpocock = ["grill-me" "caveman"];
|
||||
superpowers = ["brainstorming" "systematic-debugging"];
|
||||
vercel = [];
|
||||
};
|
||||
|
||||
sourceRoot = source:
|
||||
builtins.fetchGit {
|
||||
inherit (source) url rev;
|
||||
agentLibSharedSkillsDir = ".agents/skills";
|
||||
|
||||
agentLibHomeManagerStub = {lib, ...}: {
|
||||
options.home.homeDirectory = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "/var/lib/hermes";
|
||||
};
|
||||
options.home.file = lib.mkOption {
|
||||
type = lib.types.attrsOf (lib.types.submodule ({name, ...}: {
|
||||
options = {
|
||||
enable = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = true;
|
||||
};
|
||||
executable = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.bool;
|
||||
default = null;
|
||||
};
|
||||
force = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
};
|
||||
ignorelinks = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
};
|
||||
onChange = lib.mkOption {
|
||||
type = lib.types.lines;
|
||||
default = "";
|
||||
};
|
||||
recursive = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
};
|
||||
source = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.path;
|
||||
default = null;
|
||||
};
|
||||
target = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = name;
|
||||
};
|
||||
text = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.lines;
|
||||
default = null;
|
||||
};
|
||||
};
|
||||
}));
|
||||
default = {};
|
||||
};
|
||||
options.home.packages = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.package;
|
||||
default = [];
|
||||
};
|
||||
options.assertions = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.attrs;
|
||||
default = [];
|
||||
};
|
||||
};
|
||||
|
||||
selectedSkillNames = sourceName: let
|
||||
source = agentLock.sources.${sourceName};
|
||||
excluded = agentSkillSelections.${sourceName}.exclude;
|
||||
in
|
||||
lib.subtractLists excluded (builtins.attrNames source.items.skills);
|
||||
agentLibSourceSelections =
|
||||
lib.mapAttrs (_sourceName: exclude: {
|
||||
skills = {
|
||||
all = true;
|
||||
inherit exclude;
|
||||
};
|
||||
})
|
||||
agentSkillExclusions;
|
||||
|
||||
copySkill = sourceName: skillName: let
|
||||
source = agentLock.sources.${sourceName};
|
||||
item = source.items.skills.${skillName};
|
||||
# Evaluate agent-lib's Hermes target renderer with a minimal Home Manager
|
||||
# surface, then expose its selected shared-skill outputs as a single Nix store
|
||||
# directory for hermes-agent's native `skills.external_dirs` setting. The full
|
||||
# Home Manager module is not imported into this NixOS host because Hermes runs
|
||||
# as a system service user rather than a managed login user's Home Manager
|
||||
# generation.
|
||||
agentLibEval = lib.evalModules {
|
||||
specialArgs = {inherit pkgs;};
|
||||
modules = [
|
||||
agentLibHomeManagerStub
|
||||
inputs.agent-lib.homeManagerModules.default
|
||||
{
|
||||
home.homeDirectory = "/var/lib/hermes";
|
||||
programs.agent-lib = {
|
||||
enable = true;
|
||||
lockFile = ../../../agent-sources.lock.json;
|
||||
shared.skillsDir = agentLibSharedSkillsDir;
|
||||
targets.hermes.enable = true;
|
||||
profiles.default.sources = agentLibSourceSelections;
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
agentLibFailedAssertions = lib.filter (assertion: !assertion.assertion) agentLibEval.config.assertions;
|
||||
|
||||
agentLibHomeFiles =
|
||||
if agentLibFailedAssertions != []
|
||||
then throw (builtins.head agentLibFailedAssertions).message
|
||||
else agentLibEval.config.home.file;
|
||||
|
||||
hermesSkillHomeFiles =
|
||||
lib.filterAttrs (
|
||||
targetPath: file:
|
||||
lib.hasPrefix "${agentLibSharedSkillsDir}/" targetPath
|
||||
&& file ? source
|
||||
&& file.source != null
|
||||
)
|
||||
agentLibHomeFiles;
|
||||
|
||||
linkHermesSkill = targetPath: file: let
|
||||
skillName = lib.removePrefix "${agentLibSharedSkillsDir}/" targetPath;
|
||||
in ''
|
||||
cp -R ${sourceRoot source}/${source.root}/${item.path} $out/${skillName}
|
||||
ln -s ${file.source} "$out"/${lib.escapeShellArg skillName}
|
||||
'';
|
||||
|
||||
copySourceSkills = sourceName:
|
||||
lib.concatMapStringsSep "\n" (copySkill sourceName) (selectedSkillNames sourceName);
|
||||
|
||||
# Build skills from the agent-lib lockfile instead of the legacy AGENTS flake.
|
||||
hermesSkills = pkgs.runCommand "hermes-agent-lib-skills" {} ''
|
||||
mkdir -p $out
|
||||
${lib.concatMapStringsSep "\n" copySourceSkills (builtins.attrNames agentSkillSelections)}
|
||||
'';
|
||||
# Deterministic store renderer consumed directly by Hermes. Each entry is a
|
||||
# symlink to the immutable skill directory selected by agent-lib, so
|
||||
# `$out/<skill>/SKILL.md` exists without a mutable copy service.
|
||||
hermesSkills =
|
||||
if hermesSkillHomeFiles == {}
|
||||
then throw "agent-lib: Hermes skill selection produced no skills"
|
||||
else
|
||||
pkgs.runCommand "hermes-agent-lib-skills" {} ''
|
||||
mkdir -p $out
|
||||
${lib.concatMapAttrsStringSep "\n" linkHermesSkill hermesSkillHomeFiles}
|
||||
'';
|
||||
in {
|
||||
virtualisation.docker.enable = true;
|
||||
|
||||
@@ -63,18 +161,7 @@ in {
|
||||
''}"
|
||||
];
|
||||
|
||||
systemd.services.copy-hermes-skills = {
|
||||
description = "Copy agent skills to hermes home directory";
|
||||
wantedBy = ["hermes-agent.service"];
|
||||
before = ["hermes-agent.service"];
|
||||
serviceConfig.Type = "oneshot";
|
||||
serviceConfig.RemainAfterExit = true;
|
||||
script = ''
|
||||
mkdir -p /var/lib/hermes/.agents
|
||||
cp -rT ${hermesSkills} /var/lib/hermes/.agents/skills
|
||||
chown -R hermes:hermes /var/lib/hermes/.agents
|
||||
'';
|
||||
};
|
||||
systemd.services.hermes-agent.restartTriggers = [hermesSkills];
|
||||
|
||||
services.hermes-agent = {
|
||||
enable = true;
|
||||
@@ -175,7 +262,7 @@ in {
|
||||
|
||||
skills = {
|
||||
external_dirs = [
|
||||
"/var/lib/hermes/.agents/skills"
|
||||
hermesSkills
|
||||
];
|
||||
};
|
||||
|
||||
|
||||
@@ -1,26 +1,25 @@
|
||||
age-encryption.org/v1
|
||||
-> ssh-ed25519 4NLKrw 2TwbZwX9SwWg4SVC0A2ICmyRjSfO+xtfBcBOK1lh3T4
|
||||
DSf4DrOAvW7L49lh6cq5IqrMM7gqXv2+67rR3ttn+CE
|
||||
-> ssh-ed25519 5kwcsA K1hqFOAxq2T+oLp3bQjLYpXtlQVkA7RHCM/8ETMGbwU
|
||||
xIE4xz50LB5vbDTTLKVcx9vC2iXIsRLThHYYxGjcJyY
|
||||
-> ssh-ed25519 9d4YIQ bXYb62OM/N+EXpMOZZ6zEbpfaH10Vz62PuUdGODXolw
|
||||
j64kKzOn8CmSnykEuWnXHZ0nfqwOfOxX4FPR4GSouR0
|
||||
-> ssh-ed25519 3Bcr1w C4alN6ud7q0K4I7NHuBgC77D6zeTfZVGjNS3EKpvL00
|
||||
NpjOsg3eJ5LvX0lV7NYuVHLeqeYylHdmw60H+KeG1GY
|
||||
-> ssh-ed25519 c4NQlA In5wsg4+LTIEbP75B83GMXPCItSPGwKWUW8QO+QjXyY
|
||||
oK1kikhr4RMq6QMv9kjNjiKrf5srlGh7hGbU2qns2rM
|
||||
-> ssh-ed25519 4NLKrw 42tBp6EbDJpC7EBt0++QxmF3N9rQJ/AP+7A/S174rCs
|
||||
bRzpQku0GLEBvANvCdeH3L4Kf06k6w2C4FfZCOp2QWI
|
||||
-> ssh-ed25519 5kwcsA YAYkQzsxfbHwrCPMW2eqLS9mRuuxr+EjHKl7MV3DDEo
|
||||
dN3TitETbdPbXzBtIDBglienhY4oDsFGgfe0VYdsP1o
|
||||
-> ssh-ed25519 9d4YIQ 2vTWMSuLrgpgaTWeu0ARoUOukLBKupCfMdqJhLvTqwA
|
||||
Lzk2Uo2U3tUJiq29on/a5zYfuUjgOZvCHhZYuFGSDG4
|
||||
-> ssh-ed25519 3Bcr1w x689Z0/TsOLLk1JNPXg2jj6y5ucaH37zRt46d/Z1l2w
|
||||
Bkzg3umkDYFBemmgev/M5LUFuobFugXe0u85mLmsDSo
|
||||
-> ssh-ed25519 c4NQlA 5Dn6e8bILaYl9FVt+ZwuZ6rOC0k0Kg1+KOSP4JakyWI
|
||||
AT6LeCo+P7RjgNhRex04kJ/7NHD2DAWRqs33uOJ7e5E
|
||||
-> ssh-rsa DQlE7w
|
||||
tcP4yPgGWqHYeE1gw/KD6cswik+9WU2s2f7hg5mK78085sQ7npXRsBVAz2OCRn07
|
||||
foeAAmnY4YmKriBh421JOVNBDOXHR5dfaIKY9b663L+rYj99ic0rfW26C+dqKitF
|
||||
SnvveL3Zf16nqg6duSVA7LIcIFgkIlA+RXnHPVho+P4GwEH7W8nCf/4kUquuhB7B
|
||||
F4Hx1qOknmGyNBJBFi27D04ZDDk/ZVxioYsO6P6TUu7MuaGmQCoVKREDl5RRh4zO
|
||||
XD8/TFDRsJLqqcbCKIlU+6CN1+L0r4FN4K0UaTjwPNzGvn5EEjBKw9RpOhdvI28I
|
||||
WlAQ+w6gdQiz9Ju4e5p7Doz2MbNb6894DimawHjzl968Xy5ifX2XA+FBdcW5hU9A
|
||||
u+7VXKZmbfMyvRA7lmKRoi4SurJAyQd6iXBrVKfTwFc53V/tJi48bsKcE3yXxHH+
|
||||
lKGuZFNGDDkqCruycjvz94WaIHy3fv5hhmBdgwoCZK1VGSLAnwdm1rG4B9m3t/K8
|
||||
M9pUnzZDa1v6X5UbQOE6HILaGU36VkQtnfXaJJdxJSRQ/sE9R3ZQoLjRZAw+UhUf
|
||||
09JwLkS55477xaar3bpvvOxeP4MrtTHLJ7593eEkFT3i45FfVmxutq6EYckZrCJB
|
||||
WjrCG7Cbvc20o6s54PYiF4Xk8AuPxt+SElRxBtcOK+SPba84f+WWHqrBA1YRzTDK
|
||||
fsM15eKWsJgzaz5y36grv4xSj4KbWMFtmEt5V5BEW32+zXBU5CPhonO59TxEQgh4
|
||||
hI2+gNmAzKQja7xbuxCyr3jcXWJz7IuXcrklr+2ZjF1wx3BDll1z+vxSX0C88MCc
|
||||
OLKDfnUiDa6BlgUfLK90dLIia8v0oIPXs4OWRfYs7SC/Z3QOPpSO62Ky9dKYRrod
|
||||
PHvCgxX28QvROE4TekL9PV81AfAbMVJrnkRiybg6id8CscldtDmgaKqoaIoJlAuF
|
||||
g5/LGd+FPfmlv2iNfGUn2Glhui8SkrBK1MzGJpeQw+l4CXLH33yQzHX0m6TdQBzr
|
||||
|
||||
-> ssh-ed25519 CSMyhg FNYYdEIJYcxkjMuM5lnIs9gIilvgD44uazZE8CjNeho
|
||||
QHeghlsOOlYNMwhMHT4o7DeuyxGP/3wyqm94HUHjn44
|
||||
--- zRG6aCTS+X18VpeN+tz38kaUoilk1kN5KrWTWYZ6pV4
|
||||
ræX_qÔÁ’Ð껿H#p¯f™”}(žA(ã|»?ë0ªyJk¥SD‡\Jm&uõÃ&Ô9€ýÄ5Ù+çÊ…!v%Y˜ù~ãÁ$û“šZÇÓ°j„z–Â\ßá1,Vf˜
|
||||
£’æ1zª»#Ó
|
||||
-> ssh-ed25519 CSMyhg 5YHqBNbkkUFVhDEfOM4P2tAxT2t1rDn5KItUcjUs4DY
|
||||
oWEKUGiIVkRQvEkY33PpOUcoqsmacgHAaX58H6sRpP4
|
||||
--- KH+IYh4+bS3JMeEmFYakwIceMxOrlEZj0Fqt3VMgFRk
|
||||
�96¨ºà·ènÅϬuk!ß±1ÝNItŽNŸ8E�çwĹ]3µ”S*¡õ«0>!ý9zc‡(”2O;åI.^jC”&$ºÚ\ÛËWtÇÃNÿ#Õ€Å3¾ÜøÞÌÏcMuÈAߢ•<¾)¬MÄ´¼a¥rdí'p’ÄggPä5’ÆõOQòNfà”×1AZ|1v\š4F›‡�Ò6;„T<l£
|
||||
Binary file not shown.
Reference in New Issue
Block a user