From e76cfa45194dbf260ce7952796b189081e5de5c5 Mon Sep 17 00:00:00 2001 From: John Ogle Date: Mon, 12 Jan 2026 18:39:35 -0800 Subject: [PATCH] bd sync: 2026-01-12 18:39:35 --- .beads/issues.jsonl | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.beads/issues.jsonl b/.beads/issues.jsonl index 423cbd9..6d8b7ca 100644 --- a/.beads/issues.jsonl +++ b/.beads/issues.jsonl @@ -8,13 +8,13 @@ {"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":3,"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-39m","title":"parallel_beads PR description should include validation steps completed","notes":"Implementation complete. All 5 phases done: validation extraction, execution, PR templates, result reporting, summary table.","status":"closed","priority":2,"issue_type":"feature","created_at":"2026-01-10T21:06:56.358336921-08:00","created_by":"johno","updated_at":"2026-01-12T18:29:47.321408-08:00","closed_at":"2026-01-12T18:29:47.321408-08:00","close_reason":"Implementation complete. All 5 phases implemented and committed (ba49229)."} {"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":4,"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-45r","title":"Update parallel_beads to require plans","description":"parallel_beads should check for plan artifacts before including beads in batch implementation.\n\nCurrent behavior: Includes all ready beads regardless of preparation state\nDesired behavior: \n- Check for thoughts/beads-{id}/plan.md\n- Skip beads without plans (or type=bug which can implement directly)\n- Warn user which beads were skipped and why\n\nThis prevents premature batch implementation of complex features that haven't been planned.","status":"open","priority":2,"issue_type":"task","created_at":"2026-01-12T18:33:11.006426-08:00","created_by":"johno","updated_at":"2026-01-12T18:33:11.006426-08:00"} +{"id":"nixos-configs-45r","title":"Update parallel_beads to require plans","description":"parallel_beads should check for plan artifacts before including beads in batch implementation.\n\nCurrent behavior: Includes all ready beads regardless of preparation state\nDesired behavior: \n- Check for thoughts/beads-{id}/plan.md\n- Skip beads without plans (or type=bug which can implement directly)\n- Warn user which beads were skipped and why\n\nThis prevents premature batch implementation of complex features that haven't been planned.","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-12T18:33:11.006426-08:00","created_by":"johno","updated_at":"2026-01-12T18:39:09.894633-08:00","closed_at":"2026-01-12T18:39:09.894633-08:00","close_reason":"Implemented in this session"} {"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-505","title":"Document discovered-work pattern in workflow guide","description":"Add section to beads_workflow.md explaining the discovered-work pattern:\n\n1. File one bead for initial idea\n2. Research may reveal work should split\n3. Create new beads for each discovered subtask\n4. Link with 'discovered-from' dependency type\n5. Close original bead as 'split into subtasks'\n\nInclude concrete example showing the flow.","status":"open","priority":3,"issue_type":"task","created_at":"2026-01-12T18:33:12.757818-08:00","created_by":"johno","updated_at":"2026-01-12T18:33:12.757818-08:00","dependencies":[{"issue_id":"nixos-configs-505","depends_on_id":"nixos-configs-45r","type":"blocks","created_at":"2026-01-12T18:33:18.801265-08:00","created_by":"johno"},{"issue_id":"nixos-configs-505","depends_on_id":"nixos-configs-8gr","type":"blocks","created_at":"2026-01-12T18:33:18.845276-08:00","created_by":"johno"}]} +{"id":"nixos-configs-505","title":"Document discovered-work pattern in workflow guide","description":"Add section to beads_workflow.md explaining the discovered-work pattern:\n\n1. File one bead for initial idea\n2. Research may reveal work should split\n3. Create new beads for each discovered subtask\n4. Link with 'discovered-from' dependency type\n5. Close original bead as 'split into subtasks'\n\nInclude concrete example showing the flow.","status":"closed","priority":3,"issue_type":"task","created_at":"2026-01-12T18:33:12.757818-08:00","created_by":"johno","updated_at":"2026-01-12T18:39:20.523878-08:00","closed_at":"2026-01-12T18:39:20.523878-08:00","close_reason":"Documented in beads_workflow.md Design Decisions section - 'One Bead Per Feature' and 'discovered-work pattern'","dependencies":[{"issue_id":"nixos-configs-505","depends_on_id":"nixos-configs-45r","type":"blocks","created_at":"2026-01-12T18:33:18.801265-08:00","created_by":"johno"},{"issue_id":"nixos-configs-505","depends_on_id":"nixos-configs-8gr","type":"blocks","created_at":"2026-01-12T18:33:18.845276-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-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-8gr","title":"Add plan-awareness to beads:implement","description":"beads:implement should behave differently based on plan presence and bead type.\n\nDesired behavior:\n- type=bug, no plan: Proceed (simple bugs don't need plans)\n- type=feature/task, no plan: Warn and ask whether to proceed or create plan first\n- type=feature/task, has plan: Proceed normally\n\nThis guides users toward the right workflow without being rigid.","status":"open","priority":2,"issue_type":"task","created_at":"2026-01-12T18:33:11.8486-08:00","created_by":"johno","updated_at":"2026-01-12T18:33:11.8486-08:00"} +{"id":"nixos-configs-8gr","title":"Add plan-awareness to beads:implement","description":"beads:implement should behave differently based on plan presence and bead type.\n\nDesired behavior:\n- type=bug, no plan: Proceed (simple bugs don't need plans)\n- type=feature/task, no plan: Warn and ask whether to proceed or create plan first\n- type=feature/task, has plan: Proceed normally\n\nThis guides users toward the right workflow without being rigid.","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-12T18:33:11.8486-08:00","created_by":"johno","updated_at":"2026-01-12T18:39:09.8961-08:00","closed_at":"2026-01-12T18:39:09.8961-08:00","close_reason":"Implemented in this session"} {"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-alh","title":"Create beads:plan skill","description":"Beads-aware planning skill that:\n- Takes bead ID as input\n- Outputs to thoughts/beads-{id}/plan.md\n- Updates bead description with plan link\n- Creates dependent implementation bead if needed\n- Based on humanlayer:create_plan","status":"closed","priority":1,"issue_type":"task","created_at":"2026-01-12T17:53:33.68428-08:00","created_by":"johno","updated_at":"2026-01-12T17:55:32.237985-08:00","closed_at":"2026-01-12T17:55:32.237985-08:00","close_reason":"Created beads_plan.md skill","dependencies":[{"issue_id":"nixos-configs-alh","depends_on_id":"nixos-configs-ouf","type":"parent-child","created_at":"2026-01-12T17:53:44.347901-08:00","created_by":"johno"}]} {"id":"nixos-configs-alr","title":"Remove duplicate home-manager imports in wixos/zix790prors","description":"From Flake Structure evaluation: wixos and zix790prors configurations include inputs.home-manager.nixosModules.home-manager redundantly (already in nixosModules).","status":"closed","priority":3,"issue_type":"bug","created_at":"2026-01-10T10:31:23.349942257-08:00","created_by":"johno","updated_at":"2026-01-10T12:48:27.531448924-08:00","closed_at":"2026-01-10T12:48:27.531448924-08:00"} @@ -29,7 +29,7 @@ {"id":"nixos-configs-jgc","title":"Create beads:research skill","description":"Beads-aware research skill that:\n- Takes bead ID as input\n- Outputs to thoughts/beads-{id}/research.md\n- Updates bead description with artifact link\n- Can close research beads autonomously when satisfied\n- Based on humanlayer:research_codebase","status":"closed","priority":1,"issue_type":"task","created_at":"2026-01-12T17:53:32.819068-08:00","created_by":"johno","updated_at":"2026-01-12T17:54:47.575421-08:00","closed_at":"2026-01-12T17:54:47.575421-08:00","close_reason":"Created beads_research.md skill","dependencies":[{"issue_id":"nixos-configs-jgc","depends_on_id":"nixos-configs-ouf","type":"parent-child","created_at":"2026-01-12T17:53:44.281044-08:00","created_by":"johno"}]} {"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-oog","title":"Consider workflow-phase statuses for beads","description":"Evaluate adding explicit statuses to track workflow phases:\n\nPotential statuses:\n- needs_research\n- needs_plan \n- implementing\n- needs_review (already exists for parallel_beads)\n- closed\n\nBenefits:\n- `bd list --status=needs_plan` for phase filtering\n- Clearer pipeline visibility\n- Agents could self-select work by phase\n\nConcerns:\n- More state to maintain (status must match artifact presence)\n- Skills currently infer phase from artifacts, which works\n- Custom status config needed per-repo\n\nQuestions to resolve:\n1. Is artifact-presence inference good enough?\n2. Would explicit statuses help or add friction?\n3. Should this be enforced or advisory?\n\nCould prototype by updating skills to set status when creating artifacts.","status":"open","priority":3,"issue_type":"feature","created_at":"2026-01-12T18:25:15.690571-08:00","created_by":"johno","updated_at":"2026-01-12T18:25:15.690571-08:00"} +{"id":"nixos-configs-oog","title":"Consider workflow-phase statuses for beads","description":"Evaluate adding explicit statuses to track workflow phases:\n\nPotential statuses:\n- needs_research\n- needs_plan \n- implementing\n- needs_review (already exists for parallel_beads)\n- closed\n\nBenefits:\n- `bd list --status=needs_plan` for phase filtering\n- Clearer pipeline visibility\n- Agents could self-select work by phase\n\nConcerns:\n- More state to maintain (status must match artifact presence)\n- Skills currently infer phase from artifacts, which works\n- Custom status config needed per-repo\n\nQuestions to resolve:\n1. Is artifact-presence inference good enough?\n2. Would explicit statuses help or add friction?\n3. Should this be enforced or advisory?\n\nCould prototype by updating skills to set status when creating artifacts.","status":"closed","priority":3,"issue_type":"feature","created_at":"2026-01-12T18:25:15.690571-08:00","created_by":"johno","updated_at":"2026-01-12T18:39:09.897327-08:00","closed_at":"2026-01-12T18:39:09.897327-08:00","close_reason":"Implemented in this session"} {"id":"nixos-configs-ouf","title":"Integrate beads with humanlayer skills","description":"Create beads-aware versions of humanlayer skills (research, plan, implement, iterate) that:\n- Use thoughts/beads-{id}/ for artifact storage\n- Link artifacts from bead descriptions\n- Support autonomy model (research=auto-close, impl=checkpoint)\n- Work with both local thoughts/ and symlinked ~/thoughts patterns","status":"closed","priority":1,"issue_type":"epic","created_at":"2026-01-12T17:53:20.891818-08:00","created_by":"johno","updated_at":"2026-01-12T17:57:52.884229-08:00","closed_at":"2026-01-12T17:57:52.884229-08:00","close_reason":"All skills created and documented"} {"id":"nixos-configs-p1a","title":"Create beads:implement skill","description":"Beads-aware implementation skill that:\n- Takes bead ID as input\n- Reads plan from thoughts/beads-{id}/plan.md\n- Per-plan checkpoint (pause after plan complete for manual validation)\n- Updates bead status as work progresses\n- Based on humanlayer:implement_plan","status":"closed","priority":1,"issue_type":"task","created_at":"2026-01-12T17:53:34.468609-08:00","created_by":"johno","updated_at":"2026-01-12T17:56:10.031072-08:00","closed_at":"2026-01-12T17:56:10.031072-08:00","close_reason":"Created beads_implement.md skill","dependencies":[{"issue_id":"nixos-configs-p1a","depends_on_id":"nixos-configs-ouf","type":"parent-child","created_at":"2026-01-12T17:53:44.406117-08:00","created_by":"johno"}]} {"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"}