diff --git a/.beads/issues.jsonl b/.beads/issues.jsonl index 92e740a..650a577 100644 --- a/.beads/issues.jsonl +++ b/.beads/issues.jsonl @@ -2,12 +2,14 @@ {"id":"nixpkgs-3k8","title":"Export project config as environment variable","description":"Export project configuration as home.sessionVariables (similar to zellij-ps pattern). Use JSON format for the env var since projects now have structured data (path + args).","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-05T12:45:50.803017318+01:00","created_by":"m3tam3re","updated_at":"2026-01-05T12:48:22.968626155+01:00","closed_at":"2026-01-05T12:48:22.968626155+01:00","close_reason":"Added home.sessionVariables.ROFI_PROJECT_OPENER_CONFIG with JSON config","dependencies":[{"issue_id":"nixpkgs-3k8","depends_on_id":"nixpkgs-hrh","type":"parent-child","created_at":"2026-01-05T12:46:03.16885012+01:00","created_by":"m3tam3re"}]} {"id":"nixpkgs-3w3","title":"Add authentication command and environment file generation to basecamp-mcp-server","description":"The basecamp-mcp-server package at pkgs/basecamp-mcp-server/default.nix wraps the FastMCP server for Basecamp 3 integration. Currently, there's no convenient way for users to:\n\n1. Set up OAuth 2.0 authentication interactively\n2. Generate a sample environment file with required credentials\n3. Guide users through the Basecamp OAuth flow\n\n## Current State\n\nThe package wraps but users must:\n- Manually clone the upstream repository\n- Run to generate template\n- Edit with OAuth credentials from https://launchpad.37signals.com/integrations\n- Run to complete OAuth flow\n- Handle token storage manually\n\n## Required Environment Variables\n\n### OAuth Configuration (Primary)\n- - OAuth client ID from Basecamp\n- - OAuth client secret\n- - Found in Basecamp URL: https://3.basecamp.com/ID/...\n- - Format: \"App Name (email@domain.com)\"\n- - http://localhost:8000/auth/callback\n- - For Flask session security\n\n### Basic Auth (Legacy)\n- - Email for direct API access\n- - Password for direct API access\n\n## Proposed Solution\n\nAdd a Nix package wrapper command () that:\n\n1. **Interactive Setup Wizard**\n - Guides users through OAuth app creation at launchpad.37signals.com\n - Prompts for credentials (with secure input for secrets)\n - Validates inputs before proceeding\n\n2. **Environment File Generation**\n - Creates or project-local \n - Includes all required variables with clear documentation\n - Sets secure permissions (600)\n - Provides example values\n\n3. **OAuth Flow Handler**\n - Starts local Flask server on port 8000\n - Opens browser to initiate OAuth flow\n - Handles callback and token exchange\n - Stores tokens securely in \n - Shows success/failure status\n\n4. **Documentation**\n - Inline help for all steps\n - Links to Basecamp integration setup\n - Account ID discovery instructions\n\n## References\n\n- Upstream repo: https://github.com/georgeantonopoulos/Basecamp-MCP-Server\n- Key files: , , , \n- OAuth endpoints: launchpad.37signals.com/authorization/new\n\n## Subtasks\n\n- [ ] Create auth command wrapper (basecamp-mcp-auth)\n- [ ] Implement interactive OAuth wizard\n- [ ] Generate sample environment file template\n- [ ] Add token storage handling\n- [ ] Update package documentation\n- [ ] Add Home Manager module support (optional)","status":"closed","priority":2,"issue_type":"feature","created_at":"2026-01-12T18:25:50.929926505+01:00","created_by":"m3tam3re","updated_at":"2026-01-12T19:12:57.941267399+01:00","closed_at":"2026-01-12T19:12:57.941267399+01:00","close_reason":"Closed"} {"id":"nixpkgs-5ml","title":"Update rofi-project-opener script to pass args to opencode","description":"Modify pkgs/rofi-project-opener script to read the new config format and launch opencode with: 'opencode \u003cdirectory\u003e \u003carguments\u003e' instead of just 'opencode' in the directory.","status":"closed","priority":1,"issue_type":"task","created_at":"2026-01-05T12:45:49.748958951+01:00","created_by":"m3tam3re","updated_at":"2026-01-05T12:49:40.800083615+01:00","closed_at":"2026-01-05T12:49:40.800083615+01:00","close_reason":"Script updated to read JSON config and pass args to opencode","dependencies":[{"issue_id":"nixpkgs-5ml","depends_on_id":"nixpkgs-w3u","type":"parent-child","created_at":"2026-01-05T12:46:02.338350208+01:00","created_by":"m3tam3re"},{"issue_id":"nixpkgs-5ml","depends_on_id":"nixpkgs-sys","type":"blocks","created_at":"2026-01-05T12:46:04.966269033+01:00","created_by":"m3tam3re"}]} +{"id":"nixpkgs-5yn","title":"fix: Gitea Actions runner missing Node.js for checkout action","description":"## Problem\n\nThe Gitea Actions workflow (nix-update.yml) is failing during the checkout step because the runner environment doesn't have Node.js in PATH.\n\n**Error from logs**:\n```\nCannot find: node in PATH\n❌ Failure - Main Checkout repository\n```\n\n**Root Cause**: The workflow uses `actions/checkout@v4` (GitHub Actions composite action), which requires Node.js to execute (`node dist/index.js`). The Gitea runner (using act/act) doesn't have Node.js available.\n\n**Impact**: Weekly automated package updates fail before any work can be done.\n\n## Solution Options\n\n### Option 1: Use git commands directly (RECOMMENDED)\nReplace `actions/checkout@v4` with a simple shell step using git:\n```yaml\n- name: Checkout repository\n run: |\n git clone --depth 0 ${{ github.server_url }}/${{ github.repository }}.git .\n git config --global user.name \"${{ env.GIT_AUTHOR_NAME }}\"\n git config --global user.email \"${{ env.GIT_AUTHOR_EMAIL }}\"\n```\n**Pros**: No external dependencies, simpler, faster\n**Cons**: Manual git config handling\n\n### Option 2: Install Node.js via Nix\nAdd step before checkout:\n```yaml\n- name: Install Node.js\n run: nix-env -iA nixpkgs.nodejs\n- name: Checkout repository\n uses: actions/checkout@v4\n```\n**Pros**: Can use GitHub Actions ecosystem\n**Cons**: Adds build time, unnecessary dependency\n\n### Option 3: Use Gitea-native checkout (if available)\nCheck if Gitea provides native checkout action equivalent.\n\n## Recommended Approach\n\n**Use Option 1** (git commands directly) because:\n- No additional dependencies\n- Faster (no package install overhead)\n- Simpler debugging\n- Compatible with Gitea Actions without Node.js requirement\n\n## Files to Change\n\n- `.gitea/workflows/nix-update.yml` - Replace checkout action with git commands\n\n## Testing\n\n1. Manually trigger workflow to verify checkout works\n2. Verify full workflow runs to completion\n3. Check that PR creation works with git auth token","status":"in_progress","priority":0,"issue_type":"bug","owner":"p@m3ta.dev","created_at":"2026-01-15T18:43:25.2367846+01:00","created_by":"m3tm3re","updated_at":"2026-01-15T18:49:30.909324691+01:00"} {"id":"nixpkgs-61l","title":"Update documentation to reflect latest changes","status":"closed","priority":3,"issue_type":"task","created_at":"2026-01-10T18:48:19.599467206+01:00","created_by":"m3tam3re","updated_at":"2026-01-10T19:12:26.294895563+01:00","closed_at":"2026-01-10T19:12:26.294895563+01:00","close_reason":"Documentation updated: Added stt-ptt language support docs, rofi-project-opener module docs, and updated zellij-ps docs"} {"id":"nixpkgs-69z","title":"n8n overlay -\u003e pkgs","description":"Create a full package definition in pkgs/n8n/default.nix that mirrors nixpkgs-unstable's n8n package but with version 2.4.1 and updated hashes from overlays/mods/n8n.nix. Register the new package in pkgs/default.nix. The overlay overrides: src (n8n-io/n8n@2.4.1) and pnpmDeps hash. Reference nixpkgs-unstable for the base package structure, then apply the version/hash modifications.","status":"closed","priority":2,"issue_type":"chore","owner":"p@m3ta.dev","created_at":"2026-01-13T19:42:35.643928163+01:00","created_by":"m3tm3re","updated_at":"2026-01-13T20:25:53.712987689+01:00","closed_at":"2026-01-13T20:25:53.712987689+01:00","close_reason":"Packages created successfully: pkgs/n8n/default.nix, pkgs/beads/default.nix, pkgs/opencode/default.nix. All packages build successfully."} {"id":"nixpkgs-7ez","title":"Add authentication command for basecamp-mcp-server","description":"Add a command for the basecamp-mcp-server that will guide the user through the authentication flow and create a sample environment file with the necessary values. This involves researching the original basecamp-mcp-server repository for authentication details and implementing a user-friendly authentication workflow.","status":"tombstone","priority":0,"issue_type":"feature","created_at":"2026-01-12T18:20:55.665717166+01:00","created_by":"m3tam3re","updated_at":"2026-01-13T19:46:32.112562429+01:00","dependencies":[{"issue_id":"nixpkgs-7ez","depends_on_id":"nixpkgs-3w3","type":"blocks","created_at":"2026-01-12T18:48:31.806330931+01:00","created_by":"m3tam3re"}],"deleted_at":"2026-01-13T19:46:32.112562429+01:00","deleted_by":"daemon","delete_reason":"delete","original_type":"feature"} -{"id":"nixpkgs-8jw","title":"fix: self-hosted nixos runner missing node in PATH for Gitea Actions","description":"The nix-update workflow fails on self-hosted nixos runner because node is not available in PATH. Error: Cannot find: node in PATH. Root cause: actions/checkout@v4 requires Node.js to execute post-checkout steps. The self-hosted nixos runner does not have node installed or not in PATH. Possible solutions: 1) Add Node.js to the nixos runner environment, 2) Use container-based runner instead of bare nixos, 3) Use a different checkout action that does not require node, 4) Configure PATH to include node installation. Impact: Automated package updates are completely blocked.","status":"open","priority":1,"issue_type":"bug","owner":"p@m3ta.dev","created_at":"2026-01-14T20:50:59.153145341+01:00","created_by":"m3tm3re","updated_at":"2026-01-14T20:51:34.044954071+01:00"} +{"id":"nixpkgs-8jw","title":"fix: self-hosted nixos runner missing node in PATH for Gitea Actions","description":"The nix-update workflow fails on self-hosted nixos runner because node is not available in PATH. Error: Cannot find: node in PATH. Root cause: actions/checkout@v4 requires Node.js to execute post-checkout steps. The self-hosted nixos runner does not have node installed or not in PATH. Possible solutions: 1) Add Node.js to the nixos runner environment, 2) Use container-based runner instead of bare nixos, 3) Use a different checkout action that does not require node, 4) Configure PATH to include node installation. Impact: Automated package updates are completely blocked.","status":"closed","priority":1,"issue_type":"bug","owner":"p@m3ta.dev","created_at":"2026-01-14T20:50:59.153145341+01:00","created_by":"m3tm3re","updated_at":"2026-01-15T18:49:30.973421095+01:00","closed_at":"2026-01-15T18:49:30.973421095+01:00","close_reason":"Duplicate of nixpkgs-5yn"} {"id":"nixpkgs-98j","title":"beads overlay -\u003e pkgs","description":"Create a full package definition in pkgs/beads/default.nix that mirrors nixpkgs-unstable's beads package but with version 0.47.1 and updated hashes from overlays/mods/beads.nix. Register the new package in pkgs/default.nix. The overlay overrides: src (steveyegge/beads@v0.47.1), vendorHash, and disables tests (doCheck = false). Reference nixpkgs-unstable for the base package structure, then apply the version/hash modifications.","status":"closed","priority":2,"issue_type":"chore","owner":"p@m3ta.dev","created_at":"2026-01-13T19:43:35.645275221+01:00","created_by":"m3tm3re","updated_at":"2026-01-13T20:25:53.715613545+01:00","closed_at":"2026-01-13T20:25:53.715613545+01:00","close_reason":"Packages created successfully: pkgs/n8n/default.nix, pkgs/beads/default.nix, pkgs/opencode/default.nix. All packages build successfully."} {"id":"nixpkgs-bqc","title":"opencode overlay -\u003e pkgs","description":"Create a full package definition in pkgs/opencode/default.nix that mirrors nixpkgs-unstable's opencode package but with version 1.1.18 and updated hashes from overlays/mods/opencode.nix. Register the new package in pkgs/default.nix. The overlay overrides: src (anomalyco/opencode@v1.1.18) and node_modules hash. Reference nixpkgs-unstable for the base package structure, then apply the version/hash modifications.","status":"closed","priority":2,"issue_type":"chore","owner":"p@m3ta.dev","created_at":"2026-01-13T19:43:36.450930004+01:00","created_by":"m3tm3re","updated_at":"2026-01-13T20:25:53.717928297+01:00","closed_at":"2026-01-13T20:25:53.717928297+01:00","close_reason":"Packages created successfully: pkgs/n8n/default.nix, pkgs/beads/default.nix, pkgs/opencode/default.nix. All packages build successfully."} +{"id":"nixpkgs-cev","title":"improve: Add comprehensive package build verification","description":"## Current State\n\nThe nix-update workflow has a basic build verification step (lines 143-159), but it needs improvement:\n\n```yaml\n- name: Verify packages build\n if: steps.update.outputs.has_updates == 'true'\n run: |\n PACKAGES=\"${{ steps.update.outputs.updated_packages }}\"\n echo \"Verifying builds for: $PACKAGES\"\n \n IFS=', ' read -ra PKG_ARRAY \u003c\u003c\u003c \"$PACKAGES\"\n for pkg in \"${PKG_ARRAY[@]}\"; do\n echo \"━━━ Building $pkg ━━━\"\n if nix build .#$pkg; then\n echo \"✓ $pkg built successfully\"\n else\n echo \"❌ Build failed for $pkg\"\n exit 1\n fi\n done\n```\n\n## Problems\n\n1. **No detailed failure reporting**: Only \"Build failed for $pkg\" message\n2. **No retry logic**: Transient failures immediately abort workflow\n3. **No build artifacts**: No logging of build output for debugging\n4. **No caching**: Every build starts from scratch\n5. **No parallel builds**: Sequential builds waste time\n6. **No PR blocking**: Even if build fails, PR still created\n\n## Requirements\n\n### 1. Enhanced Build Verification\n- Capture full build output to log file\n- Provide detailed error messages with stack traces\n- Exit with meaningful error codes\n- Log build duration for each package\n\n### 2. Parallel Build Support\nBuild packages in parallel to speed up verification:\n```bash\n# Build all packages in parallel\nnix build .#${pkg1} .#${pkg2} .#${pkg3} \u0026\nBUILD_PIDS=($!)\n```\n\n### 3. Build Failure Handling\n- Retry failed builds (configurable attempts, default 2)\n- On failure: Skip PR creation, notify owner\n- Add build status summary to workflow output\n\n### 4. Caching Strategy\nUse `--accept-flake-config` and `--impure` for better caching:\n```bash\nnix build .#$pkg --accept-flake-config --impure\n```\n\n### 5. Test Mode\nOptionally run tests if package has them:\n```bash\n# Check if package has tests\nif nix eval .#$pkg.tests 2\u003e/dev/null; then\n nix build .#$pkg.tests\nfi\n```\n\n## Implementation Plan\n\n1. Add `VERBOSITY` environment variable for build output control\n2. Implement parallel build logic with job tracking\n3. Add build log file generation (`/tmp/build-${pkg}.log`)\n4. Create build summary report (markdown table)\n5. Add `allow-failure` option for non-critical packages\n6. Integrate with tea CLI to add build status to PR\n\n## Files to Change\n\n- `.gitea/workflows/nix-update.yml` - Replace \"Verify packages build\" step\n\n## Example Output\n\n```\n━━━ Build Verification Summary ━━━\n✓ beads (1.2s) - Cached\n✓ n8n (45.3s) - Fresh build\n✓ opencode (12.1s) - Fresh build\n\nAll 3 packages built successfully\n```\n\n## Testing\n\n1. Trigger workflow with package that has known working build\n2. Trigger workflow with broken package (verify failure handling)\n3. Test parallel builds with 3+ packages\n4. Verify build logs are captured and uploaded as artifacts","status":"open","priority":1,"issue_type":"feature","owner":"p@m3ta.dev","created_at":"2026-01-15T18:45:47.587484936+01:00","created_by":"m3tm3re","updated_at":"2026-01-15T18:45:47.587484936+01:00"} {"id":"nixpkgs-e2u","title":"Change projectDirs from list to attrset with path and args","description":"Change projectDirs option type from 'types.listOf types.str' to an attrset like:\n\nprojectDirs = {\n nixpkgs = { path = \"~/p/NIX/nixpkgs\"; args = \"--agent Planner-Sisyphus\"; };\n myproject = { path = \"~/dev/myproject\"; }; # args optional\n};\n\nMust maintain backward compatibility consideration.","status":"closed","priority":1,"issue_type":"task","created_at":"2026-01-05T12:45:48.6992807+01:00","created_by":"m3tam3re","updated_at":"2026-01-05T12:48:12.178120719+01:00","closed_at":"2026-01-05T12:48:12.178120719+01:00","close_reason":"Changed projectDirs from listOf str to attrsOf submodule with path+args","dependencies":[{"issue_id":"nixpkgs-e2u","depends_on_id":"nixpkgs-w3u","type":"parent-child","created_at":"2026-01-05T12:46:00.515400521+01:00","created_by":"m3tam3re"}]} {"id":"nixpkgs-fka","title":"Ensure docs are staged and committed","status":"closed","priority":3,"issue_type":"task","created_at":"2026-01-10T18:48:18.05472995+01:00","created_by":"m3tam3re","updated_at":"2026-01-10T19:12:26.306880401+01:00","closed_at":"2026-01-10T19:12:26.306880401+01:00","close_reason":"Documentation staged and ready for commit"} {"id":"nixpkgs-hrh","title":"projectDirs on rofi-project-switcher should be exported to users home-manager environment","status":"closed","priority":2,"issue_type":"feature","created_at":"2026-01-05T11:46:43.640224459+01:00","created_by":"m3tam3re","updated_at":"2026-01-05T12:49:43.584087541+01:00","closed_at":"2026-01-05T12:49:43.584087541+01:00","close_reason":"Feature complete: config exported as ROFI_PROJECT_OPENER_CONFIG env var","dependencies":[{"issue_id":"nixpkgs-hrh","depends_on_id":"nixpkgs-w3u","type":"blocks","created_at":"2026-01-05T12:46:05.867959608+01:00","created_by":"m3tam3re"}]} diff --git a/.gitea/workflows/nix-update.yml b/.gitea/workflows/nix-update.yml index 25c72e6..51a1e7b 100644 --- a/.gitea/workflows/nix-update.yml +++ b/.gitea/workflows/nix-update.yml @@ -21,10 +21,8 @@ jobs: runs-on: nixos steps: - name: Checkout repository - uses: actions/checkout@v4 - with: - fetch-depth: 0 - token: ${{ secrets.NIX_UPDATE_TOKEN }} + run: | + git clone --depth 0 ${{ secrets.NIX_UPDATE_TOKEN }}@${{ github.server_url }}/${{ github.repository }}.git . - name: Check for available packages to update id: check-packages