refactor: centralize agent skills at ~/.agents/skills

This commit is contained in:
sascha.koenig
2026-04-20 08:58:15 +02:00
parent bc41c9a428
commit 35f4821bc5
3 changed files with 48 additions and 39 deletions

View File

@@ -15,7 +15,10 @@ in
mcpServers = mkOption {
type = types.attrsOf types.anything;
default = if mcpCfg != null then mcpCfg.servers else {};
default =
if mcpCfg != null
then mcpCfg.servers
else {};
defaultText = literalExpression "config.programs.mcp.servers";
description = ''
MCP server configurations for Pi (pi-mcp-adapter).
@@ -41,8 +44,6 @@ in
'';
};
externalSkills = shared.externalSkillsOption;
settings = mkOption {
type = types.submodule {
freeformType = types.attrsOf types.anything;
@@ -156,8 +157,11 @@ in
then let
filtered = filterNulls v;
in
if filtered == {} then null else filtered
else v) attrs
if filtered == {}
then null
else filtered
else v)
attrs
);
piSettings = filterNulls cfg.settings;
@@ -177,17 +181,16 @@ in
# Dynamic home.file entries for agent .md files
agentFiles =
if cfg.agentsInput != null
then
let
agentNames = builtins.attrNames cfg.agentsInput.lib.loadAgents;
in
builtins.listToAttrs (
map (name: {
name = ".pi/agent/agents/${name}.md";
value = {source = "${rendered}/agents/${name}.md";};
})
agentNames
)
then let
agentNames = builtins.attrNames cfg.agentsInput.lib.loadAgents;
in
builtins.listToAttrs (
map (name: {
name = ".pi/agent/agents/${name}.md";
value = {source = "${rendered}/agents/${name}.md";};
})
agentNames
)
else {};
in {
home.file = mkMerge [
@@ -213,15 +216,6 @@ in
# ── Agents — pi-subagents .md files ────────────────────────────
agentFiles
# ── Skills symlinked from AGENTS repo + external skills ────────
(mkIf (cfg.agentsInput != null) {
".pi/agent/skills".source = cfg.agentsInput.lib.mkOpencodeSkills {
inherit pkgs;
customSkills = "${cfg.agentsInput}/skills";
externalSkills = shared.mapExternalSkills cfg.externalSkills;
};
})
];
});
}