feat(shell): manage herdr agent integrations

This commit is contained in:
2026-09-13 06:41:46 -04:00
parent 8fe2e6f844
commit 3c2d9df777
3 changed files with 62 additions and 26 deletions

1
.agents Symbolic link
View File

@@ -0,0 +1 @@
.pi

View File

@@ -105,3 +105,8 @@
Different game installs can contain compiled scripts with the same internal path.
- Clew owns Ren'Py extraction, preparation, and compiled-script AST export. Ariadne owns analysis over Clew-produced data.
- Bazel Python targets require `PYTHON_TOOLCHAIN_ROOT` to point at a Python installation root.
- When checking whether a package exists in nixpkgs, check both this repository's pinned nixpkgs inputs
and the relevant current upstream channel. A package can exist on current `nixos-unstable` while being
absent from the pinned revision or from a different branch such as `nixpkgs-unstable`.
- OMP does not discover project skills from `.pi/skills`.
Put skills shared by Pi and OMP under `.agents/skills`, or configure OMP's `skills.customDirectories`.

View File

@@ -10,12 +10,29 @@ let
user = config.user.name;
in
{
options.modules.shell.herdr.enable = lib.mkEnableOption "Herdr, a terminal multiplexer for coding agents";
options.modules.shell.herdr = {
enable = lib.mkEnableOption "Herdr, a terminal multiplexer for coding agents";
integrations = {
pi.enable = lib.mkOption {
type = lib.types.bool;
default = config.modules.shell.pi.enable;
description = "Whether to install Herdr's Pi agent-state integration.";
};
omp.enable = lib.mkOption {
type = lib.types.bool;
default = config.modules.shell.omp.enable;
description = "Whether to install Herdr's OMP agent-state integration.";
};
};
};
config = lib.mkIf cfg.enable {
registry.shell-shortcut.${config.networking.hostName}.hs = "herdr --session";
home-manager.users.${user} = {
home-manager.users.${user} = lib.mkMerge [
{
home.packages = [ pkgs.herdr ];
xdg.configFile."herdr/config.toml".text = ''
@@ -42,6 +59,19 @@ in
[experimental]
kitty_graphics = true
'';
}
(lib.mkIf cfg.integrations.pi.enable {
home.file.".pi/agent/extensions/herdr-agent-state.ts" = {
source = "${pkgs.herdr.src}/src/integration/assets/pi/herdr-agent-state.ts";
force = true;
};
})
(lib.mkIf cfg.integrations.omp.enable {
home.file.".omp/agent/extensions/herdr-omp-agent-state.ts" = {
source = "${pkgs.herdr.src}/src/integration/assets/omp/herdr-agent-state.ts";
force = true;
};
})
];
};
}