feat: buzz, basecamp-cli

This commit is contained in:
m3tam3re
2026-08-08 17:46:02 +02:00
parent ce9f5422d0
commit 6962de7e07
5 changed files with 111 additions and 18 deletions
+15
View File
@@ -6,24 +6,30 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/).
## [Unreleased] ## [Unreleased]
### Added ### Added
- `buzz` / `buzz-desktop` package — Block's "hive mind" desktop app, consumed as a pass-through from the `mulatta/buzz.nix` flake input. The upstream AppImage lacks the sidecars (`buzz-agent`, `buzz-acp`, `buzz-dev-mcp`, `git-credential-nostr`) and the Tauri-specific GStreamer integration needed to actually run, so we consume mulatta's from-source Tauri build instead. Builds entirely from source — no third-party binary cache (deliberate: don't want to trust mulatta's prebuilt artifacts). First build is slow.
- `opencode-desktop` re-added as a pure pass-through from the `anomalyco/opencode` flake input (Electron app, tracked on `dev`); the input intentionally does not follow nixpkgs so upstream's `node_modules` FOD hashes stay valid - `opencode-desktop` re-added as a pure pass-through from the `anomalyco/opencode` flake input (Electron app, tracked on `dev`); the input intentionally does not follow nixpkgs so upstream's `node_modules` FOD hashes stay valid
### Fixed ### Fixed
- `openwork` 0.17.30: upstream renamed desktop/icon assets from `@openworkdesktop.{desktop,png}` to `openwork.{desktop,png}` and dropped the `Icon=`/`--no-sandbox` substitutions that are no longer needed - `openwork` 0.17.30: upstream renamed desktop/icon assets from `@openworkdesktop.{desktop,png}` to `openwork.{desktop,png}` and dropped the `Icon=`/`--no-sandbox` substitutions that are no longer needed
### Changed ### Changed
- Remove duplicate opencode-rules.nix (backward-compat alias preserved) - Remove duplicate opencode-rules.nix (backward-compat alias preserved)
- Tool-agnostic naming in coding-rules lib internals - Tool-agnostic naming in coding-rules lib internals
- Remove redundant overlay entries for non-existent flake inputs - Remove redundant overlay entries for non-existent flake inputs
- Remove redundant 'additions' overlay (identical to 'default') - Remove redundant 'additions' overlay (identical to 'default')
### Removed ### Removed
- Dead overlay entries for non-existent flake inputs - Dead overlay entries for non-existent flake inputs
- Legacy `mkOpencodeRules` alias and `lib.opencode-rules` backward-compat entry (use `mkCodingRules` / `lib.coding-rules`) - Legacy `mkOpencodeRules` alias and `lib.opencode-rules` backward-compat entry (use `mkCodingRules` / `lib.coding-rules`)
## [0.4.0] - 2026-04-15 ## [0.4.0] - 2026-04-15
### Added ### Added
- Pi-agent wrapper with systemd sandbox and per-host-user policy - Pi-agent wrapper with systemd sandbox and per-host-user policy
- Containerized Pi agent - Containerized Pi agent
- `lib.agents.nix` with loadCanonical, renderers (OpenCode, Claude Code, Pi), and shellHook - `lib.agents.nix` with loadCanonical, renderers (OpenCode, Claude Code, Pi), and shellHook
@@ -39,6 +45,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/).
- Opencode dev shell with mkCodingRules demo - Opencode dev shell with mkCodingRules demo
### Changed ### Changed
- OpenCode flake input updated through v1.1.65 to v1.3.6 - OpenCode flake input updated through v1.1.65 to v1.3.6
- Switched from local opencode package to upstream flake input - Switched from local opencode package to upstream flake input
- Removed opencode-desktop (awaiting upstream fix), later re-enabled - Removed opencode-desktop (awaiting upstream fix), later re-enabled
@@ -46,6 +53,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/).
- Flake inputs updated throughout - Flake inputs updated throughout
### Fixed ### Fixed
- Pi settings sync - Pi settings sync
- Remove openwork sidecars in preFixup to prevent .opencode-wrapped conflict - Remove openwork sidecars in preFixup to prevent .opencode-wrapped conflict
- Remove sidecar binaries from openwork $out/bin to fix buildEnv conflict - Remove sidecar binaries from openwork $out/bin to fix buildEnv conflict
@@ -56,6 +64,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/).
## [0.3.0] - 2026-02-20 ## [0.3.0] - 2026-02-20
### Added ### Added
- `notesmd-cli` package with flake checks - `notesmd-cli` package with flake checks
- `sidecar` and `td` packages - `sidecar` and `td` packages
- `opencode-desktop` package with Wayland support - `opencode-desktop` package with Wayland support
@@ -63,12 +72,14 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/).
- `kestracli` / `kestractl` package (1.0.0 to 1.2.2) - `kestracli` / `kestractl` package (1.0.0 to 1.2.2)
### Changed ### Changed
- Nix-update CI workflow optimized with caching and parallel processing - Nix-update CI workflow optimized with caching and parallel processing
- Restructured n8n version handling for nix-update compatibility - Restructured n8n version handling for nix-update compatibility
- Switched formatter from nixpkgs-fmt to alejandra - Switched formatter from nixpkgs-fmt to alejandra
- Replace local opencode with upstream flake input v1.1.27 - Replace local opencode with upstream flake input v1.1.27
### Fixed ### Fixed
- n8n build error - n8n build error
- n8n pnpm hash - n8n pnpm hash
- n8n update script - n8n update script
@@ -85,6 +96,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/).
## [0.2.0] - 2026-01-13 ## [0.2.0] - 2026-01-13
### Added ### Added
- Gitea Actions workflow for automated package updates with nix-update - Gitea Actions workflow for automated package updates with nix-update
- `n8n`, `beads`, and `opencode` packages - `n8n`, `beads`, and `opencode` packages
- `stt-ptt` package with auto-language detection - `stt-ptt` package with auto-language detection
@@ -95,17 +107,20 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/).
- Port helper library (`lib/ports.nix`) - Port helper library (`lib/ports.nix`)
### Changed ### Changed
- Beads updated through v0.49.1 - Beads updated through v0.49.1
- N8n updated through v2.8.1 - N8n updated through v2.8.1
- Opencode updated through v1.1.18 - Opencode updated through v1.1.18
- Documentation expanded with comprehensive patterns and HM module docs - Documentation expanded with comprehensive patterns and HM module docs
### Fixed ### Fixed
- Python env version fix for marimo - Python env version fix for marimo
## [0.1.0] - 2025-10-04 ## [0.1.0] - 2025-10-04
### Added ### Added
- Initial flake setup with packages, overlays, modules, and shells - Initial flake setup with packages, overlays, modules, and shells
- NixOS and Home Manager module infrastructure - NixOS and Home Manager module infrastructure
- `lib/` shared utilities - `lib/` shared utilities
+2
View File
@@ -20,6 +20,7 @@ These packages are built from source in `pkgs/<name>/`:
| `launch-webapp` | Launch web applications | Shell | `pkgs/launch-webapp/` | | `launch-webapp` | Launch web applications | Shell | `pkgs/launch-webapp/` |
| `mem0` | AI memory assistant with vector storage | Python | `pkgs/mem0/` | | `mem0` | AI memory assistant with vector storage | Python | `pkgs/mem0/` |
| `msty-studio` | Msty Studio application | Python | `pkgs/msty-studio/` | | `msty-studio` | Msty Studio application | Python | `pkgs/msty-studio/` |
| `buzz` | Hive mind communication platform (desktop app) | Pass-through | `pkgs/default.nix` |
| `openshell` | AI shell assistant | Go | `pkgs/openshell/` | | `openshell` | AI shell assistant | Go | `pkgs/openshell/` |
| `openwork` | Open-source Claude Cowork alternative powered by opencode | AppImage | `pkgs/openwork/` | | `openwork` | Open-source Claude Cowork alternative powered by opencode | AppImage | `pkgs/openwork/` |
| `pomodoro-timer` | Pomodoro timer utility | Shell | `pkgs/pomodoro-timer/` | | `pomodoro-timer` | Pomodoro timer utility | Shell | `pkgs/pomodoro-timer/` |
@@ -44,6 +45,7 @@ These packages are imported directly from flake inputs with minor modifications:
| Package | Source | Modification | Location | | Package | Source | Modification | Location |
|---------|--------|-------------|----------| |---------|--------|-------------|----------|
| `opencode-desktop` | `inputs.opencode` | Electron desktop app (pure pass-through) | `pkgs/default.nix` | | `opencode-desktop` | `inputs.opencode` | Electron desktop app (pure pass-through) | `pkgs/default.nix` |
| `buzz` / `buzz-desktop` | `inputs.buzz` (mulatta/buzz.nix) | From-source Tauri build with sidecars; the upstream AppImage lacks the sidecars + Tauri GStreamer integration. Builds from source without any third-party binary cache — first build is slow (Rust + sherpa-onnx), subsequent builds cached locally | `pkgs/default.nix` |
## Adding Package Documentation ## Adding Package Documentation
Generated
+69 -4
View File
@@ -23,20 +23,42 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1785348116, "lastModified": 1785979955,
"narHash": "sha256-AVycTcomtfvQJ/AHvMg5xu7lVoOzDXxjN+pV7mqUIQ4=", "narHash": "sha256-OP96Ak4OBydR98keoNYKdGY8j+wrIys0LafSZgwS20g=",
"owner": "basecamp", "owner": "basecamp",
"repo": "basecamp-cli", "repo": "basecamp-cli",
"rev": "e1059fb123a03295ce6176272e4bbaf43d7971c6", "rev": "61a5591de1da9bc99c56b8072a4d6bad2c9b9e47",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "basecamp", "owner": "basecamp",
"ref": "v0.8.0-rc.1", "ref": "v0.9.0",
"repo": "basecamp-cli", "repo": "basecamp-cli",
"type": "github" "type": "github"
} }
}, },
"buzz": {
"inputs": {
"nixpkgs": [
"nixpkgs"
],
"rust-overlay": "rust-overlay",
"treefmt-nix": "treefmt-nix"
},
"locked": {
"lastModified": 1785934673,
"narHash": "sha256-U/hMY9kkcdxt497yfGuT7+ytrRmE+E15KF6Sc6VrbZo=",
"owner": "mulatta",
"repo": "buzz.nix",
"rev": "f4bb77a87f1ec10e5ad51cfe6d0c4fca481c0534",
"type": "github"
},
"original": {
"owner": "mulatta",
"repo": "buzz.nix",
"type": "github"
}
},
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1785318670, "lastModified": 1785318670,
@@ -128,11 +150,54 @@
"inputs": { "inputs": {
"agents": "agents", "agents": "agents",
"basecamp": "basecamp", "basecamp": "basecamp",
"buzz": "buzz",
"nixpkgs": "nixpkgs", "nixpkgs": "nixpkgs",
"nixpkgs-master": "nixpkgs-master", "nixpkgs-master": "nixpkgs-master",
"opencode": "opencode", "opencode": "opencode",
"openspec": "openspec" "openspec": "openspec"
} }
},
"rust-overlay": {
"inputs": {
"nixpkgs": [
"buzz",
"nixpkgs"
]
},
"locked": {
"lastModified": 1785820796,
"narHash": "sha256-sZXy8mzUMi2cOGulhoW4HWAZB6JhXOAx1x8J4auZFWk=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "b6916ba032e02122d6ed3064f40cabe937363d43",
"type": "github"
},
"original": {
"owner": "oxalica",
"repo": "rust-overlay",
"type": "github"
}
},
"treefmt-nix": {
"inputs": {
"nixpkgs": [
"buzz",
"nixpkgs"
]
},
"locked": {
"lastModified": 1785360170,
"narHash": "sha256-XE1lKgQ3eIO3E7zWryqcRsax+mYXod/5RHBn4YaR9YE=",
"owner": "numtide",
"repo": "treefmt-nix",
"rev": "d1187f8bc71fb8aab02395869ec3f5c1920f75c0",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "treefmt-nix",
"type": "github"
}
} }
}, },
"root": "root", "root": "root",
+6 -7
View File
@@ -6,23 +6,22 @@
nixpkgs-master.url = "github:NixOS/nixpkgs/master"; nixpkgs-master.url = "github:NixOS/nixpkgs/master";
basecamp = { basecamp = {
url = "github:basecamp/basecamp-cli/v0.8.0-rc.1"; url = "github:basecamp/basecamp-cli/v0.9.0";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
# openspec - spec-driven development for AI coding assistants
openspec = { openspec = {
url = "github:Fission-AI/OpenSpec"; url = "github:Fission-AI/OpenSpec";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
# opencode - open-source coding agent; provides the opencode-desktop
# Electron app. NOTE: intentionally does NOT follow nixpkgs. Upstream
# pins a node_modules fixed-output derivation hash in nix/hashes.json
# against its own nixpkgs snapshot; following would risk FOD hash
# mismatches. Tracking the `dev` default branch (flake.lock pins the rev).
opencode.url = "github:anomalyco/opencode/dev"; opencode.url = "github:anomalyco/opencode/dev";
buzz = {
url = "github:mulatta/buzz.nix";
inputs.nixpkgs.follows = "nixpkgs";
};
# Agent definitions and coding rules # Agent definitions and coding rules
agents = { agents = {
url = "git+https://code.m3ta.dev/m3tam3re/AGENTS"; url = "git+https://code.m3ta.dev/m3tam3re/AGENTS";
+19 -7
View File
@@ -44,13 +44,25 @@ in {
# We override both here so the input builds and reports the rc.1 version. # We override both here so the input builds and reports the rc.1 version.
# When upstream fixes package.nix (expected for the 0.8.0 final), drop this # When upstream fixes package.nix (expected for the 0.8.0 final), drop this
# override back to the plain pass-through. # override back to the plain pass-through.
basecamp = inputs.basecamp.packages.${system}.default.overrideAttrs (_: { # basecamp = inputs.basecamp.packages.${system}.default.overrideAttrs (_: {
version = "0.8.0-rc.1"; # version = "0.8.0-rc.1";
vendorHash = "sha256-m1UF/Ga9C9GJF0JtZMXFOX88chb+f279/aoAaiwfxvg="; # vendorHash = "sha256-m1UF/Ga9C9GJF0JtZMXFOX88chb+f279/aoAaiwfxvg=";
# src stays the flake input (lib.cleanSource ./.. pinned by flake.lock to # # src stays the flake input (lib.cleanSource ./.. pinned by flake.lock to
# rc.1) — only the version label that upstream forgot to bump is corrected. # # rc.1) — only the version label that upstream forgot to bump is corrected.
__intentionallyOverridingVersion = true; # __intentionallyOverridingVersion = true;
}); # });
basecamp = inputs.basecamp.packages.${system}.default;
openspec = inputs.openspec.packages.${system}.default; openspec = inputs.openspec.packages.${system}.default;
opencode-desktop = inputs.opencode.packages.${system}.opencode-desktop; opencode-desktop = inputs.opencode.packages.${system}.opencode-desktop;
# buzz: Block's "hive mind" desktop app. Consumed from mulatta/buzz.nix
# because the upstream AppImage lacks the sidecars + Tauri GStreamer
# integration needed to actually run. Exposed under both `buzz-desktop`
# (mulatta's name) and `buzz` (the short alias). Builds entirely from
# source — no third-party binary cache. First build is slow (Rust + Tauri
# + sherpa-onnx); subsequent builds are cached in the local nix store.
# Note: mulatta only publishes packages for x86_64-linux, aarch64-linux,
# aarch64-darwin — x86_64-darwin will throw at build time.
buzz-desktop = inputs.buzz.packages.${system}.buzz-desktop;
buzz = inputs.buzz.packages.${system}.buzz-desktop;
} }