From 478419010425b776d39acf80b3135c8825b64753 Mon Sep 17 00:00:00 2001 From: John Ogle Date: Sat, 10 Jan 2026 13:06:05 -0800 Subject: [PATCH] bd daemon sync: 2026-01-10 13:06:05 --- .beads/issues.jsonl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.beads/issues.jsonl b/.beads/issues.jsonl index 0ce7d78..758d590 100644 --- a/.beads/issues.jsonl +++ b/.beads/issues.jsonl @@ -21,7 +21,7 @@ {"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":"open","priority":4,"issue_type":"task","created_at":"2026-01-10T10:31:26.59180827-08:00","created_by":"johno","updated_at":"2026-01-10T10:31:26.59180827-08:00"} {"id":"nixos-configs-rrb","title":"Evaluate Cross-Platform Patterns","description":"# Investigation: Cross-Platform Patterns\n\n## Questions to Answer\n- Are Darwin/WSL/Steam Deck patterns consistent?\n- Is code reuse maximized across platforms?\n- Are platform-specific concerns properly isolated?\n\n## Key Files\n- Darwin machine configs\n- WSL machine configs\n- Steam Deck configs\n- Platform-conditional role patterns\n\n## Approach\n1. Use `/humanlayer:research_codebase_nt` to analyze cross-platform patterns\n2. Identify platform-specific vs shared code\n3. Use `/humanlayer:create_plan_nt` to plan better code sharing","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-10T10:08:26.316991479-08:00","created_by":"johno","updated_at":"2026-01-10T10:11:52.982340314-08:00","closed_at":"2026-01-10T10:11:52.982340314-08:00","close_reason":"## Cross-Platform Pattern Evaluation\n\n### Platform Overview\n\nThe repository supports **4 distinct platforms**:\n1. **NixOS** (primary): 6 machines (zix790prors, nix-book, boxy, wixos, nix-deck, john-endesktop)\n2. **Darwin/macOS**: 1 machine (johno-macbookpro/blkfv4yf49kt7)\n3. **WSL (NixOS-WSL)**: 1 machine (wixos)\n4. **Steam Deck**: 1 machine (nix-deck, using Jovian-NixOS)\n\n### Architecture Analysis\n\n#### Are Darwin/WSL/Steam Deck Patterns Consistent?\n\n**MIXED**: The patterns are partially consistent but have notable differences:\n\n**Consistent patterns:**\n- All platforms use home-manager for user configuration\n- All home configs import `./roles` (shared) + platform-specific base role\n- Use of `home.roles` option system across all platforms\n- Common `home.stateVersion = \"24.05\"` across all configs\n\n**Inconsistent patterns:**\n- WSL config embeds NVIDIA/graphics config directly rather than using a role\n- Steam Deck uses `nixosModulesUnstable` (different module set) vs stable for others\n- Darwin uses completely separate `darwinModules` with different role structure\n\n#### Is Code Reuse Maximized?\n\n**PARTIALLY - Rating: 7/10**\n\n**Good reuse:**\n- Home roles are well-factored - most roles work cross-platform\n- `base` role uses `pkgs.stdenv.isLinux` for conditional behavior\n- `emacs` role uses `pkgs.stdenv.isDarwin` to select macport vs standard emacs\n- `aerospace` role properly guards Darwin-only features with assertion\n- Shared wallpaper config across i3, sway, plasma-manager, sketchybar\n\n**Duplication found:**\n1. **roles/default.nix vs roles/darwin.nix**: ~50% duplicated code\n - Both define: time.timeZone, environment.systemPackages, nix.* settings\n - Darwin lacks: i18n settings, xserver.xkb, openssh, emergency mode config\n \n2. **Flake module lists**: nixosModules/nixosModulesUnstable/darwinModules have overlapping overlay configs\n\n3. **Home paths**: Darwin uses `/Users/johno` vs Linux `/home/johno` - handled correctly with mkForce\n\n#### Are Platform-Specific Concerns Properly Isolated?\n\n**GOOD - Rating: 8/10**\n\n**Well isolated:**\n- `home/roles/base-darwin` imports aerospace (Darwin-only)\n- `home/roles/base-linux` imports plasma-manager, i3+sway (Linux-only)\n- `aerospace` role has explicit Darwin assertion\n- System roles (audio, bluetooth, desktop, etc.) are NixOS-only in roles/default.nix\n- Steam Deck config imports `roles/desktop/steamos.nix` for Jovian integration\n\n**Could improve:**\n- WSL-specific config inline in machine config rather than a `wsl` role\n- NVIDIA config duplicated in wixos vs using roles.nvidia\n\n### Key Findings\n\n#### Cross-Platform Role Structure\n```\nhome/roles/\n default.nix -- Shared roles (imported by all)\n base-darwin/ -- Darwin-specific (aerospace)\n base-linux/ -- Linux-specific (plasma-manager, i3+sway)\n aerospace/ -- Darwin-only with assertion\n plasma-manager/ -- Linux-only (imported via base-linux)\n i3+sway/ -- Linux-only (imported via base-linux)\n [other roles] -- Cross-platform\n```\n\n#### Platform Conditionals Found (4 instances)\n1. `packages/claude-code/default.nix:42` - autoPatchelfHook for Linux\n2. `home/roles/emacs/default.nix:23` - emacs-macport vs emacs\n3. `home/roles/base/default.nix:34` - randomizedDelaySec only on Linux\n4. `home/roles/aerospace/default.nix:116` - Darwin-only assertion\n\n### Recommendations\n\n1. **Extract shared system config**: Create `roles/common.nix` for settings shared between NixOS and Darwin (timezone, nix settings, base packages)\n\n2. **Create WSL role**: Move wixos NVIDIA/graphics config to `roles/wsl.nix` for reusability\n\n3. **Consolidate flake overlays**: The overlay configuration is repeated 3x - could extract to a function\n\n4. **Document platform matrix**: Add comments in flake.nix explaining which modules support which platforms\n\n5. **Consider conditional imports**: Some roles (desktop, communication) have Linux-only packages but no guards - could add `lib.optionals pkgs.stdenv.isLinux`"} {"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.","status":"open","priority":3,"issue_type":"task","created_at":"2026-01-10T10:31:29.864582809-08:00","created_by":"johno","updated_at":"2026-01-10T10:31:29.864582809-08:00"} -{"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","status":"open","priority":2,"issue_type":"feature","created_at":"2026-01-10T12:29:28.686736386-08:00","created_by":"johno","updated_at":"2026-01-10T12:29:28.686736386-08:00"} +{"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","status":"in_review","priority":2,"issue_type":"feature","created_at":"2026-01-10T12:29:28.686736386-08:00","created_by":"johno","updated_at":"2026-01-10T13:06:04.616967608-08:00"} {"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.","status":"open","priority":4,"issue_type":"task","created_at":"2026-01-10T10:31:31.672159415-08:00","created_by":"johno","updated_at":"2026-01-10T10:31:31.672159415-08:00"} {"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-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"}