feat(agents): enable Herdr tooling

This commit is contained in:
2026-07-31 22:49:05 -04:00
parent 36d7a53029
commit 2fed687a00
6 changed files with 57 additions and 5 deletions

View File

@@ -18,6 +18,8 @@ The domain model (Host, Module, Skeleton, Auto-loader, Enable convention, overla
## Gotchas
- This host has no `python` or `python3` command on its ordinary `PATH`.
For ad hoc Python, use Nix explicitly, such as `nix shell nixpkgs#python3 -c python3 <script>`.
- ADR bodies are immutable records of decisions as they were made, while frontmatter is mutable.
When a decision changes or its premise proves wrong, preserve the original body, update its status, and add a new ADR that supersedes it.
Filename migrations preserve references in immutable bodies through frontmatter aliases rather than rewriting those bodies.
@@ -74,3 +76,7 @@ The domain model (Host, Module, Skeleton, Auto-loader, Enable convention, overla
Enabling networkd takes over its DNS, its CachyOS `zfs-kernel` build is marked broken, and it has no bridge or pool to attach to.
Verify these against it ad hoc through `nixosConfigurations.neogaia.extendModules` (forcing a ZFS-capable `boot.kernelPackages` for the zfs case) plus `nix eval` of the derived values, never by committing the enablement.
A committed guest therefore leaves `vlan`, `mounts`, and `secrets` unset, and the standing enablement waits for the first wired server host with real storage.
- Herdr key names for shifted punctuation are not interchangeable with the physical base key plus `shift`.
The tab rename binding must use the produced literal, such as `prefix+<`, rather than `prefix+shift+comma`.
- Flake-managed Pi extension, prompt, and skill directories may still be written directly for throwaway development or local experiments.
The risk is that a later Home Manager activation can overwrite or hide those unmanaged files, so finished work must be promoted into the dotfiles module before it counts as deployed.

8
flake.lock generated
View File

@@ -562,11 +562,11 @@
]
},
"locked": {
"lastModified": 1785508905,
"narHash": "sha256-pIOEPavNimXWalp4/mFzneRNlEQafeiGqWzUeDED2Wk=",
"lastModified": 1785545174,
"narHash": "sha256-XqpwTldqFQapp14aDFOxSpwnEQykahB/w/f54f6qLqA=",
"ref": "refs/heads/main",
"rev": "181dcc7a9ec16459efee09ffffb7f99386755be4",
"revCount": 36,
"rev": "99df169fbddfa121fbbf782f1a1095c8f6f6494b",
"revCount": 47,
"type": "git",
"url": "https://git.alexion.dev/alexion/skills"
},

View File

@@ -65,6 +65,7 @@
};
modules.agents.claude-code.enable = true;
modules.agents.herdr.enable = true;
modules.agents.tools.gitea-axi.enable = true;
modules.agents.pi.enable = true;

View File

@@ -30,6 +30,9 @@ These are common instructions for Alexion's agents across all scenarios.
It means: don't discount a more robust or maintainable approach just because it would take a human a long time to build.
- File names should always be lower case, unless there's a valid reason.
Established ecosystem or tool conventions count as a valid reason automatically (e.g. `README.md`, `LICENSE`, `CHANGELOG.md`, `Makefile`, `Dockerfile`, `.github/` files), without needing to ask each time.
- Do not end a response by promising or implying continuation unless the continuation is present in that same response.
If a workflow should continue, perform the next step before ending the turn.
If the workflow is paused, say that plainly instead of using a dangling transition like "continuing" or "next".
- When you discover that a belief you held about an objective fact or convention of the current project was wrong, write it down so it isn't relearned next time.
This applies whether the user corrected you or you caught the mistake yourself, and only to things that are true regardless of who is operating the project (a wrong build command, a wrong file path, a convention you guessed at instead of checking) — not personal working-style preferences or one-off task details.
Record it in that project's own AGENTS.md, not this global file, under a dedicated `## Gotchas` section (create the section if the file doesn't have one yet).

42
modules/agents/herdr.nix Normal file
View File

@@ -0,0 +1,42 @@
{
config,
lib,
pkgs,
...
}:
# Herdr, a terminal multiplexer for coding agents.
let
cfg = config.modules.agents.herdr;
user = config.user.name;
in
{
options.modules.agents.herdr.enable = lib.mkEnableOption "Herdr, a terminal multiplexer for coding agents";
config = lib.mkIf cfg.enable {
home-manager.users.${user} = {
home.packages = [ pkgs.herdr ];
xdg.configFile."herdr/config.toml".text = ''
[keys]
prefix = "ctrl+space"
detach = "prefix+d"
reload_config = "prefix+r"
new_workspace = "prefix+c"
new_tab = "prefix+shift+c"
rename_workspace = "prefix+comma"
rename_tab = "prefix+<"
split_vertical = "prefix+backslash"
split_horizontal = "prefix+minus"
switch_workspace = "prefix+1..9"
switch_tab = "prefix+shift+1..9"
focus_pane_left = "prefix+h"
focus_pane_down = "prefix+j"
focus_pane_up = "prefix+k"
focus_pane_right = "prefix+l"
[ui]
prompt_new_tab_name = false
'';
};
};
}

View File

@@ -43,7 +43,7 @@ in
settings = {
defaultProvider = "openai-codex";
defaultModel = "gpt-5.6-sol";
defaultModel = "gpt-5.5";
defaultThinkingLevel = "medium";
theme = "dark";
enableInstallTelemetry = false;