140 Commits

Author SHA1 Message Date
a77352fd81 feat: add perles to CI binary cache
All checks were successful
CI / check (push) Successful in 2m32s
CI / build-and-cache (push) Successful in 2m31s
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>
2026-03-10 20:32:13 -07:00
60888a4901 fix: block humanlayer:create_handoff from being installed
All checks were successful
CI / check (push) Successful in 2m32s
CI / build-and-cache (push) Successful in 2h54m10s
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>
2026-03-09 16:14:29 -07:00
433b41590b Update flake inputs, deduplicate beads/gastown package definitions
Some checks failed
CI / check (push) Successful in 3m39s
CI / build-and-cache (push) Has been cancelled
- 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>
2026-03-09 15:30:08 -07:00
0a85616d58 Update flake inputs, claude-code 2.1.69, doom emacs, rotate wallpaper
Some checks failed
CI / build-and-cache (push) Has been cancelled
CI / check (push) Has been cancelled
2026-03-05 14:48:14 -08:00
c85f047ee2 fix: update gastown vendorHash for Go module changes
Some checks failed
CI / check (push) Successful in 2m10s
CI / build-and-cache (push) Failing after 3m57s
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)
2026-03-05 09:04:28 -08:00
e2770617c7 emacs: add pi-coding-agent package
Some checks failed
CI / check (push) Successful in 6m50s
CI / build-and-cache (push) Failing after 4m35s
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
2026-03-04 11:35:00 -08:00
8fd702cad0 Add pi-coding-agent package, simplify Go builds with unstable.buildGoModule
Some checks failed
CI / build-and-cache (push) Has been cancelled
CI / check (push) Has been cancelled
- 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
2026-03-04 11:32:50 -08:00
c39f711662 chore: update beads 0.49.6→0.52.0 and gastown, make gastown a proper flake
All checks were successful
CI / check (push) Successful in 6m4s
CI / build-and-cache (push) Successful in 8m20s
- 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>
2026-02-18 09:44:11 -08:00
4dd53a0dd0 feat(dev): add Claude Code statusline config via activation hook
All checks were successful
CI / check (push) Successful in 3m48s
CI / build-and-cache (push) Successful in 2m27s
2026-02-17 10:32:33 -08:00
0d063557c4 fix(doom): pin org-msg to fix build after upstream force-push
Some checks failed
CI / check (push) Failing after 14m15s
CI / build-and-cache (push) Has been skipped
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>
2026-02-12 22:35:44 -08:00
9b1424b097 fix(gastown): drop town-root-detection patch merged upstream
Some checks failed
CI / check (push) Successful in 6m14s
CI / build-and-cache (boxy) (push) Failing after 9m53s
CI / build-and-cache (john-endesktop) (push) Failing after 12m32s
CI / build-and-cache (live-usb) (push) Failing after 16m14s
CI / build-and-cache (nix-book) (push) Failing after 8m48s
CI / build-and-cache (nix-deck) (push) Failing after 46m52s
CI / build-and-cache (zix790prors) (push) Failing after 23m45s
2026-02-11 08:24:29 -08:00
f323048675 fix(beads): build with Go 1.25.6 for dolt server support
Some checks failed
CI / check (push) Successful in 5m21s
CI / build-and-cache (boxy) (push) Failing after 10m30s
CI / build-and-cache (john-endesktop) (push) Failing after 8m34s
CI / build-and-cache (live-usb) (push) Failing after 27m4s
CI / build-and-cache (nix-book) (push) Failing after 8m22s
CI / build-and-cache (nix-deck) (push) Failing after 25m32s
CI / build-and-cache (zix790prors) (push) Failing after 14m38s
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>
2026-02-10 10:41:36 -08:00
87f6d5c759 feat(deps): update beads to 0.49.1 with dolt server mode, claude-code to 2.1.30
All checks were successful
CI / check (push) Successful in 5m17s
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>
2026-02-03 14:56:24 -08:00
a851c2551c fix(deps): update gastown patch and pin beads to Go 1.24 compatible version
All checks were successful
CI / check (push) Successful in 5m25s
- 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>
2026-02-03 13:18:46 -08:00
3acf9d2796 fix(gastown): regenerate statusline optimization patch with correct line numbers
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>
2026-01-31 13:59:11 -08:00
123e7d3b3a fix(gastown): repair malformed patch files for nixos-rebuild
Some checks failed
CI / check (push) Failing after 17m48s
- 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>
2026-01-31 13:20:12 -08:00
nixos_configs/crew/harry
56097aefa4 refactor(development): move gastown patches to separate files
All checks were successful
CI / check (push) Successful in 3m37s
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>
2026-01-31 09:06:05 -08:00
21a8b5c5d9 Fix bd SearchIssues inefficient WHERE IN query pattern for Dolt
All checks were successful
CI / check (push) Successful in 3m25s
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>
2026-01-29 18:29:46 -08:00
8f8582b0f3 feat(gastown): add statusline cache writes for CPU optimization
All checks were successful
CI / check (push) Successful in 3m24s
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>
2026-01-29 12:20:39 -08:00
94fb5a3e64 Fix gastown mail routing for rig-specific agent beads
All checks were successful
CI / check (push) Successful in 3m18s
- 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>
2026-01-28 17:20:03 -08:00
7df68ba8c8 Add gastown postPatch bug fixes from jt flake
All checks were successful
CI / check (push) Successful in 5m17s
- 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>
2026-01-28 16:14:52 -08:00
2799632308 Add gastown postPatch bug fixes from jt flake
- 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>
2026-01-28 16:14:06 -08:00
188d2befb0 Fix sketchybar disk usage showing incorrect percentage
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.
2026-01-27 11:32:48 -08:00
d92e4b3ddf feat(development): add perles TUI for beads 2026-01-26 17:22:28 -08:00
475a633ab7 feat(base): add watch to base role packages 2026-01-26 17:10:42 -08:00
63c3f4e84d fix(sketchybar): show disk used% instead of free%
All checks were successful
CI / check (push) Successful in 3m27s
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>
2026-01-26 16:20:31 -08:00
baf64f7f4a fix(emacs): make rbw password helper graceful when rbw unavailable
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>
2026-01-26 14:20:33 -08:00
mayor
f0b6ede7ed add dolt to development role
All checks were successful
CI / check (push) Successful in 5m50s
Required for beads dolt backend migration in Gas Town.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 11:55:33 -08:00
d872293f19 fix(gastown): add ldflags for BuiltProperly check
All checks were successful
CI / check (push) Successful in 3m57s
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>
2026-01-26 08:20:20 -08:00
hermione
65e91c20f7 fix(emacs): set org-caldav delete to never to prevent mass deletion
All checks were successful
CI / check (push) Successful in 4m5s
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>
2026-01-25 14:35:24 -08:00
hermione
01e376eac4 fix(emacs): correct org-caldav-todo-percent-states format
All checks were successful
CI / check (push) Successful in 3m35s
Format is (PERCENT "KEYWORD") not ("KEYWORD" . PERCENT).

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 14:27:17 -08:00
hermione
9c5be2e27a fix(emacs): add KILL state to org-caldav-todo-percent-states
Some checks failed
CI / check (push) Has been cancelled
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>
2026-01-25 14:26:08 -08:00
hermione
d9ffb14db5 refactor(emacs): remove DEADLINE logic, keep only CALDAV_UNTIL property
Some checks failed
CI / check (push) Has been cancelled
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>
2026-01-25 14:23:55 -08:00
hermione
07ea05afab feat(emacs): filter recurring events past CALDAV_UNTIL in agenda
Some checks failed
CI / check (push) Has been cancelled
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>
2026-01-25 14:20:44 -08:00
hermione
4f5108c9d9 fix(emacs): allow org-caldav export with broken links
All checks were successful
CI / check (push) Successful in 3m55s
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>
2026-01-25 13:16:53 -08:00
9243341ed7 fix comment
All checks were successful
CI / check (push) Successful in 4m2s
2026-01-25 12:58:10 -08:00
hermione
b729ee8c7a fix(emacs): use assoc instead of assq for UNTIL lookup in org-caldav advice
All checks were successful
CI / check (push) Successful in 3m48s
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>
2026-01-25 12:46:11 -08:00
nixos_configs/crew/hermione
ebc28cebd4 fix(emacs): improve rbw password error handling
Show clear error message when rbw entry not found instead of
embedding error text in URLs/credentials.
2026-01-25 12:46:11 -08:00
nixos_configs/crew/hermione
a98ccddab1 feat(emacs): add org-caldav UNTIL advice for recurring event end dates
Some checks failed
CI / check (push) Failing after 2m34s
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
2026-01-25 09:51:48 -08:00
hermione
0c484b6601 fix(emacs): embed credentials in URL for org-caldav auth
Some checks failed
CI / check (push) Failing after 4m14s
url-http-basic-auth-storage approach wasn't working.
Now dynamically sets org-caldav-url with user:pass embedded.
2026-01-24 17:52:02 -08:00
hermione
4853a18474 fix(emacs): correct url-http-basic-auth-storage format
Some checks failed
CI / check (push) Has been cancelled
Auth storage needs base64-encoded 'user:pass' string, not raw password.
2026-01-24 17:47:28 -08:00
hermione
8b8453a37a fix(emacs): move org-caldav sync function before use-package
Some checks failed
CI / check (push) Has been cancelled
Function must be defined before keybinding to avoid commandp error.
Added (require 'org-caldav) inside function for autoloading.
2026-01-24 17:46:02 -08:00
hermione
2b6e289b9a fix(emacs): limit org-caldav to 30 days of past events
Some checks failed
CI / check (push) Has been cancelled
Prevents downloading years of historical calendar entries.
2026-01-24 17:39:48 -08:00
hermione
70d364544f fix(emacs): change org-caldav keybinding to avoid conflict
Some checks failed
CI / check (push) Has been cancelled
Changed from SPC o C to SPC o a s (open -> agenda/calendar -> sync)
to avoid conflict with Claude Code IDE (SPC o c)
2026-01-24 17:34:07 -08:00
hermione
1ffa8524f0 fix(emacs): use rbw for org-caldav auth instead of GPG
Some checks failed
CI / check (push) Has been cancelled
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)
2026-01-24 17:27:02 -08:00
c2d286087f fix(home-manager): ensure claude/beads plugin files are writable
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
2026-01-24 17:25:05 -08:00
hermione
1172818062 feat(emacs): add org-caldav integration for Nextcloud calendar sync
Some checks failed
CI / check (push) Failing after 1m59s
- Enable org-caldav package in packages.el
- Configure base org-caldav settings (URL, timezone, sync behavior)
- Add Personal calendar two-way sync (~/org/personal-calendar.org)
- Add Tasks calendar one-way sync from todo.org
- Add keybinding SPC o C for manual sync
- Document setup requirements in config comments

Note: Conflict resolution is 'Org always wins' (org-caldav limitation).
User needs to create Nextcloud app password and ~/.authinfo.gpg.

Refs: x-5tb, x-5tb.1, x-5tb.2, x-5tb.3
2026-01-24 17:18:45 -08:00
1203662237 feat(home/development): add sqlite3 package
Some checks failed
CI / check (push) Has been cancelled
2026-01-18 08:13:16 -08:00
cc305af899 feat(dev): add gastown multi-agent workspace manager
- Add gastown flake input (non-flake, source only)
- Build gastown package using buildGoModule in development role
- Configure renovate for daily updates of gastown and beads
- Binary: gt (Gas Town CLI by Steve Yegge)
2026-01-17 13:14:12 -08:00
c06adec7d8 feat(dev): add systemd timer for beads gate check
All checks were successful
CI / check (push) Successful in 3m8s
Add periodic timer (every 5 min) that runs `bd gate check --type=timer`
across all beads workspaces with running daemons.

This enables self-scheduling molecules - workflows that can set timer
gates to schedule their own future execution (e.g., watchers that scan
Slack every 8 hours).

The timer:
- Only runs on Linux (uses systemd user services)
- Discovers workspaces via `bd daemon list`
- Silently skips if no beads daemons are running

Related: nixos-configs-1rk.2 (Time beads scheduling mechanism)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-16 09:23:25 -08:00