Extract shared package definition, add to flake packages output
and CI workflow so perles gets built and cached by Harmonia.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Skip the create_handoff command during humanlayer plugin installation
and explicitly remove it if previously installed.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Update beads and gastown flake inputs and vendorHashes
- Remove merged-upstream patches for gastown and beads
- Deduplicate beads/gastown build definitions in home role by using
callPackage to reference shared packages/ definitions
- Pin dolt to v1.82.4 (gastown requires >= 1.82.4)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The upstream gastown Go dependencies changed, causing a hash mismatch
in the fixed-output derivation. Updated vendorHash in both:
- packages/gastown/default.nix (flake packages output)
- home/roles/development/default.nix (home-manager inline build)
Add dnouri/pi-coding-agent as an Emacs frontend for the pi coding agent.
Pinned to commit 8d8158b.
- Package installed from GitHub with all .el files (includes md-ts-mode)
- Suppress grammar auto-install prompt since tree-sitter grammars are
already managed by Nix (treesit-grammars.with-all-grammars)
- Keybinding: SPC o p to launch pi-coding-agent
- Alias: M-x pi as shortcut for M-x pi-coding-agent
- Add pi-coding-agent package (v0.55.4) with multi-platform support
- Replace custom Go 1.25.6 override with nixpkgs-unstable buildGoModule
for beads and perles builds
- Update flake inputs: beads, nixpkgs-unstable, perles
- Update vendor hashes for beads and perles
- Add pi-coding-agent to development role
- beads: update to 0.52.0 (16af00d7), refresh vendorHash
- gastown: update to 35157d02, remove flake=false now that upstream has flake.nix
- gastown: add inputs.nixpkgs.follows and inputs.beads.follows to deduplicate deps
- Clean up stale comments
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The org-msg commit pinned by doom-emacs was force-pushed away.
Pin it locally to a valid commit on main branch.
Also updates nix-doom-emacs-unstraightened input.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
nixpkgs ships Go 1.25.5, but beads' dolt dependencies (dolthub/driver,
dolthub/go-icu-regex) require Go >= 1.25.6. Override Go toolchain to
1.25.6 and add ICU build dependency for dolt's regex library.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Allows KDE Connect discovery and pairing to work when logged in as
the kodi user on the media center.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
beads:
- Pin to commit 93965b4a (last before Go 1.25.6 requirement)
- Build locally with corrected vendorHash (upstream default.nix is stale)
- Enables dolt server mode support (gt-1mf.3)
claude-code: 2.1.19 → 2.1.30
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Update gastown-fix-agent-bead-address-title.patch line numbers (326→315)
for current upstream gastown source
- Remove obsolete gastown patches (rig-prefix, copydir-symlinks) that are
now handled upstream
- Pin beads to 55e733c (v0.47.2) which uses Go 1.24.0 - newer versions
require Go 1.25.6 which isn't in nixpkgs-unstable yet
- Remove beads-search-query-optimization.patch as it targets newer code
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The patch file had malformed hunk headers with incorrect line numbers
and counts, causing it to fail to apply against the locked gastown rev
(177094a2). This was NOT a flake.lock issue - gastown source was properly
locked.
Changes:
- Regenerated patch from scratch against locked gastown revision
- Re-enabled the patch in default.nix (was commented out with TODO)
- Updated comment to accurately describe the optimization
The optimization skips expensive beads queries for detached tmux sessions
and caches status line output with a 10-second TTL, reducing Dolt CPU
usage from ~70% to ~20%.
Closes: hq-0h1p9m
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Remove 'index 0000000..1111111' lines that made patches appear as new files
- Fix hunk line counts in several patches
- Add missing leading spaces to blank context lines
- Temporarily disable statusline optimization patch (needs regenerating)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Replace inline postPatch substituteInPlace calls with proper unified
diff patch files, following the pattern established by beads.
This improves maintainability:
- Each patch is in its own file with clear naming
- Patches use proper unified diff format
- Easier to review, update, and track individual fixes
- Default.nix is cleaner (237 lines of substituteInPlace -> 15 lines)
Patches included:
- gastown-fix-validate-recipient.patch
- gastown-fix-agent-bead-address-title.patch
- gastown-fix-agent-bead-rig-prefix.patch
- gastown-fix-role-home-paths.patch
- gastown-fix-town-root-detection.patch
- gastown-fix-copydir-symlinks.patch
- gastown-statusline-optimization.patch
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The Dolt backend's SearchIssues was using a two-phase query:
1. SELECT id FROM issues WHERE ... -> collect all IDs
2. SELECT * FROM issues WHERE id IN (id1, id2, ... id8000+)
With 8000+ issues, this second query with 8000+ placeholders hammers
Dolt CPU at 100%+. The fix changes SearchIssues to select all columns
directly in the first query and scan results inline.
See: hq-ihwsj
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Complete the statusline optimization by adding cache writes to all
output functions. The existing patch added cache functions and cache
reads, but never wrote to the cache.
Changes:
- Add early-return for detached sessions (return static "○ |")
- Add cache read check for attached sessions
- Add setStatusLineCache() calls in all 5 output functions:
- runWorkerStatusLine
- runMayorStatusLine
- runDeaconStatusLine
- runWitnessStatusLine
- runRefineryStatusLine
This should reduce Dolt CPU from ~70% to ~20% when agents are idle,
as tmux status lines will use cached results instead of spawning
beads queries every 5 seconds.
Testing: Run `nix switch` then monitor Dolt CPU with `top`
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add title-based lookup for hq- prefixed beads (uses title as address if contains "/")
- Add rig-specific prefix handling to parse IDs like j-java-crew-americano → java/crew/americano
- Handles crew, polecat, witness, refinery role patterns
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Fix mail router normalization in validateRecipient
- Fix agentBeadToAddress to use title field for hq- prefixed beads
- Fix crew/polecat home paths (remove incorrect /rig suffix)
- Fix town root detection (RoleUnknown instead of RoleMayor)
- Fix copyDir symlink handling
- Pin to gastown commit 177094a matching jt flake
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Fix mail router normalization in validateRecipient
- Fix agentBeadToAddress to use title field for hq- prefixed beads
- Fix crew/polecat home paths (remove incorrect /rig suffix)
- Fix town root detection (RoleUnknown instead of RoleMayor)
- Fix copyDir symlink handling
- Pin to gastown commit 177094a matching jt flake
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Monitor /System/Volumes/Data instead of / since root is a read-only
APFS snapshot with minimal usage. Also fix inverted formula that was
calculating 100-used instead of just using the capacity value directly.
Inverts the df output to show percentage used, matching the other
resource monitors (CPU, memory).
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add optional no-error parameter to my/get-rbw-password that returns nil
instead of signaling an error when rbw isn't installed or the entry is
missing. Use this for gptel API key so config loads without errors in
environments without rbw configured.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The gastown build now requires BuiltProperly=1 to be set via ldflags,
otherwise gt errors with "This binary was built with 'go build' directly".
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Sync state confusion was causing org-caldav to want to delete all
calendar entries. Setting to 'never' prevents accidental data loss.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
org-caldav needs percent mappings for all todo states. Added mappings
for TODO, IN-PROGRESS, WAIT, DONE, and KILL to prevent sync errors.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
DEADLINE doesn't limit recurring event display - agenda skip function
handles that now. Simplified advice to only store CALDAV_UNTIL property.
Also made debug logging unconditional to diagnose why some events
don't get the property.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
DEADLINE doesn't actually limit recurring event display in org-agenda.
Instead, use org-agenda-skip-function-global to filter entries where
today's date is past the CALDAV_UNTIL property.
The skip function:
- Checks for CALDAV_UNTIL property (set by caldav sync advice)
- Parses YYYYMMDD format
- Skips entry if today > UNTIL date
This properly hides expired recurring events from the agenda.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
mu4e message links in todo.org can't be resolved during iCalendar export,
causing sync to abort. Setting org-export-with-broken-links to 'mark'
allows export to continue (broken links get marked in output).
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
assq uses eq for key comparison, which can fail if the key symbols aren't
identical objects. assoc uses equal, which is what org-caldav itself uses
for rrule-props lookups (e.g., INTERVAL, FREQ).
This fixes DEADLINEs not being added to recurring events with UNTIL dates.
Also adds debug logging to help diagnose any remaining issues - will be
removed once verified working.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Implements advice around org-caldav-insert-org-event-or-todo that:
- Extracts UNTIL from rrule-props
- Adds DEADLINE without repeater (Org 9.7+ treats as recurrence end)
- Stores :CALDAV_UNTIL: property for reference
Also fixes sync command to work before org is opened by requiring
org explicitly in the sync wrapper.
Closes: x-uv5f.1
GPG isn't installed, so .authinfo.gpg approach doesn't work.
Added wrapper function my/org-caldav-sync-with-rbw that fetches
credentials from rbw before calling org-caldav-sync.
Setup: rbw add nextcloud-caldav (app password as secret)
Files copied from the nix store inherit read-only permissions, causing
subsequent home-manager activations to fail with "Permission denied".
Add rm -f before copy and chmod u+w after copy for all plugin files:
- humanlayer commands and agents
- local commands and skills
- micro-skills
- beads formulas
Executed-By: nixos_configs/crew/hermione
Rig: nixos_configs
Role: crew