basecamp: bump flake input to github:basecamp/basecamp-cli/v0.8.0-rc.1.
The rc.1 tag ships a stale nix/package.nix whose vendorHash does not
match the tagged go.sum (buildGoModule FOD fails) and whose `version`
was not bumped (still reads 0.7.2). Override both on the pass-through so
the input builds and reports 0.8.0-rc.1. Drop the override back to a
plain pass-through once upstream fixes package.nix for the 0.8.0 final.
vibetyper: 1.4.0 -> 1.4.1 with refreshed AppImage sha256.
Upstream renamed the desktop file from openwork.desktop to
com.differentai.openwork.desktop (reverse-DNS), causing the build to
fail with "cannot stat '.../openwork.desktop'". Source the new name
while keeping the install destination as openwork.desktop so icon and
Exec substitution stay unchanged.
n8n 2.32 replaced the sheetjs-CDN xlsx@0.20.2 tarball (which lacked an
integrity checksum and had to be patched into pnpm-lock.yaml) with the
regular npm package @e965/xlsx@0.20.3, which already carries an integrity
field. The patchXlsxLockfile workaround is therefore obsolete and actively
harmful: substituteInPlace --replace-fail no longer matches, making
fetchPnpmDeps fail with a build error (not a hash mismatch), which left the
fake-hash sentinel behind in n8n.nix on update.
- overlays/mods/n8n.nix: remove xlsx workaround; bump to 2.32.6 with real
src (sha256-wWm6...) and pnpmDeps (sha256-QzUJCF+...) hashes.
- tests/n8n-overlay-test.nix: update expectations to 2.32.6; drop the
obsolete checkXlsxIntegrityPatch.
- overlays/mods/update.sh: use a literal SRI sentinel instead of lib.fakeHash
(lib is not in scope inside the {prev}: overlay); add a snapshot-based EXIT
trap that restores n8n.nix on any failure (error/SIGINT/SIGTERM/killed
build) while preserving pre-existing working-tree edits; surface a clearer
message when fetchPnpmDeps fails for a non-hash reason.
Expose the opencode-desktop Electron app as a package via a pure
pass-through from a new 'opencode' flake input
(github:anomalyco/opencode/dev).
The input intentionally does NOT follow nixpkgs: upstream pins a
node_modules fixed-output derivation hash in nix/hashes.json against
its own nixpkgs snapshot, so following would risk FOD hash mismatches.
- flake.nix: add 'opencode' input (own nixpkgs, dev branch)
- pkgs/default.nix: opencode-desktop pass-through
- docs/packages/opencode.md + README.md: refreshed (Electron, not Tauri)
- CHANGELOG: unreleased entry
Verified: nix flake show lists opencode-desktop (all 4 systems);
output opencode-desktop-1.18.9+f720490 builds & wraps electron-41.
The pinned n8n version moved to 2.31.6 in 30c753f but the test was still
asserting 2.29.8 with the old src/pnpmDeps hashes, so the test broke.
Sync expectedVersion, expectedSrcHash and expectedPnpmHash to the values
currently in overlays/mods/n8n.nix.
The eigent package directory was deleted in 96f5d7f (which was titled
"chore: update n8n, openwork, vibetyper") but the callPackage reference
in pkgs/default.nix and the row in docs/packages/README.md were left
behind. As a result `nix build .#eigent` and `nix flake check` failed
with "undefined variable" errors when the eigent attribute was forced.
Drop both references so the package set evaluates cleanly.
- overlays/mods/n8n.nix: add passthru.updateScript pointing to ./update.sh
- overlays/mods/update.sh: self-contained updater that fetches the latest
stable n8n-io/n8n release, recomputes both src and pnpmDeps hashes
(src via nix-prefetch-url with --name workaround for the `@` in the tag,
pnpmDeps via the lib.fakeHash mismatch trick)
- .gitea/workflows/nix-update.yml: discover and run overlays/mods/*/update.sh
after the pkgs/ loop; verify step skips overlay/* entries (covered by flake check)
The test suite (tests/n8n-overlay-test.nix) forbids exporting a local n8n
package, so the overlay cannot be exposed via pkgs/n8n/ — the workflow gets
an explicit overlay-discovery block instead.
- vibetyper/msty-studio: unversioned AppImage URLs → HEAD/Last-Modified
check via custom update.sh, refreshes sha256 when upstream binary changes
- zellij-ps: switch to branch-tracking (master tip via Gitea API) since
helper-scripts repo has no tags
- all three expose passthru.updateScript so the existing CI workflow
discovers them via is_custom_update_script
openwork bundles opencode and other sidecars into bin/ during postFixup.
These are internal Tauri app resources, not user-facing executables.
When both openwork and opencode are installed in home-manager, buildEnv
fails with a conflict on .opencode-wrapped.
Remove sidecar binaries (opencode, opencode-router, openwork-server,
openwork-orchestrator, chrome-devtools-mcp, versions.json) from $out/bin
in postFixup so they don't leak into the top-level profile.
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
- Fix broken beads reference in pkgs/default.nix
- Convert opencode.md to deprecation notice with llm-agents.nix link
- Convert beads.md to removal notice
- Remove beads, opencode, openspec from README.md packages table
- Remove beads, opencode from docs/README.md packages list
- Store version without 'n8n@' prefix (e.g., '2.8.3' not 'n8n@2.8.3')
- Construct tag with prefix: tag = "n8n@${version}"
- Update to version 2.8.3 with correct hashes
This allows nix-update to work correctly with the custom update.sh
script that strips the 'n8n@' prefix from GitHub release tags.
Add detection logic to distinguish between:
- nix-update-script (standard packages like beads, td, mem0, etc.)
- Custom scripts (like n8n's update.sh that strips 'n8n@' prefix)
For custom scripts, run them directly with standard env vars:
- UPDATE_NIX_NAME, UPDATE_NIX_PNAME
- UPDATE_NIX_OLD_VERSION, UPDATE_NIX_ATTR_PATH
This ensures n8n only gets stable releases via its custom script.
- Remove --use-update-script flag that breaks with flake-only repos
(nix-update-script expects default.nix at repo root)
- Fix GitHub API jq filter for detecting prereleases
- Fix Summary step bash syntax for handling input variables
- Format lib/ files that were failing formatting check
- Replace hardcoded opencode update step with dynamic discovery of all
version-pinned flake inputs via nix flake metadata --json
- Add --use-update-script flag to nix-update command so packages with
custom passthru.updateScript (like n8n) use their custom scripts
- Update output variables from update-opencode to update-flake-inputs
- Update Summary step to reflect new generic flake input handling
- Create lib/opencode-rules.nix with mkOpencodeRules function
- Update lib/default.nix to import opencode-rules module
- Pattern follows ports.nix: {lib}: { mkOpencodeRules = ...; }
Refs: T2, T3 of rules-system plan
- Add notesmd-cli package for Obsidian CLI interaction
- Add flake checks for package build verification
- Add documentation for notesmd-cli, sidecar, and td
- Update AGENTS.md to reference td instead of beads
- Format pkgs/default.nix with proper braces
- Add `opencode` flake input pinned to v1.1.27 for stability
- Remove local `pkgs/opencode` derivation and overlay
- Add `opencode` and `opencode-desktop` to `pkgs/default.nix` from input
Removed DeterminateSystems/magic-nix-cache-action to resolve "Cannot convert ArchOs (amd64-linux)" error in Gitea Actions. The action is GitHub-specific and doesn't work with act_runner's platform detection. Workflow will now use default cache.nixos.org substituter.
Note: Consider migrating to Attic binary cache for better performance in the future.
- Add Magic Nix Cache for 3-9x faster builds
- Add --use-github-releases to only update stable versions
- Remove SKIP_PACKAGES, use dynamic discovery via passthru.updateScript
- Implement 4 concurrent update jobs for 4x speedup
- Add nix flake check for comprehensive validation
- Collect all build failures instead of failing on first
- Fix git reset bug that was destroying commits
- Add job timeout to prevent hanging
- Add detailed job summary and log artifacts