Compare commits

..

15 Commits

View File

@@ -1,14 +1,15 @@
{"id":"nixos-configs-0gl","title":"Evaluate nixos-configs repo structure","description":"# Research Goal\nEvaluate the structure of nixos-configs to identify areas for improvement. The deliverable is a set of child beads—each containing prompts for deeper exploration and actionable improvement plans.\n\n## Research Methodology\nUse `/humanlayer:research_codebase_nt` pattern with parallel subagents:\n- **codebase-locator**: Find files and components\n- **codebase-analyzer**: Understand how code works\n- **codebase-pattern-finder**: Find similar implementations and patterns\n\n## Focus Areas (research all 7)\n\n| Area | Questions to Answer |\n|------|---------------------|\n| **Flake Structure** | Is flake.nix well-organized? Are inputs minimal? Module composition clear? |\n| **System Roles** | Roles properly scoped? Duplication? Consistent option patterns? |\n| **Home-Manager Roles** | Clean separation from system roles? Reusable across platforms? |\n| **Machine Configs** | Are machines DRY? Shared patterns extracted? Hardware abstractions clean? |\n| **Custom Packages** | Packages well-structured? Overlay usage optimal? |\n| **Cross-Platform** | Darwin/WSL/Steam Deck patterns consistent? Code reuse? |\n| **Scripts \u0026 Utilities** | Flake apps organized? Automation opportunities? |\n\n## Deliverables\n1. **Summary of current state** for each focus area\n2. **Child beads** for each area with improvement potential, containing:\n - Prompt: \"Use `/humanlayer:research_codebase_nt` to analyze [specific aspect]\"\n - Prompt: \"Use `/humanlayer:create_plan_nt` to plan [specific improvement]\"\n3. **Recommended priority order** for addressing improvements\n\n## Key Files to Analyze\n- `flake.nix` (9.4KB) - Primary target\n- `roles/default.nix` - System role patterns\n- `home/roles/default.nix` - Home-manager role patterns\n- `machines/*/configuration.nix` - Per-machine patterns\n- `packages/default.nix` - Custom package overlay","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-09T12:47:08.135451956-08:00","created_by":"johno","updated_at":"2026-01-10T10:37:36.380750585-08:00","closed_at":"2026-01-10T10:37:36.380750585-08:00","close_reason":"Completed via detailed sub-evaluations: Flake Structure, System Roles, Home-Manager Roles, Machine Configs, Custom Packages, Cross-Platform Patterns, Scripts \u0026 Utilities. Follow-up beads created for identified improvements.","dependencies":[{"issue_id":"nixos-configs-0gl","depends_on_id":"nixos-configs-ny8","type":"blocks","created_at":"2026-01-10T10:08:49.354981408-08:00","created_by":"johno"},{"issue_id":"nixos-configs-0gl","depends_on_id":"nixos-configs-auw","type":"blocks","created_at":"2026-01-10T10:08:49.377984171-08:00","created_by":"johno"},{"issue_id":"nixos-configs-0gl","depends_on_id":"nixos-configs-dew","type":"blocks","created_at":"2026-01-10T10:08:49.401019609-08:00","created_by":"johno"},{"issue_id":"nixos-configs-0gl","depends_on_id":"nixos-configs-pbk","type":"blocks","created_at":"2026-01-10T10:08:49.424263017-08:00","created_by":"johno"},{"issue_id":"nixos-configs-0gl","depends_on_id":"nixos-configs-und","type":"blocks","created_at":"2026-01-10T10:08:49.447363253-08:00","created_by":"johno"},{"issue_id":"nixos-configs-0gl","depends_on_id":"nixos-configs-rrb","type":"blocks","created_at":"2026-01-10T10:08:49.469936923-08:00","created_by":"johno"},{"issue_id":"nixos-configs-0gl","depends_on_id":"nixos-configs-geh","type":"blocks","created_at":"2026-01-10T10:08:49.492543435-08:00","created_by":"johno"}]} {"id":"nixos-configs-0gl","title":"Evaluate nixos-configs repo structure","description":"# Research Goal\nEvaluate the structure of nixos-configs to identify areas for improvement. The deliverable is a set of child beads—each containing prompts for deeper exploration and actionable improvement plans.\n\n## Research Methodology\nUse `/humanlayer:research_codebase_nt` pattern with parallel subagents:\n- **codebase-locator**: Find files and components\n- **codebase-analyzer**: Understand how code works\n- **codebase-pattern-finder**: Find similar implementations and patterns\n\n## Focus Areas (research all 7)\n\n| Area | Questions to Answer |\n|------|---------------------|\n| **Flake Structure** | Is flake.nix well-organized? Are inputs minimal? Module composition clear? |\n| **System Roles** | Roles properly scoped? Duplication? Consistent option patterns? |\n| **Home-Manager Roles** | Clean separation from system roles? Reusable across platforms? |\n| **Machine Configs** | Are machines DRY? Shared patterns extracted? Hardware abstractions clean? |\n| **Custom Packages** | Packages well-structured? Overlay usage optimal? |\n| **Cross-Platform** | Darwin/WSL/Steam Deck patterns consistent? Code reuse? |\n| **Scripts \u0026 Utilities** | Flake apps organized? Automation opportunities? |\n\n## Deliverables\n1. **Summary of current state** for each focus area\n2. **Child beads** for each area with improvement potential, containing:\n - Prompt: \"Use `/humanlayer:research_codebase_nt` to analyze [specific aspect]\"\n - Prompt: \"Use `/humanlayer:create_plan_nt` to plan [specific improvement]\"\n3. **Recommended priority order** for addressing improvements\n\n## Key Files to Analyze\n- `flake.nix` (9.4KB) - Primary target\n- `roles/default.nix` - System role patterns\n- `home/roles/default.nix` - Home-manager role patterns\n- `machines/*/configuration.nix` - Per-machine patterns\n- `packages/default.nix` - Custom package overlay","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-09T12:47:08.135451956-08:00","created_by":"johno","updated_at":"2026-01-10T10:37:36.380750585-08:00","closed_at":"2026-01-10T10:37:36.380750585-08:00","close_reason":"Completed via detailed sub-evaluations: Flake Structure, System Roles, Home-Manager Roles, Machine Configs, Custom Packages, Cross-Platform Patterns, Scripts \u0026 Utilities. Follow-up beads created for identified improvements.","dependencies":[{"issue_id":"nixos-configs-0gl","depends_on_id":"nixos-configs-ny8","type":"blocks","created_at":"2026-01-10T10:08:49.354981408-08:00","created_by":"johno"},{"issue_id":"nixos-configs-0gl","depends_on_id":"nixos-configs-auw","type":"blocks","created_at":"2026-01-10T10:08:49.377984171-08:00","created_by":"johno"},{"issue_id":"nixos-configs-0gl","depends_on_id":"nixos-configs-dew","type":"blocks","created_at":"2026-01-10T10:08:49.401019609-08:00","created_by":"johno"},{"issue_id":"nixos-configs-0gl","depends_on_id":"nixos-configs-pbk","type":"blocks","created_at":"2026-01-10T10:08:49.424263017-08:00","created_by":"johno"},{"issue_id":"nixos-configs-0gl","depends_on_id":"nixos-configs-und","type":"blocks","created_at":"2026-01-10T10:08:49.447363253-08:00","created_by":"johno"},{"issue_id":"nixos-configs-0gl","depends_on_id":"nixos-configs-rrb","type":"blocks","created_at":"2026-01-10T10:08:49.469936923-08:00","created_by":"johno"},{"issue_id":"nixos-configs-0gl","depends_on_id":"nixos-configs-geh","type":"blocks","created_at":"2026-01-10T10:08:49.492543435-08:00","created_by":"johno"}]}
{"id":"nixos-configs-0ov","title":"Extract shared NixOS/Darwin base config","description":"From Flake Structure evaluation: roles/default.nix and roles/darwin.nix share ~50% duplicated code (timezone, base packages, nix settings, gc config). Create roles/common.nix to reduce duplication.","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-10T10:31:22.36256057-08:00","created_by":"johno","updated_at":"2026-01-10T12:47:49.972983545-08:00","closed_at":"2026-01-10T12:47:49.972983545-08:00"} {"id":"nixos-configs-0ov","title":"Extract shared NixOS/Darwin base config","description":"From Flake Structure evaluation: roles/default.nix and roles/darwin.nix share ~50% duplicated code (timezone, base packages, nix settings, gc config). Create roles/common.nix to reduce duplication.","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-10T10:31:22.36256057-08:00","created_by":"johno","updated_at":"2026-01-10T12:47:49.972983545-08:00","closed_at":"2026-01-10T12:47:49.972983545-08:00"}
{"id":"nixos-configs-0q7","title":"Promote john-endesktop to k3s leader node","description":"Migrate the k3s control plane from nucdeb1 to john-endesktop. This involves promoting john-endesktop from worker to leader and demoting/removing nucdeb1 from leader role.","status":"open","priority":2,"issue_type":"task","created_at":"2026-01-10T19:13:02.701421475-08:00","created_by":"johno","updated_at":"2026-01-10T19:13:02.701421475-08:00","dependencies":[{"issue_id":"nixos-configs-0q7","depends_on_id":"nixos-configs-71w","type":"blocks","created_at":"2026-01-10T19:13:11.769813321-08:00","created_by":"johno"}]} {"id":"nixos-configs-0q7","title":"Promote john-endesktop to k3s leader node","description":"Migrate the k3s control plane from nucdeb1 to john-endesktop. This involves promoting john-endesktop from worker to leader and demoting/removing nucdeb1 from leader role.","status":"open","priority":2,"issue_type":"task","created_at":"2026-01-10T19:13:02.701421475-08:00","created_by":"johno","updated_at":"2026-01-10T19:13:02.701421475-08:00","dependencies":[{"issue_id":"nixos-configs-0q7","depends_on_id":"nixos-configs-71w","type":"blocks","created_at":"2026-01-10T19:13:11.769813321-08:00","created_by":"johno"}],"comments":[{"id":9,"issue_id":"nixos-configs-0q7","author":"johno","text":"## k3s-upgrade Label Requirement\n\nNixOS nodes must be labeled with `k3s-upgrade=disabled` to exclude them from the system-upgrade-controller:\n\n```bash\nkubectl label node \u003cnode-name\u003e k3s-upgrade=disabled\n```\n\nThe system-upgrade-controller tries to upgrade k3s by replacing the binary in-place, which fails on NixOS because /nix/store is immutable. On NixOS, k3s upgrades happen through updating nixpkgs and rebuilding.\n\nThe agent-plan has been patched to exclude nodes with this label.","created_at":"2026-01-11T04:10:09Z"}]}
{"id":"nixos-configs-0vf","title":"Fix conflicting audio role config","description":"From System Roles evaluation: The audio role has conflicting services.pulseaudio config present while pipewire is enabled. PipeWire replaces PulseAudio, so the pulseaudio config should be removed.","notes":"PR: https://git.johnogle.info/johno/nixos-configs/pulls/10","status":"in_review","priority":2,"issue_type":"bug","created_at":"2026-01-10T10:31:25.821735114-08:00","created_by":"johno","updated_at":"2026-01-10T12:50:55.226084308-08:00"} {"id":"nixos-configs-0vf","title":"Fix conflicting audio role config","description":"From System Roles evaluation: The audio role has conflicting services.pulseaudio config present while pipewire is enabled. PipeWire replaces PulseAudio, so the pulseaudio config should be removed.","notes":"PR: https://git.johnogle.info/johno/nixos-configs/pulls/10","status":"in_review","priority":2,"issue_type":"bug","created_at":"2026-01-10T10:31:25.821735114-08:00","created_by":"johno","updated_at":"2026-01-10T12:50:55.226084308-08:00"}
{"id":"nixos-configs-1wd","title":"When building the USB image, find a way to pre-run doom sync","description":"After booting into a live usb, if I want to run emacs I must first run `doom sync` - which also requires internet access. This is time consuming and annoying.","acceptance_criteria":"Upon booting into a live usb image, `emacs -nw` opens emacs to the doom splash screen","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-10T09:10:21.469199401-08:00","created_by":"johno","updated_at":"2026-01-10T10:30:24.839041681-08:00","closed_at":"2026-01-10T10:30:24.839041681-08:00","close_reason":"Implemented pre-built Doom Emacs for live USB using nix-doom-emacs-unstraightened. Added new 'prebuiltDoom' option to the emacs role that builds all Doom packages at nix build time, eliminating the need for doom sync after boot."} {"id":"nixos-configs-1wd","title":"When building the USB image, find a way to pre-run doom sync","description":"After booting into a live usb, if I want to run emacs I must first run `doom sync` - which also requires internet access. This is time consuming and annoying.","acceptance_criteria":"Upon booting into a live usb image, `emacs -nw` opens emacs to the doom splash screen","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-10T09:10:21.469199401-08:00","created_by":"johno","updated_at":"2026-01-10T10:30:24.839041681-08:00","closed_at":"2026-01-10T10:30:24.839041681-08:00","close_reason":"Implemented pre-built Doom Emacs for live USB using nix-doom-emacs-unstraightened. Added new 'prebuiltDoom' option to the emacs role that builds all Doom packages at nix build time, eliminating the need for doom sync after boot."}
{"id":"nixos-configs-265","title":"Mu4e emails sending without body content","notes":"Gitea issue #2: https://git.johnogle.info/johno/nixos-configs/issues/2\n\nPR: https://git.johnogle.info/johno/nixos-configs/pulls/4","status":"closed","priority":2,"issue_type":"bug","created_at":"2026-01-10T12:27:40.01586007-08:00","created_by":"johno","updated_at":"2026-01-10T12:53:10.467933615-08:00","closed_at":"2026-01-10T12:53:10.467933615-08:00","close_reason":"Duplicate of nixos-configs-9l8"} {"id":"nixos-configs-265","title":"Mu4e emails sending without body content","notes":"Gitea issue #2: https://git.johnogle.info/johno/nixos-configs/issues/2\n\nPR: https://git.johnogle.info/johno/nixos-configs/pulls/4","status":"closed","priority":2,"issue_type":"bug","created_at":"2026-01-10T12:27:40.01586007-08:00","created_by":"johno","updated_at":"2026-01-10T12:53:10.467933615-08:00","closed_at":"2026-01-10T12:53:10.467933615-08:00","close_reason":"Duplicate of nixos-configs-9l8"}
{"id":"nixos-configs-2hq","title":"Enable CI for nixos-configs repo","description":"Set up continuous integration for the nixos-configs repository.\n\n## Goals\n- Validate flake.nix syntax and structure on PRs/pushes\n- Run `nix flake check` to catch evaluation errors early\n- Consider building key configurations to catch build failures\n\n## Considerations\n- Choose CI platform (GitHub Actions, etc.)\n- Cache nix store for faster builds\n- Decide which configurations to build (all vs critical subset)","notes":"PR: https://git.johnogle.info/johno/nixos-configs/pulls/17","status":"in_review","priority":2,"issue_type":"task","created_at":"2026-01-10T11:16:17.069453458-08:00","created_by":"johno","updated_at":"2026-01-10T14:19:51.792675206-08:00","comments":[{"id":1,"issue_id":"nixos-configs-2hq","author":"johno","text":"PR created: https://git.johnogle.info/johno/nixos-configs/pulls/17","created_at":"2026-01-10T21:08:52Z"}]} {"id":"nixos-configs-2hq","title":"Enable CI for nixos-configs repo","description":"Set up continuous integration for the nixos-configs repository.\n\n## Goals\n- Validate flake.nix syntax and structure on PRs/pushes\n- Run `nix flake check` to catch evaluation errors early\n- Consider building key configurations to catch build failures\n\n## Considerations\n- Choose CI platform (GitHub Actions, etc.)\n- Cache nix store for faster builds\n- Decide which configurations to build (all vs critical subset)","notes":"PR: https://git.johnogle.info/johno/nixos-configs/pulls/17","status":"in_review","priority":2,"issue_type":"task","created_at":"2026-01-10T11:16:17.069453458-08:00","created_by":"johno","updated_at":"2026-01-10T14:19:51.792675206-08:00","comments":[{"id":1,"issue_id":"nixos-configs-2hq","author":"johno","text":"PR created: https://git.johnogle.info/johno/nixos-configs/pulls/17","created_at":"2026-01-10T21:08:52Z"}]}
{"id":"nixos-configs-2mk","title":"Remove wixos (WSL) configuration","description":"WSL is no longer used. Remove the wixos machine configuration entirely from the flake and any associated home-manager config.","notes":"PR: https://git.johnogle.info/johno/nixos-configs/pulls/20","status":"in_review","priority":3,"issue_type":"task","created_at":"2026-01-10T10:31:28.363467309-08:00","created_by":"johno","updated_at":"2026-01-10T14:19:53.685761099-08:00","comments":[{"id":5,"issue_id":"nixos-configs-2mk","author":"johno","text":"PR: https://git.johnogle.info/johno/nixos-configs/pulls/20","created_at":"2026-01-10T21:11:29Z"}]} {"id":"nixos-configs-2mk","title":"Remove wixos (WSL) configuration","description":"WSL is no longer used. Remove the wixos machine configuration entirely from the flake and any associated home-manager config.","notes":"PR: https://git.johnogle.info/johno/nixos-configs/pulls/20","status":"in_review","priority":3,"issue_type":"task","created_at":"2026-01-10T10:31:28.363467309-08:00","created_by":"johno","updated_at":"2026-01-10T14:19:53.685761099-08:00","comments":[{"id":5,"issue_id":"nixos-configs-2mk","author":"johno","text":"PR: https://git.johnogle.info/johno/nixos-configs/pulls/20","created_at":"2026-01-10T21:11:29Z"}]}
{"id":"nixos-configs-45m","title":"Migrate nucdeb2 from Proxmox+Debian to NixOS","description":"Replace the Proxmox+Debian installation on nucdeb2 with NixOS. Document the migration process thoroughly to serve as a guide for migrating nucdeb1 and nucdeb3.","status":"open","priority":2,"issue_type":"task","created_at":"2026-01-10T19:13:03.623201609-08:00","created_by":"johno","updated_at":"2026-01-10T19:13:03.623201609-08:00"} {"id":"nixos-configs-39m","title":"parallel_beads PR description should include validation steps completed","notes":"Gitea issue: https://git.johnogle.info/johno/nixos-configs/issues/13\n\nWhen creating PRs through parallel_beads, the PR description should include what validation steps have been completed (e.g., tests run, linting passed, etc.).","status":"open","priority":2,"issue_type":"feature","created_at":"2026-01-10T21:06:56.358336921-08:00","created_by":"johno","updated_at":"2026-01-10T21:06:56.358336921-08:00"}
{"id":"nixos-configs-4yz","title":"Migrate k3s cluster nodes to NixOS","status":"open","priority":2,"issue_type":"epic","created_at":"2026-01-10T19:12:50.908956625-08:00","created_by":"johno","updated_at":"2026-01-10T19:12:50.908956625-08:00"} {"id":"nixos-configs-45m","title":"Migrate nucdeb2 from Proxmox+Debian to NixOS","description":"Replace the Proxmox+Debian installation on nucdeb2 with NixOS. Document the migration process thoroughly to serve as a guide for migrating nucdeb1 and nucdeb3.","status":"open","priority":2,"issue_type":"task","created_at":"2026-01-10T19:13:03.623201609-08:00","created_by":"johno","updated_at":"2026-01-10T19:13:03.623201609-08:00","dependencies":[{"issue_id":"nixos-configs-45m","depends_on_id":"nixos-configs-0q7","type":"blocks","created_at":"2026-01-10T19:13:12.894453357-08:00","created_by":"johno"}],"comments":[{"id":11,"issue_id":"nixos-configs-45m","author":"johno","text":"## k3s-upgrade Label Requirement\n\nWhen nucdeb2 is migrated to NixOS and running k3s, it must be labeled with `k3s-upgrade=disabled`:\n\n```bash\nkubectl label node nucdeb2 k3s-upgrade=disabled\n```\n\nThis excludes it from the system-upgrade-controller, which tries to upgrade k3s by replacing the binary in-place. This fails on NixOS because /nix/store is immutable. On NixOS, k3s upgrades happen through updating nixpkgs and rebuilding.","created_at":"2026-01-11T04:10:24Z"}]}
{"id":"nixos-configs-71w","title":"Create k3s-node role and apply to john-endesktop as worker","description":"Create a reusable k3s-node NixOS role/module. Apply it to john-endesktop configured as a worker node joining the existing cluster.","status":"open","priority":2,"issue_type":"task","created_at":"2026-01-10T19:13:01.944871413-08:00","created_by":"johno","updated_at":"2026-01-10T19:13:01.944871413-08:00"} {"id":"nixos-configs-4yz","title":"Migrate k3s cluster nodes to NixOS","status":"in_progress","priority":2,"issue_type":"epic","created_at":"2026-01-10T19:12:50.908956625-08:00","created_by":"johno","updated_at":"2026-01-10T19:13:41.525993086-08:00","dependencies":[{"issue_id":"nixos-configs-4yz","depends_on_id":"nixos-configs-uje","type":"blocks","created_at":"2026-01-10T19:13:59.246251945-08:00","created_by":"johno"}]}
{"id":"nixos-configs-71w","title":"Create k3s-node role and apply to john-endesktop as worker","description":"Create a reusable k3s-node NixOS role/module. Apply it to john-endesktop configured as a worker node joining the existing cluster.","notes":"## Research Notes (2026-01-10)\n\n### Current State\n- No k3s service configuration exists in codebase\n- john-endesktop is currently NFS server providing storage to external k3s cluster\n- kubectl home role exists at `home/roles/kubectl/`\n- origin/k3s branch has prior work using SOPS (not wanted)\n\n### Implementation Requirements\n1. Create `roles/k3s-node/default.nix` with options:\n - `enable` - Enable k3s\n - `role` - \"server\" or \"agent\" (default: agent)\n - `serverAddr` - URL to join (default for agent: https://10.0.0.222:6443)\n - `tokenFile` - Path to token (default: /etc/k3s/token)\n - `extraFlags` - Additional k3s flags\n - `gracefulNodeShutdown` - Enable graceful shutdown\n\n2. Add firewall rules:\n - TCP: 6443 (API), 2379-2380 (etcd HA)\n - UDP: 8472 (flannel VXLAN)\n\n3. Import in `roles/default.nix`\n\n4. Enable on john-endesktop as agent\n\n### Token Storage\nUse Bitwarden + bootstrap script (consistent with kubectl role):\n```bash\nsudo mkdir -p /etc/k3s\nrbw get k3s-cluster-token | sudo tee /etc/k3s/token \u003e /dev/null\nsudo chmod 600 /etc/k3s/token\n```\n\n### Key Files\n- `roles/bluetooth/default.nix` - Simple role pattern\n- `roles/nvidia/default.nix` - Complex role pattern\n- `machines/john-endesktop/configuration.nix` - Host to update\n\n### Research Doc\n`thoughts/shared/research/2026-01-10-k3s-node-role-requirements.md`","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-10T19:13:01.944871413-08:00","created_by":"johno","updated_at":"2026-01-10T20:09:38.740416079-08:00","closed_at":"2026-01-10T20:09:38.740416079-08:00","close_reason":"Implemented k3s-node role and enabled on john-endesktop as agent. Node joined cluster successfully."}
{"id":"nixos-configs-7hd","title":"Add Claude skill for parallel bead processing workflow","description":"## Summary\nAdd a Claude skill to the home development role that orchestrates parallel bead processing using subagents.\n\n## Workflow\n\n### Phase 1: Selection\n1. Run `bd ready` to get list of all ready beads\n2. Prompt user to select which beads they want to work on (multi-select)\n\n### Phase 2: Parallel Implementation (subagents)\nFor each selected bead, spin up a subagent responsible for:\n1. Creating a branch/worktree for the bead (e.g., `git worktree add`)\n2. Working on the bead until its acceptance criteria are met\n3. Committing and pushing the changes to the branch\n4. Opening a PR to merge those changes\n - PR description must reference the bead ID\n - If the bead references an external issue number (e.g., GitHub issue), include that in the PR description as well\n\n### Phase 3: Parallel Review (subagents)\nSpin up another set of subagents to:\n1. Read each PR and its changes\n2. Leave review comments on the PR\n\n### Phase 4: Cleanup \u0026 Summary\n1. Clean up the worktrees\n2. Provide links and summaries to each PR\n3. Include failure status if any subagent was unable to make progress\n\n## Acceptance Criteria\n- [ ] Skill is added to home development role configuration\n- [ ] Skill prompts user with multi-select for bead selection\n- [ ] Subagents create isolated worktrees for each bead\n- [ ] Subagents work until acceptance criteria met or report blockers\n- [ ] Changes are committed and pushed\n- [ ] PRs are opened automatically\n- [ ] PR descriptions reference the bead ID\n- [ ] PR descriptions include linked external issue numbers from the bead\n- [ ] Review subagents provide meaningful feedback\n- [ ] Worktrees are cleaned up after completion\n- [ ] Final summary includes PR links, status, and any failures\n\n## Location\n`home/roles/development/` or appropriate skill location for Claude skills\n\n## Notes\n- Consider error handling for subagent failures\n- Consider parallelism limits to avoid overwhelming resources\n- Should integrate with existing beads workflow (`bd` commands)","status":"closed","priority":2,"issue_type":"feature","created_at":"2026-01-10T10:47:06.688785671-08:00","created_by":"johno","updated_at":"2026-01-10T12:47:29.543885634-08:00","closed_at":"2026-01-10T12:47:29.543885634-08:00"} {"id":"nixos-configs-7hd","title":"Add Claude skill for parallel bead processing workflow","description":"## Summary\nAdd a Claude skill to the home development role that orchestrates parallel bead processing using subagents.\n\n## Workflow\n\n### Phase 1: Selection\n1. Run `bd ready` to get list of all ready beads\n2. Prompt user to select which beads they want to work on (multi-select)\n\n### Phase 2: Parallel Implementation (subagents)\nFor each selected bead, spin up a subagent responsible for:\n1. Creating a branch/worktree for the bead (e.g., `git worktree add`)\n2. Working on the bead until its acceptance criteria are met\n3. Committing and pushing the changes to the branch\n4. Opening a PR to merge those changes\n - PR description must reference the bead ID\n - If the bead references an external issue number (e.g., GitHub issue), include that in the PR description as well\n\n### Phase 3: Parallel Review (subagents)\nSpin up another set of subagents to:\n1. Read each PR and its changes\n2. Leave review comments on the PR\n\n### Phase 4: Cleanup \u0026 Summary\n1. Clean up the worktrees\n2. Provide links and summaries to each PR\n3. Include failure status if any subagent was unable to make progress\n\n## Acceptance Criteria\n- [ ] Skill is added to home development role configuration\n- [ ] Skill prompts user with multi-select for bead selection\n- [ ] Subagents create isolated worktrees for each bead\n- [ ] Subagents work until acceptance criteria met or report blockers\n- [ ] Changes are committed and pushed\n- [ ] PRs are opened automatically\n- [ ] PR descriptions reference the bead ID\n- [ ] PR descriptions include linked external issue numbers from the bead\n- [ ] Review subagents provide meaningful feedback\n- [ ] Worktrees are cleaned up after completion\n- [ ] Final summary includes PR links, status, and any failures\n\n## Location\n`home/roles/development/` or appropriate skill location for Claude skills\n\n## Notes\n- Consider error handling for subagent failures\n- Consider parallelism limits to avoid overwhelming resources\n- Should integrate with existing beads workflow (`bd` commands)","status":"closed","priority":2,"issue_type":"feature","created_at":"2026-01-10T10:47:06.688785671-08:00","created_by":"johno","updated_at":"2026-01-10T12:47:29.543885634-08:00","closed_at":"2026-01-10T12:47:29.543885634-08:00"}
{"id":"nixos-configs-85h","title":"Iterate parallel beads skill","notes":"Gitea issue #12: https://git.johnogle.info/johno/nixos-configs/issues/12\n\nAfter opening a PR, instead of closing the bead we should mark it with 'in review' status. The PR should be included in the bead notes.\n\nAlso want an additional skill to reconcile beads with PRs - if a PR is merged then the bead should be closed.\n\nPR: https://git.johnogle.info/johno/nixos-configs/pulls/14","status":"closed","priority":2,"issue_type":"feature","created_at":"2026-01-10T12:27:39.251088165-08:00","created_by":"johno","updated_at":"2026-01-10T12:43:47.825032797-08:00","closed_at":"2026-01-10T12:43:47.825032797-08:00","close_reason":"PR merged: https://git.johnogle.info/johno/nixos-configs/pulls/14"} {"id":"nixos-configs-85h","title":"Iterate parallel beads skill","notes":"Gitea issue #12: https://git.johnogle.info/johno/nixos-configs/issues/12\n\nAfter opening a PR, instead of closing the bead we should mark it with 'in review' status. The PR should be included in the bead notes.\n\nAlso want an additional skill to reconcile beads with PRs - if a PR is merged then the bead should be closed.\n\nPR: https://git.johnogle.info/johno/nixos-configs/pulls/14","status":"closed","priority":2,"issue_type":"feature","created_at":"2026-01-10T12:27:39.251088165-08:00","created_by":"johno","updated_at":"2026-01-10T12:43:47.825032797-08:00","closed_at":"2026-01-10T12:43:47.825032797-08:00","close_reason":"PR merged: https://git.johnogle.info/johno/nixos-configs/pulls/14"}
{"id":"nixos-configs-9l8","title":"Mu4e emails aren't sending body content","description":"I tried to send an email to Anthony from The Springs and the to, cc, subject all worked as expected. But the body I wrote was totally missing.\n\nSource: Gitea issue #2","notes":"Source: Gitea issue #2\n\nPR: https://git.johnogle.info/johno/nixos-configs/pulls/4","status":"in_review","priority":2,"issue_type":"bug","created_at":"2026-01-10T10:07:08.107097147-08:00","created_by":"johno","updated_at":"2026-01-10T12:53:09.834584193-08:00"} {"id":"nixos-configs-9l8","title":"Mu4e emails aren't sending body content","description":"I tried to send an email to Anthony from The Springs and the to, cc, subject all worked as expected. But the body I wrote was totally missing.\n\nSource: Gitea issue #2","notes":"Source: Gitea issue #2\n\nPR: https://git.johnogle.info/johno/nixos-configs/pulls/4","status":"in_review","priority":2,"issue_type":"bug","created_at":"2026-01-10T10:07:08.107097147-08:00","created_by":"johno","updated_at":"2026-01-10T12:53:09.834584193-08:00"}
@@ -20,6 +21,7 @@
{"id":"nixos-configs-fkt","title":"Parameterize hardcoded values in roles","description":"From System Roles evaluation: Several roles have hardcoded values that should be configurable:\n- printing role: hardcoded printer URI (ipp://brother.oglehome/ipp/print)\n- nfs-mounts: hardcoded NFS server IP (10.0.0.43)\n- virtualisation: hardcoded 'johno' for docker group","notes":"PR: https://git.johnogle.info/johno/nixos-configs/pulls/19","status":"in_review","priority":3,"issue_type":"task","created_at":"2026-01-10T10:31:25.104059999-08:00","created_by":"johno","updated_at":"2026-01-10T14:19:54.669071523-08:00","comments":[{"id":2,"issue_id":"nixos-configs-fkt","author":"johno","text":"PR: https://git.johnogle.info/johno/nixos-configs/pulls/19","created_at":"2026-01-10T21:10:25Z"}]} {"id":"nixos-configs-fkt","title":"Parameterize hardcoded values in roles","description":"From System Roles evaluation: Several roles have hardcoded values that should be configurable:\n- printing role: hardcoded printer URI (ipp://brother.oglehome/ipp/print)\n- nfs-mounts: hardcoded NFS server IP (10.0.0.43)\n- virtualisation: hardcoded 'johno' for docker group","notes":"PR: https://git.johnogle.info/johno/nixos-configs/pulls/19","status":"in_review","priority":3,"issue_type":"task","created_at":"2026-01-10T10:31:25.104059999-08:00","created_by":"johno","updated_at":"2026-01-10T14:19:54.669071523-08:00","comments":[{"id":2,"issue_id":"nixos-configs-fkt","author":"johno","text":"PR: https://git.johnogle.info/johno/nixos-configs/pulls/19","created_at":"2026-01-10T21:10:25Z"}]}
{"id":"nixos-configs-geh","title":"Evaluate Scripts \u0026 Utilities","description":"# Investigation: Scripts \u0026 Utilities\n\n## Questions to Answer\n- Are flake apps organized?\n- Are there automation opportunities?\n- Are scripts discoverable and documented?\n\n## Key Files\n- Flake apps definitions\n- Shell scripts in the repo\n- Utility modules\n\n## Approach\n1. Use `/humanlayer:research_codebase_nt` to analyze scripts and utilities\n2. Identify missing automation opportunities\n3. Use `/humanlayer:create_plan_nt` to plan improvements","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-10T10:08:26.9906695-08:00","created_by":"johno","updated_at":"2026-01-10T10:11:53.187286416-08:00","closed_at":"2026-01-10T10:11:53.187286416-08:00","close_reason":"# Scripts \u0026 Utilities Evaluation\n\n## Summary\nThe NixOS config repository has a well-organized scripts and utilities system with good practices in place.\n\n## Flake Apps (4 available apps)\nAll apps defined in flake.nix, cross-platform (x86_64-linux, aarch64-linux, aarch64-darwin):\n- update-doomemacs: Updates DoomEmacs to latest commit with SHA256 refresh\n- update-claude-code: Updates claude-code package from Homebrew cask (supports --dry-run)\n- rotate-wallpaper: Cycles through wallpaper index\n- upgrade: Meta-script updating flake + doom + claude + wallpaper\n\n### Architecture Strengths\n- Uses writeShellScriptBin with explicit dependency paths via makeBinPath\n- Common dependencies (curl, jq, nix, git, sed, grep, coreutils, gawk) properly managed\n- All scripts use set -euo pipefail for safety\n\n## Standalone Scripts (2 root-level)\n- bootstrap.sh: Initial system setup from remote flake\n- build-liveusb.sh: Builds live USB ISO\n\n## Custom Packages (/packages/) - 5 packages\n1. claude-code - Multi-platform binary distribution with GCS URLs\n2. tea-rbw - Wrapper around tea integrating with rbw for auth\n3. app-launcher-server - Python HTTP server for launching allowlisted apps\n4. vulkan-hdr-layer - HDR graphics layer\n5. perles - Go-based TUI for Beads issue tracking\n\n## Recommendations\nMedium Priority:\n- Add help flags to all flake apps for consistency\n- Consider adding nix run .#help app listing all available apps\n\nLow Priority:\n- Move bootstrap.sh and build-liveusb.sh to flake apps\n- Add comments to packages/default.nix describing each package\n\n## Missing Automation Opportunities\n1. No auto-update mechanism (could add CI job or systemd timer)\n2. No pre-commit hooks for Nix syntax validation\n3. No flake.lock update notifications\n\n## Conclusion\nWell-designed scripts/utilities system using good Nix idioms. The flake apps pattern provides cross-platform consistency. Main gap is documentation/discoverability (minor for personal config). No blocking issues."} {"id":"nixos-configs-geh","title":"Evaluate Scripts \u0026 Utilities","description":"# Investigation: Scripts \u0026 Utilities\n\n## Questions to Answer\n- Are flake apps organized?\n- Are there automation opportunities?\n- Are scripts discoverable and documented?\n\n## Key Files\n- Flake apps definitions\n- Shell scripts in the repo\n- Utility modules\n\n## Approach\n1. Use `/humanlayer:research_codebase_nt` to analyze scripts and utilities\n2. Identify missing automation opportunities\n3. Use `/humanlayer:create_plan_nt` to plan improvements","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-10T10:08:26.9906695-08:00","created_by":"johno","updated_at":"2026-01-10T10:11:53.187286416-08:00","closed_at":"2026-01-10T10:11:53.187286416-08:00","close_reason":"# Scripts \u0026 Utilities Evaluation\n\n## Summary\nThe NixOS config repository has a well-organized scripts and utilities system with good practices in place.\n\n## Flake Apps (4 available apps)\nAll apps defined in flake.nix, cross-platform (x86_64-linux, aarch64-linux, aarch64-darwin):\n- update-doomemacs: Updates DoomEmacs to latest commit with SHA256 refresh\n- update-claude-code: Updates claude-code package from Homebrew cask (supports --dry-run)\n- rotate-wallpaper: Cycles through wallpaper index\n- upgrade: Meta-script updating flake + doom + claude + wallpaper\n\n### Architecture Strengths\n- Uses writeShellScriptBin with explicit dependency paths via makeBinPath\n- Common dependencies (curl, jq, nix, git, sed, grep, coreutils, gawk) properly managed\n- All scripts use set -euo pipefail for safety\n\n## Standalone Scripts (2 root-level)\n- bootstrap.sh: Initial system setup from remote flake\n- build-liveusb.sh: Builds live USB ISO\n\n## Custom Packages (/packages/) - 5 packages\n1. claude-code - Multi-platform binary distribution with GCS URLs\n2. tea-rbw - Wrapper around tea integrating with rbw for auth\n3. app-launcher-server - Python HTTP server for launching allowlisted apps\n4. vulkan-hdr-layer - HDR graphics layer\n5. perles - Go-based TUI for Beads issue tracking\n\n## Recommendations\nMedium Priority:\n- Add help flags to all flake apps for consistency\n- Consider adding nix run .#help app listing all available apps\n\nLow Priority:\n- Move bootstrap.sh and build-liveusb.sh to flake apps\n- Add comments to packages/default.nix describing each package\n\n## Missing Automation Opportunities\n1. No auto-update mechanism (could add CI job or systemd timer)\n2. No pre-commit hooks for Nix syntax validation\n3. No flake.lock update notifications\n\n## Conclusion\nWell-designed scripts/utilities system using good Nix idioms. The flake apps pattern provides cross-platform consistency. Main gap is documentation/discoverability (minor for personal config). No blocking issues."}
{"id":"nixos-configs-is4","title":"Extend nvidia role to include driver configuration","description":"From System Roles evaluation: The current roles.nvidia only handles packages, not driver configuration. The hardware.nvidia block is duplicated in zix790prors and wixos. Extend the role to include driver config with options for open driver, power management, etc.","notes":"PR: https://git.johnogle.info/johno/nixos-configs/pulls/9","status":"in_review","priority":2,"issue_type":"task","created_at":"2026-01-10T10:31:24.157222208-08:00","created_by":"johno","updated_at":"2026-01-10T12:50:57.214398872-08:00"} {"id":"nixos-configs-is4","title":"Extend nvidia role to include driver configuration","description":"From System Roles evaluation: The current roles.nvidia only handles packages, not driver configuration. The hardware.nvidia block is duplicated in zix790prors and wixos. Extend the role to include driver config with options for open driver, power management, etc.","notes":"PR: https://git.johnogle.info/johno/nixos-configs/pulls/9","status":"in_review","priority":2,"issue_type":"task","created_at":"2026-01-10T10:31:24.157222208-08:00","created_by":"johno","updated_at":"2026-01-10T12:50:57.214398872-08:00"}
{"id":"nixos-configs-lni","title":"Tune kube-scheduler to weight memory over balanced allocation","description":"After making john-endesktop the primary control-plane node, configure kube-scheduler to:\n\n1. Disable NodeResourcesBalancedAllocation plugin (causes scheduler to prefer 'balanced' nodes even when overutilized)\n2. Configure NodeResourcesFit to use LeastAllocated strategy\n3. Weight memory higher than CPU in scoring (john-endesktop has 24Gi RAM vs 8Gi on other nodes)\n\nThis requires modifying /etc/rancher/k3s/config.yaml and creating a scheduler-config.yaml on the control-plane node(s).\n\nReference: https://kubernetes.io/docs/reference/scheduling/config/","status":"open","priority":3,"issue_type":"task","created_at":"2026-01-11T15:33:05.775928748-08:00","created_by":"johno","updated_at":"2026-01-11T15:33:05.775928748-08:00","dependencies":[{"issue_id":"nixos-configs-lni","depends_on_id":"nixos-configs-0q7","type":"blocks","created_at":"2026-01-11T15:33:10.986737834-08:00","created_by":"johno"}]}
{"id":"nixos-configs-ny8","title":"Evaluate Flake Structure","description":"# Investigation: Flake Structure\n\n## Questions to Answer\n- Is flake.nix well-organized?\n- Are inputs minimal and up-to-date?\n- Is module composition clear?\n\n## Key Files\n- `flake.nix` (9.4KB) - Primary target\n\n## Approach\n1. Use `/humanlayer:research_codebase_nt` to analyze flake.nix organization\n2. Identify unnecessary inputs or outdated patterns\n3. Use `/humanlayer:create_plan_nt` to plan improvements if needed","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-10T10:08:22.006574928-08:00","created_by":"johno","updated_at":"2026-01-10T10:11:04.339971068-08:00","closed_at":"2026-01-10T10:11:04.339971068-08:00","close_reason":"## Flake Structure Evaluation Summary\n\n### Overall Assessment: Well-Organized\n\nThe flake.nix is reasonably well-organized for a personal NixOS configuration managing multiple machines across different platforms (NixOS, Darwin, Steam Deck).\n\n---\n\n### Inputs Analysis (11 inputs)\n\n**Essential Inputs (correctly configured):**\n- `nixpkgs` (25.11 stable) - Primary nixpkgs\n- `nixpkgs-unstable` - For bleeding-edge packages\n- `home-manager` / `home-manager-unstable` - Properly follows respective nixpkgs\n- `nix-darwin` - For macOS support, follows nixpkgs\n- `nixos-wsl` - For WSL support\n\n**Specialized Inputs (justified):**\n- `plasma-manager` / `plasma-manager-unstable` - KDE configuration\n- `jovian` - Steam Deck support (follows nixpkgs-unstable)\n- `beads` - Task management tooling\n\n**Custom/Private Inputs:**\n- `google-cookie-retrieval` - Personal tool from git.johnogle.info\n\n**Note:** All inputs properly use `follows` for nixpkgs deduplication - this is a best practice.\n\n---\n\n### Module Composition\n\n**Good Patterns:**\n1. **Role-based architecture** - Both system (`roles/`) and home-manager (`home/roles/`) use a role pattern with `mkEnableOption`\n2. **Machine separation** - Each machine has its own `configuration.nix` under `machines/\u003cname\u003e/`\n3. **Stable/Unstable separation** - `nixosModules` vs `nixosModulesUnstable` for different base systems\n4. **Platform separation** - `darwinModules` for macOS-specific configuration\n5. **Overlay pattern** - Clean overlay providing `pkgs.unstable` and `pkgs.custom`\n\n**Machine Coverage:**\n- 7 NixOS systems: nix-book, boxy, wixos, zix790prors, live-usb, nix-deck, john-endesktop\n- 1 Darwin system: johno-macbookpro\n\n---\n\n### Observations\n\n**Strengths:**\n1. Consistent structure across all machine definitions\n2. Home-manager properly integrated with `useGlobalPkgs = true`\n3. Custom packages accessible via `pkgs.custom`\n4. Flake apps for common maintenance tasks (update-doomemacs, upgrade, etc.)\n5. Compatibility shim for bitwarden-\u003ebitwarden-desktop rename\n\n**Minor Issues:**\n1. `wixos` and `zix790prors` include `inputs.home-manager.nixosModules.home-manager` twice (already in nixosModules)\n2. Description is generic (\"A very basic flake\") - could be more descriptive\n3. Some code duplication between nixosModules and nixosModulesUnstable overlays\n\n**Not Issues:**\n- Duplicate plasma-manager inputs (stable/unstable) are intentional for different nixpkgs bases\n\n---\n\n### Recommendations (Optional)\n\n1. **Low priority:** Remove duplicate home-manager imports in wixos/zix790prors\n2. **Low priority:** Update flake description to be more meaningful\n3. **Low priority:** Could extract common overlay logic to reduce duplication\n\nNo blocking issues found. The flake is well-structured for its purpose."} {"id":"nixos-configs-ny8","title":"Evaluate Flake Structure","description":"# Investigation: Flake Structure\n\n## Questions to Answer\n- Is flake.nix well-organized?\n- Are inputs minimal and up-to-date?\n- Is module composition clear?\n\n## Key Files\n- `flake.nix` (9.4KB) - Primary target\n\n## Approach\n1. Use `/humanlayer:research_codebase_nt` to analyze flake.nix organization\n2. Identify unnecessary inputs or outdated patterns\n3. Use `/humanlayer:create_plan_nt` to plan improvements if needed","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-10T10:08:22.006574928-08:00","created_by":"johno","updated_at":"2026-01-10T10:11:04.339971068-08:00","closed_at":"2026-01-10T10:11:04.339971068-08:00","close_reason":"## Flake Structure Evaluation Summary\n\n### Overall Assessment: Well-Organized\n\nThe flake.nix is reasonably well-organized for a personal NixOS configuration managing multiple machines across different platforms (NixOS, Darwin, Steam Deck).\n\n---\n\n### Inputs Analysis (11 inputs)\n\n**Essential Inputs (correctly configured):**\n- `nixpkgs` (25.11 stable) - Primary nixpkgs\n- `nixpkgs-unstable` - For bleeding-edge packages\n- `home-manager` / `home-manager-unstable` - Properly follows respective nixpkgs\n- `nix-darwin` - For macOS support, follows nixpkgs\n- `nixos-wsl` - For WSL support\n\n**Specialized Inputs (justified):**\n- `plasma-manager` / `plasma-manager-unstable` - KDE configuration\n- `jovian` - Steam Deck support (follows nixpkgs-unstable)\n- `beads` - Task management tooling\n\n**Custom/Private Inputs:**\n- `google-cookie-retrieval` - Personal tool from git.johnogle.info\n\n**Note:** All inputs properly use `follows` for nixpkgs deduplication - this is a best practice.\n\n---\n\n### Module Composition\n\n**Good Patterns:**\n1. **Role-based architecture** - Both system (`roles/`) and home-manager (`home/roles/`) use a role pattern with `mkEnableOption`\n2. **Machine separation** - Each machine has its own `configuration.nix` under `machines/\u003cname\u003e/`\n3. **Stable/Unstable separation** - `nixosModules` vs `nixosModulesUnstable` for different base systems\n4. **Platform separation** - `darwinModules` for macOS-specific configuration\n5. **Overlay pattern** - Clean overlay providing `pkgs.unstable` and `pkgs.custom`\n\n**Machine Coverage:**\n- 7 NixOS systems: nix-book, boxy, wixos, zix790prors, live-usb, nix-deck, john-endesktop\n- 1 Darwin system: johno-macbookpro\n\n---\n\n### Observations\n\n**Strengths:**\n1. Consistent structure across all machine definitions\n2. Home-manager properly integrated with `useGlobalPkgs = true`\n3. Custom packages accessible via `pkgs.custom`\n4. Flake apps for common maintenance tasks (update-doomemacs, upgrade, etc.)\n5. Compatibility shim for bitwarden-\u003ebitwarden-desktop rename\n\n**Minor Issues:**\n1. `wixos` and `zix790prors` include `inputs.home-manager.nixosModules.home-manager` twice (already in nixosModules)\n2. Description is generic (\"A very basic flake\") - could be more descriptive\n3. Some code duplication between nixosModules and nixosModulesUnstable overlays\n\n**Not Issues:**\n- Duplicate plasma-manager inputs (stable/unstable) are intentional for different nixpkgs bases\n\n---\n\n### Recommendations (Optional)\n\n1. **Low priority:** Remove duplicate home-manager imports in wixos/zix790prors\n2. **Low priority:** Update flake description to be more meaningful\n3. **Low priority:** Could extract common overlay logic to reduce duplication\n\nNo blocking issues found. The flake is well-structured for its purpose."}
{"id":"nixos-configs-pbk","title":"Evaluate Machine Configs","description":"# Investigation: Machine Configs\n\n## Questions to Answer\n- Are machine configs DRY (Don't Repeat Yourself)?\n- Are shared patterns extracted to roles?\n- Are hardware abstractions clean?\n\n## Key Files\n- `machines/*/configuration.nix` - Per-machine patterns\n- `machines/*/hardware-configuration.nix` - Hardware specifics\n\n## Approach\n1. Use `/humanlayer:research_codebase_nt` to analyze machine config patterns\n2. Identify repeated config across machines\n3. Use `/humanlayer:create_plan_nt` to plan extraction of shared patterns","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-10T10:08:24.907956263-08:00","created_by":"johno","updated_at":"2026-01-10T10:11:48.293696883-08:00","closed_at":"2026-01-10T10:11:48.293696883-08:00","close_reason":"## Machine Configuration Analysis Complete\n\n### Summary\nAnalyzed 8 machine configurations across different platform types:\n- **NixOS Desktop/Laptop**: nix-book, zix790prors, boxy, nix-deck, wixos\n- **NixOS Server**: john-endesktop (ZFS/NFS)\n- **NixOS Live USB**: live-usb\n- **Darwin/macOS**: johno-macbookpro\n\n### DRY Assessment: GOOD\nThe configuration is already well-factored with an extensive roles system covering:\n- `audio`, `bluetooth`, `btrfs`, `desktop`, `kodi`, `nfs-mounts`, `nvidia`, `printing`, `remote-build`, `spotifyd`, `users`, `virtualisation`\n- Desktop sub-roles: `x11`, `wayland`, `kde`, `sddm`, `gaming`, `steamos`\n\nMachine configs are concise (40-115 lines) and focus on machine-specific settings only.\n\n### DRY Violations Identified\n\n**Minor (Low Priority)**:\n1. **Boot loader** - `boot.loader.systemd-boot.enable = true` repeated in 5 machines. Could be a role option, but these are one-liners and machine-specific.\n\n2. **NetworkManager** - `networking.networkmanager.enable = true` in 4 machines. Could be part of desktop role default.\n\n3. **NVIDIA config duplication** - `hardware.nvidia` block duplicated in `zix790prors` and `wixos` with different values. The existing `roles.nvidia` only handles packages, not driver config.\n\n4. **Graphics enable** - `hardware.graphics.enable = true` in 2 machines with manual `enable32Bit`. Could be part of gaming role.\n\n### Hardware Configuration Assessment: CLEAN\nHardware configs properly use `nixos-generate-config` patterns. Notable improvements:\n- `nix-book` and `zix790prors` use the new `roles.btrfs` abstraction for filesystem management with deduplication and scrubbing\n- `nix-deck` uses Jovian modules for Steam Deck hardware\n\n### Recommendations\n\n1. **Extend nvidia role** - Move `hardware.nvidia` and `services.xserver.videoDrivers` config into `roles.nvidia` with options for open driver, power management, etc.\n\n2. **Add AMD GPU role** - Create `roles.amdgpu` for machines like boxy with AMD graphics config.\n\n3. **Consider boot role** - Could add `roles.boot` with common systemd-boot config, but benefit is marginal.\n\n4. **Network role optional** - Could add `roles.network` but current per-machine network config is appropriate for flexibility.\n\n5. **No action needed** - The current structure is already well-organized. The identified duplications are minimal and don't justify immediate refactoring.\n\n### Architecture Quality: HIGH\n- Clean separation: machine-specific vs shared roles\n- Roles are composable with sensible options\n- Hardware configs are properly isolated\n- Flake structure is well-organized with stable/unstable variants\n- Home-manager integration is consistent across machines"} {"id":"nixos-configs-pbk","title":"Evaluate Machine Configs","description":"# Investigation: Machine Configs\n\n## Questions to Answer\n- Are machine configs DRY (Don't Repeat Yourself)?\n- Are shared patterns extracted to roles?\n- Are hardware abstractions clean?\n\n## Key Files\n- `machines/*/configuration.nix` - Per-machine patterns\n- `machines/*/hardware-configuration.nix` - Hardware specifics\n\n## Approach\n1. Use `/humanlayer:research_codebase_nt` to analyze machine config patterns\n2. Identify repeated config across machines\n3. Use `/humanlayer:create_plan_nt` to plan extraction of shared patterns","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-10T10:08:24.907956263-08:00","created_by":"johno","updated_at":"2026-01-10T10:11:48.293696883-08:00","closed_at":"2026-01-10T10:11:48.293696883-08:00","close_reason":"## Machine Configuration Analysis Complete\n\n### Summary\nAnalyzed 8 machine configurations across different platform types:\n- **NixOS Desktop/Laptop**: nix-book, zix790prors, boxy, nix-deck, wixos\n- **NixOS Server**: john-endesktop (ZFS/NFS)\n- **NixOS Live USB**: live-usb\n- **Darwin/macOS**: johno-macbookpro\n\n### DRY Assessment: GOOD\nThe configuration is already well-factored with an extensive roles system covering:\n- `audio`, `bluetooth`, `btrfs`, `desktop`, `kodi`, `nfs-mounts`, `nvidia`, `printing`, `remote-build`, `spotifyd`, `users`, `virtualisation`\n- Desktop sub-roles: `x11`, `wayland`, `kde`, `sddm`, `gaming`, `steamos`\n\nMachine configs are concise (40-115 lines) and focus on machine-specific settings only.\n\n### DRY Violations Identified\n\n**Minor (Low Priority)**:\n1. **Boot loader** - `boot.loader.systemd-boot.enable = true` repeated in 5 machines. Could be a role option, but these are one-liners and machine-specific.\n\n2. **NetworkManager** - `networking.networkmanager.enable = true` in 4 machines. Could be part of desktop role default.\n\n3. **NVIDIA config duplication** - `hardware.nvidia` block duplicated in `zix790prors` and `wixos` with different values. The existing `roles.nvidia` only handles packages, not driver config.\n\n4. **Graphics enable** - `hardware.graphics.enable = true` in 2 machines with manual `enable32Bit`. Could be part of gaming role.\n\n### Hardware Configuration Assessment: CLEAN\nHardware configs properly use `nixos-generate-config` patterns. Notable improvements:\n- `nix-book` and `zix790prors` use the new `roles.btrfs` abstraction for filesystem management with deduplication and scrubbing\n- `nix-deck` uses Jovian modules for Steam Deck hardware\n\n### Recommendations\n\n1. **Extend nvidia role** - Move `hardware.nvidia` and `services.xserver.videoDrivers` config into `roles.nvidia` with options for open driver, power management, etc.\n\n2. **Add AMD GPU role** - Create `roles.amdgpu` for machines like boxy with AMD graphics config.\n\n3. **Consider boot role** - Could add `roles.boot` with common systemd-boot config, but benefit is marginal.\n\n4. **Network role optional** - Could add `roles.network` but current per-machine network config is appropriate for flexibility.\n\n5. **No action needed** - The current structure is already well-organized. The identified duplications are minimal and don't justify immediate refactoring.\n\n### Architecture Quality: HIGH\n- Clean separation: machine-specific vs shared roles\n- Roles are composable with sensible options\n- Hardware configs are properly isolated\n- Flake structure is well-organized with stable/unstable variants\n- Home-manager integration is consistent across machines"}
{"id":"nixos-configs-pea","title":"Consider removing unused vulkan-hdr-layer package","description":"From Custom Packages evaluation: vulkan-hdr-layer in packages/ appears to be unused anywhere in the configuration. Decide whether to remove it or document its intended use.","status":"closed","priority":4,"issue_type":"task","created_at":"2026-01-10T10:31:26.59180827-08:00","created_by":"johno","updated_at":"2026-01-10T14:18:41.247305164-08:00","closed_at":"2026-01-10T14:18:41.247305164-08:00","close_reason":"PR merged: https://git.johnogle.info/johno/nixos-configs/pulls/22","comments":[{"id":3,"issue_id":"nixos-configs-pea","author":"johno","text":"PR created: https://git.johnogle.info/johno/nixos-configs/pulls/22","created_at":"2026-01-10T21:11:21Z"}]} {"id":"nixos-configs-pea","title":"Consider removing unused vulkan-hdr-layer package","description":"From Custom Packages evaluation: vulkan-hdr-layer in packages/ appears to be unused anywhere in the configuration. Decide whether to remove it or document its intended use.","status":"closed","priority":4,"issue_type":"task","created_at":"2026-01-10T10:31:26.59180827-08:00","created_by":"johno","updated_at":"2026-01-10T14:18:41.247305164-08:00","closed_at":"2026-01-10T14:18:41.247305164-08:00","close_reason":"PR merged: https://git.johnogle.info/johno/nixos-configs/pulls/22","comments":[{"id":3,"issue_id":"nixos-configs-pea","author":"johno","text":"PR created: https://git.johnogle.info/johno/nixos-configs/pulls/22","created_at":"2026-01-10T21:11:21Z"}]}
@@ -27,8 +29,9 @@
{"id":"nixos-configs-tcu","title":"Add platform compatibility guards to cross-platform roles","description":"From Cross-Platform evaluation: Some roles like desktop and communication contain Linux-only packages but no guards. Add lib.optionals pkgs.stdenv.isLinux where appropriate to prevent issues on Darwin.","notes":"PR: https://git.johnogle.info/johno/nixos-configs/pulls/25","status":"in_review","priority":3,"issue_type":"task","created_at":"2026-01-10T10:31:29.864582809-08:00","created_by":"johno","updated_at":"2026-01-10T14:19:52.639338196-08:00","comments":[{"id":8,"issue_id":"nixos-configs-tcu","author":"johno","text":"PR created: https://git.johnogle.info/johno/nixos-configs/pulls/25","created_at":"2026-01-10T21:13:19Z"}]} {"id":"nixos-configs-tcu","title":"Add platform compatibility guards to cross-platform roles","description":"From Cross-Platform evaluation: Some roles like desktop and communication contain Linux-only packages but no guards. Add lib.optionals pkgs.stdenv.isLinux where appropriate to prevent issues on Darwin.","notes":"PR: https://git.johnogle.info/johno/nixos-configs/pulls/25","status":"in_review","priority":3,"issue_type":"task","created_at":"2026-01-10T10:31:29.864582809-08:00","created_by":"johno","updated_at":"2026-01-10T14:19:52.639338196-08:00","comments":[{"id":8,"issue_id":"nixos-configs-tcu","author":"johno","text":"PR created: https://git.johnogle.info/johno/nixos-configs/pulls/25","created_at":"2026-01-10T21:13:19Z"}]}
{"id":"nixos-configs-tdf","title":"Add skill to import Gitea issues as beads","description":"Create a skill that imports open Gitea issues as beads, skipping those already imported","notes":"Technique from session:\n\n1. Use `tea issues` to list open issues (not curl)\n2. Use `tea issue N` to get full details\n3. Check existing beads with `bd list` to find already-imported issues\n4. Skip PRs that have bead IDs in title (e.g. '[nixos-configs-xxx]') or body ('Bead ID: xxx')\n5. For new issues, create bead with:\n - Appropriate type (bug/feature/task based on issue content)\n - Priority P2 default\n - Notes containing Gitea issue URL\n - Description from issue body\n6. Report what was imported vs skipped\n\nPR: https://git.johnogle.info/johno/nixos-configs/pulls/15","status":"closed","priority":2,"issue_type":"feature","created_at":"2026-01-10T12:29:28.686736386-08:00","created_by":"johno","updated_at":"2026-01-10T14:18:37.319195453-08:00","closed_at":"2026-01-10T14:18:37.319195453-08:00","close_reason":"PR merged: https://git.johnogle.info/johno/nixos-configs/pulls/15"} {"id":"nixos-configs-tdf","title":"Add skill to import Gitea issues as beads","description":"Create a skill that imports open Gitea issues as beads, skipping those already imported","notes":"Technique from session:\n\n1. Use `tea issues` to list open issues (not curl)\n2. Use `tea issue N` to get full details\n3. Check existing beads with `bd list` to find already-imported issues\n4. Skip PRs that have bead IDs in title (e.g. '[nixos-configs-xxx]') or body ('Bead ID: xxx')\n5. For new issues, create bead with:\n - Appropriate type (bug/feature/task based on issue content)\n - Priority P2 default\n - Notes containing Gitea issue URL\n - Description from issue body\n6. Report what was imported vs skipped\n\nPR: https://git.johnogle.info/johno/nixos-configs/pulls/15","status":"closed","priority":2,"issue_type":"feature","created_at":"2026-01-10T12:29:28.686736386-08:00","created_by":"johno","updated_at":"2026-01-10T14:18:37.319195453-08:00","closed_at":"2026-01-10T14:18:37.319195453-08:00","close_reason":"PR merged: https://git.johnogle.info/johno/nixos-configs/pulls/15"}
{"id":"nixos-configs-u81","title":"Add --help flags to all flake apps","description":"From Scripts \u0026 Utilities evaluation: Some flake apps (like update-claude-code) have --help, others don't. Add --help flags to all apps for consistency and discoverability.","notes":"PR: https://git.johnogle.info/johno/nixos-configs/pulls/24","status":"in_review","priority":4,"issue_type":"task","created_at":"2026-01-10T10:31:31.672159415-08:00","created_by":"johno","updated_at":"2026-01-10T14:19:56.054825229-08:00","comments":[{"id":7,"issue_id":"nixos-configs-u81","author":"johno","text":"PR: https://git.johnogle.info/johno/nixos-configs/pulls/24","created_at":"2026-01-10T21:12:06Z"}]} {"id":"nixos-configs-u81","title":"Add --help flags to all flake apps","description":"From Scripts \u0026 Utilities evaluation: Some flake apps (like update-claude-code) have --help, others don't. Add --help flags to all apps for consistency and discoverability.","notes":"PR: https://git.johnogle.info/johno/nixos-configs/pulls/24","status":"in_review","priority":4,"issue_type":"task","created_at":"2026-01-10T10:31:31.672159415-08:00","created_by":"johno","updated_at":"2026-01-10T14:19:56.054825229-08:00","comments":[{"id":7,"issue_id":"nixos-configs-u81","author":"johno","text":"PR: https://git.johnogle.info/johno/nixos-configs/pulls/24","created_at":"2026-01-10T21:12:06Z"}]}
{"id":"nixos-configs-uje","title":"Migrate nucdeb1 and nucdeb3 to NixOS","description":"Follow the documented process from nucdeb2 migration to migrate nucdeb1 and nucdeb3 from their current Debian-based setups to NixOS with the k3s-node role.","status":"open","priority":2,"issue_type":"task","created_at":"2026-01-10T19:13:04.392439489-08:00","created_by":"johno","updated_at":"2026-01-10T19:13:04.392439489-08:00"} {"id":"nixos-configs-uje","title":"Migrate nucdeb1 and nucdeb3 to NixOS","description":"Follow the documented process from nucdeb2 migration to migrate nucdeb1 and nucdeb3 from their current Debian-based setups to NixOS with the k3s-node role.","status":"open","priority":2,"issue_type":"task","created_at":"2026-01-10T19:13:04.392439489-08:00","created_by":"johno","updated_at":"2026-01-10T19:13:04.392439489-08:00","dependencies":[{"issue_id":"nixos-configs-uje","depends_on_id":"nixos-configs-45m","type":"blocks","created_at":"2026-01-10T19:13:13.908017962-08:00","created_by":"johno"}],"comments":[{"id":10,"issue_id":"nixos-configs-uje","author":"johno","text":"## k3s-upgrade Label Requirement\n\nWhen these nodes are migrated to NixOS and running k3s, they must be labeled with `k3s-upgrade=disabled`:\n\n```bash\nkubectl label node \u003cnode-name\u003e k3s-upgrade=disabled\n```\n\nThis excludes them from the system-upgrade-controller, which tries to upgrade k3s by replacing the binary in-place. This fails on NixOS because /nix/store is immutable. On NixOS, k3s upgrades happen through updating nixpkgs and rebuilding.","created_at":"2026-01-11T04:10:23Z"}]}
{"id":"nixos-configs-uji","title":"Add and use starship.rs","status":"closed","priority":3,"issue_type":"feature","created_at":"2026-01-10T10:07:07.088523902-08:00","created_by":"johno","updated_at":"2026-01-10T10:13:46.830449555-08:00","closed_at":"2026-01-10T10:13:46.830449555-08:00","close_reason":"Closed"} {"id":"nixos-configs-uji","title":"Add and use starship.rs","status":"closed","priority":3,"issue_type":"feature","created_at":"2026-01-10T10:07:07.088523902-08:00","created_by":"johno","updated_at":"2026-01-10T10:13:46.830449555-08:00","closed_at":"2026-01-10T10:13:46.830449555-08:00","close_reason":"Closed"}
{"id":"nixos-configs-ujn","title":"reconcile_beads skill should close matching Gitea issues","notes":"Gitea issue: https://git.johnogle.info/johno/nixos-configs/issues/16\n\nWhen closing beads that were imported from Gitea issues, the reconcile_beads skill should also close the corresponding Gitea issue to keep them in sync.","status":"open","priority":2,"issue_type":"feature","created_at":"2026-01-10T21:06:55.526151709-08:00","created_by":"johno","updated_at":"2026-01-10T21:06:55.526151709-08:00"}
{"id":"nixos-configs-und","title":"Evaluate Custom Packages","description":"# Investigation: Custom Packages\n\n## Questions to Answer\n- Are packages well-structured?\n- Is overlay usage optimal?\n- Are packages up-to-date with nixpkgs conventions?\n\n## Key Files\n- `packages/default.nix` - Custom package overlay\n- `packages/*/default.nix` - Individual package definitions\n\n## Approach\n1. Use `/humanlayer:research_codebase_nt` to analyze package structure\n2. Check overlay patterns and composition\n3. Use `/humanlayer:create_plan_nt` to plan improvements if needed","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-10T10:08:25.566312823-08:00","created_by":"johno","updated_at":"2026-01-10T10:11:22.107817076-08:00","closed_at":"2026-01-10T10:11:22.107817076-08:00","close_reason":"# Custom Packages Evaluation Complete\n\n## Overview\nThe nixos-configs repository contains 5 custom packages, all managed through a single `packages/default.nix` file that exposes them via `pkgs.custom.*` overlay.\n\n## Package-by-Package Analysis\n\n### 1. claude-code (Well-Structured)\n- **Purpose**: Fetches Claude Code CLI directly from Google Cloud Storage, bypassing npm registry (needed for corporate network restrictions)\n- **Structure**: Excellent - uses `stdenv.mkDerivation` with proper multi-platform support (4 platforms)\n- **Update mechanism**: Has automated `update.sh` script that fetches version/hashes from Homebrew cask - very well designed\n- **Documentation**: Includes comprehensive README.md\n- **Usage**: Exposed via overlay to `pkgs.unstable.claude-code` for Darwin machines\n- **Note**: Also has an unused `npm.nix` with placeholder hash - appears to be abandoned attempt\n\n### 2. vulkan-hdr-layer (Well-Structured)\n- **Purpose**: Vulkan layer for HDR support\n- **Structure**: Proper `stdenv.mkDerivation` with meson build system\n- **Issue**: Uses commit hash version `63d2eec` (unstable version) - consider using tagged releases\n- **Note**: Not currently used anywhere in the configuration (orphaned package?)\n\n### 3. tea-rbw (Simple Wrapper)\n- **Purpose**: Wrapper around `tea` (Gitea CLI) that integrates with rbw (Bitwarden CLI) for authentication\n- **Structure**: Simple `writeShellScriptBin` - appropriate for this use case\n- **Usage**: Used in `home/roles/development/default.nix`\n\n### 4. app-launcher-server (Simple Wrapper)\n- **Purpose**: HTTP server for launching allowlisted applications (Firefox, Kodi)\n- **Structure**: Python script with `writeShellScriptBin` wrapper - clean design\n- **Usage**: Used in `roles/kodi/default.nix` for media center control\n\n### 5. perles (Well-Structured)\n- **Purpose**: TUI for Beads issue tracking system\n- **Structure**: Proper `buildGoModule` with GitHub fetch\n- **Issue**: Uses `rev = \"main\"` instead of pinned commit - can cause reproducibility issues\n- **Usage**: Used in `home/roles/development/default.nix`\n\n## Overlay Integration\nPackages are exposed via overlay in flake.nix:\n```nix\ncustom = prev.callPackage ./packages {};\n```\nThis is a clean, standard pattern.\n\n## Observations\n\n### Strengths\n1. Single entry point (`packages/default.nix`) for all custom packages\n2. Proper use of `callPackage` idiom\n3. Good variety of build patterns (stdenv, buildGoModule, writeShellScriptBin)\n4. Excellent automated update script for claude-code\n5. Proper meta attributes on most packages\n\n### Issues/Recommendations\n1. **vulkan-hdr-layer appears unused** - consider removing if not needed\n2. **perles uses `rev = \"main\"`** - should pin to specific commit for reproducibility\n3. **npm.nix is unused** - leftover file in claude-code directory\n4. **Missing maintainers** - all packages have empty maintainers list\n5. **vulkan-hdr-layer uses unstable version** - uses commit hash, not tagged release\n\n## Nixpkgs Convention Compliance\n- Package naming follows conventions\n- Meta attributes present\n- Uses appropriate build helpers\n- Overlay pattern is idiomatic\n- Could benefit from adding tests for some packages"} {"id":"nixos-configs-und","title":"Evaluate Custom Packages","description":"# Investigation: Custom Packages\n\n## Questions to Answer\n- Are packages well-structured?\n- Is overlay usage optimal?\n- Are packages up-to-date with nixpkgs conventions?\n\n## Key Files\n- `packages/default.nix` - Custom package overlay\n- `packages/*/default.nix` - Individual package definitions\n\n## Approach\n1. Use `/humanlayer:research_codebase_nt` to analyze package structure\n2. Check overlay patterns and composition\n3. Use `/humanlayer:create_plan_nt` to plan improvements if needed","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-10T10:08:25.566312823-08:00","created_by":"johno","updated_at":"2026-01-10T10:11:22.107817076-08:00","closed_at":"2026-01-10T10:11:22.107817076-08:00","close_reason":"# Custom Packages Evaluation Complete\n\n## Overview\nThe nixos-configs repository contains 5 custom packages, all managed through a single `packages/default.nix` file that exposes them via `pkgs.custom.*` overlay.\n\n## Package-by-Package Analysis\n\n### 1. claude-code (Well-Structured)\n- **Purpose**: Fetches Claude Code CLI directly from Google Cloud Storage, bypassing npm registry (needed for corporate network restrictions)\n- **Structure**: Excellent - uses `stdenv.mkDerivation` with proper multi-platform support (4 platforms)\n- **Update mechanism**: Has automated `update.sh` script that fetches version/hashes from Homebrew cask - very well designed\n- **Documentation**: Includes comprehensive README.md\n- **Usage**: Exposed via overlay to `pkgs.unstable.claude-code` for Darwin machines\n- **Note**: Also has an unused `npm.nix` with placeholder hash - appears to be abandoned attempt\n\n### 2. vulkan-hdr-layer (Well-Structured)\n- **Purpose**: Vulkan layer for HDR support\n- **Structure**: Proper `stdenv.mkDerivation` with meson build system\n- **Issue**: Uses commit hash version `63d2eec` (unstable version) - consider using tagged releases\n- **Note**: Not currently used anywhere in the configuration (orphaned package?)\n\n### 3. tea-rbw (Simple Wrapper)\n- **Purpose**: Wrapper around `tea` (Gitea CLI) that integrates with rbw (Bitwarden CLI) for authentication\n- **Structure**: Simple `writeShellScriptBin` - appropriate for this use case\n- **Usage**: Used in `home/roles/development/default.nix`\n\n### 4. app-launcher-server (Simple Wrapper)\n- **Purpose**: HTTP server for launching allowlisted applications (Firefox, Kodi)\n- **Structure**: Python script with `writeShellScriptBin` wrapper - clean design\n- **Usage**: Used in `roles/kodi/default.nix` for media center control\n\n### 5. perles (Well-Structured)\n- **Purpose**: TUI for Beads issue tracking system\n- **Structure**: Proper `buildGoModule` with GitHub fetch\n- **Issue**: Uses `rev = \"main\"` instead of pinned commit - can cause reproducibility issues\n- **Usage**: Used in `home/roles/development/default.nix`\n\n## Overlay Integration\nPackages are exposed via overlay in flake.nix:\n```nix\ncustom = prev.callPackage ./packages {};\n```\nThis is a clean, standard pattern.\n\n## Observations\n\n### Strengths\n1. Single entry point (`packages/default.nix`) for all custom packages\n2. Proper use of `callPackage` idiom\n3. Good variety of build patterns (stdenv, buildGoModule, writeShellScriptBin)\n4. Excellent automated update script for claude-code\n5. Proper meta attributes on most packages\n\n### Issues/Recommendations\n1. **vulkan-hdr-layer appears unused** - consider removing if not needed\n2. **perles uses `rev = \"main\"`** - should pin to specific commit for reproducibility\n3. **npm.nix is unused** - leftover file in claude-code directory\n4. **Missing maintainers** - all packages have empty maintainers list\n5. **vulkan-hdr-layer uses unstable version** - uses commit hash, not tagged release\n\n## Nixpkgs Convention Compliance\n- Package naming follows conventions\n- Meta attributes present\n- Uses appropriate build helpers\n- Overlay pattern is idiomatic\n- Could benefit from adding tests for some packages"}
{"id":"nixos-configs-v2v","title":"Pin perles package to specific commit","description":"From Custom Packages evaluation: perles in packages/perles/default.nix uses rev = 'main' instead of a pinned commit. This breaks reproducibility. Should pin to a specific commit hash.","notes":"PR: https://git.johnogle.info/johno/nixos-configs/pulls/7","status":"in_review","priority":2,"issue_type":"bug","created_at":"2026-01-10T10:31:27.624760234-08:00","created_by":"johno","updated_at":"2026-01-10T12:50:58.022570459-08:00"} {"id":"nixos-configs-v2v","title":"Pin perles package to specific commit","description":"From Custom Packages evaluation: perles in packages/perles/default.nix uses rev = 'main' instead of a pinned commit. This breaks reproducibility. Should pin to a specific commit hash.","notes":"PR: https://git.johnogle.info/johno/nixos-configs/pulls/7","status":"in_review","priority":2,"issue_type":"bug","created_at":"2026-01-10T10:31:27.624760234-08:00","created_by":"johno","updated_at":"2026-01-10T12:50:58.022570459-08:00"}
{"id":"nixos-configs-vru","title":"Add skill for responding to Gitea PR review comments","description":"## Problem\n\nWhen responding to PR review comments on Gitea/Forgejo, the REST API (`/api/v1/...`) does not support replying directly to review comment threads. Using `tea comment` or the API creates new top-level comments instead of inline thread replies.\n\n## Discovery\n\nThe web UI uses a different endpoint that supports replies:\n\n```\nPOST /pulls/{id}/files/reviews/comments\nContent-Type: multipart/form-data\n```\n\nKey form fields:\n- `reply`: Review ID to reply to (e.g., `2`)\n- `content`: The reply message\n- `path`: File path (e.g., `home/roles/development/default.nix`)\n- `line`: Line number\n- `side`: `proposed` or `original`\n- `single_review`: `true`\n- `origin`: `timeline`\n- `_csrf`: CSRF token (required)\n\nAuthentication requires session cookies, not API token.\n\n## Proposed Solution\n\nCreate a Claude skill that can:\n1. Fetch PR review comments via the REST API\n2. Authenticate via browser session or find alternative auth method\n3. Post inline replies to review comment threads using the web endpoint\n\n### Options to explore:\n1. **Session extraction**: Get cookies from browser or `tea` config\n2. **Headless browser**: Use playwright/puppeteer to automate web UI\n3. **CSRF flow**: Login via API, get CSRF token, then use web endpoint\n4. **tea enhancement**: Check if `tea` CLI has undocumented reply support\n\n## API Reference\n\nGet reviews:\n```bash\ncurl -H \"Authorization: token $TOKEN\" \\\n \"https://git.johnogle.info/api/v1/repos/{owner}/{repo}/pulls/{id}/reviews\"\n```\n\nGet review comments:\n```bash\ncurl -H \"Authorization: token $TOKEN\" \\\n \"https://git.johnogle.info/api/v1/repos/{owner}/{repo}/pulls/{id}/reviews/{review_id}/comments\"\n```\n\n## Acceptance Criteria\n\n- [ ] Skill can read PR review comments given a PR number\n- [ ] Skill can post inline replies to specific review comment threads\n- [ ] Works with Gitea/Forgejo instances (git.johnogle.info)\n- [ ] Handles authentication securely","notes":"PR: https://git.johnogle.info/johno/nixos-configs/pulls/18","status":"closed","priority":2,"issue_type":"feature","created_at":"2026-01-10T11:29:18.493043744-08:00","created_by":"johno","updated_at":"2026-01-10T14:18:38.006175433-08:00","closed_at":"2026-01-10T14:18:38.006175433-08:00","close_reason":"PR merged: https://git.johnogle.info/johno/nixos-configs/pulls/18"} {"id":"nixos-configs-vru","title":"Add skill for responding to Gitea PR review comments","description":"## Problem\n\nWhen responding to PR review comments on Gitea/Forgejo, the REST API (`/api/v1/...`) does not support replying directly to review comment threads. Using `tea comment` or the API creates new top-level comments instead of inline thread replies.\n\n## Discovery\n\nThe web UI uses a different endpoint that supports replies:\n\n```\nPOST /pulls/{id}/files/reviews/comments\nContent-Type: multipart/form-data\n```\n\nKey form fields:\n- `reply`: Review ID to reply to (e.g., `2`)\n- `content`: The reply message\n- `path`: File path (e.g., `home/roles/development/default.nix`)\n- `line`: Line number\n- `side`: `proposed` or `original`\n- `single_review`: `true`\n- `origin`: `timeline`\n- `_csrf`: CSRF token (required)\n\nAuthentication requires session cookies, not API token.\n\n## Proposed Solution\n\nCreate a Claude skill that can:\n1. Fetch PR review comments via the REST API\n2. Authenticate via browser session or find alternative auth method\n3. Post inline replies to review comment threads using the web endpoint\n\n### Options to explore:\n1. **Session extraction**: Get cookies from browser or `tea` config\n2. **Headless browser**: Use playwright/puppeteer to automate web UI\n3. **CSRF flow**: Login via API, get CSRF token, then use web endpoint\n4. **tea enhancement**: Check if `tea` CLI has undocumented reply support\n\n## API Reference\n\nGet reviews:\n```bash\ncurl -H \"Authorization: token $TOKEN\" \\\n \"https://git.johnogle.info/api/v1/repos/{owner}/{repo}/pulls/{id}/reviews\"\n```\n\nGet review comments:\n```bash\ncurl -H \"Authorization: token $TOKEN\" \\\n \"https://git.johnogle.info/api/v1/repos/{owner}/{repo}/pulls/{id}/reviews/{review_id}/comments\"\n```\n\n## Acceptance Criteria\n\n- [ ] Skill can read PR review comments given a PR number\n- [ ] Skill can post inline replies to specific review comment threads\n- [ ] Works with Gitea/Forgejo instances (git.johnogle.info)\n- [ ] Handles authentication securely","notes":"PR: https://git.johnogle.info/johno/nixos-configs/pulls/18","status":"closed","priority":2,"issue_type":"feature","created_at":"2026-01-10T11:29:18.493043744-08:00","created_by":"johno","updated_at":"2026-01-10T14:18:38.006175433-08:00","closed_at":"2026-01-10T14:18:38.006175433-08:00","close_reason":"PR merged: https://git.johnogle.info/johno/nixos-configs/pulls/18"}