From 6962de7e076ab68e1ead87770982a7d2e676fc02 Mon Sep 17 00:00:00 2001 From: m3tam3re Date: Sat, 8 Aug 2026 17:46:02 +0200 Subject: [PATCH] feat: buzz, basecamp-cli --- CHANGELOG.md | 15 +++++++++ docs/packages/README.md | 2 ++ flake.lock | 73 ++++++++++++++++++++++++++++++++++++++--- flake.nix | 13 ++++---- pkgs/default.nix | 26 +++++++++++---- 5 files changed, 111 insertions(+), 18 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5d23fd8..d494967 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,24 +6,30 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/). ## [Unreleased] ### 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 ### 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 ### Changed + - Remove duplicate opencode-rules.nix (backward-compat alias preserved) - Tool-agnostic naming in coding-rules lib internals - Remove redundant overlay entries for non-existent flake inputs - Remove redundant 'additions' overlay (identical to 'default') ### Removed + - Dead overlay entries for non-existent flake inputs - Legacy `mkOpencodeRules` alias and `lib.opencode-rules` backward-compat entry (use `mkCodingRules` / `lib.coding-rules`) ## [0.4.0] - 2026-04-15 ### Added + - Pi-agent wrapper with systemd sandbox and per-host-user policy - Containerized Pi agent - `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 ### Changed + - OpenCode flake input updated through v1.1.65 to v1.3.6 - Switched from local opencode package to upstream flake input - 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 ### Fixed + - Pi settings sync - Remove openwork sidecars in preFixup to prevent .opencode-wrapped 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 ### Added + - `notesmd-cli` package with flake checks - `sidecar` and `td` packages - `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) ### Changed + - Nix-update CI workflow optimized with caching and parallel processing - Restructured n8n version handling for nix-update compatibility - Switched formatter from nixpkgs-fmt to alejandra - Replace local opencode with upstream flake input v1.1.27 ### Fixed + - n8n build error - n8n pnpm hash - n8n update script @@ -85,6 +96,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/). ## [0.2.0] - 2026-01-13 ### Added + - Gitea Actions workflow for automated package updates with nix-update - `n8n`, `beads`, and `opencode` packages - `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`) ### Changed + - Beads updated through v0.49.1 - N8n updated through v2.8.1 - Opencode updated through v1.1.18 - Documentation expanded with comprehensive patterns and HM module docs ### Fixed + - Python env version fix for marimo ## [0.1.0] - 2025-10-04 ### Added + - Initial flake setup with packages, overlays, modules, and shells - NixOS and Home Manager module infrastructure - `lib/` shared utilities diff --git a/docs/packages/README.md b/docs/packages/README.md index ddf95a7..72f1dd8 100644 --- a/docs/packages/README.md +++ b/docs/packages/README.md @@ -20,6 +20,7 @@ These packages are built from source in `pkgs//`: | `launch-webapp` | Launch web applications | Shell | `pkgs/launch-webapp/` | | `mem0` | AI memory assistant with vector storage | Python | `pkgs/mem0/` | | `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/` | | `openwork` | Open-source Claude Cowork alternative powered by opencode | AppImage | `pkgs/openwork/` | | `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 | |---------|--------|-------------|----------| | `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 diff --git a/flake.lock b/flake.lock index ffa9cb6..c7b417b 100644 --- a/flake.lock +++ b/flake.lock @@ -23,20 +23,42 @@ ] }, "locked": { - "lastModified": 1785348116, - "narHash": "sha256-AVycTcomtfvQJ/AHvMg5xu7lVoOzDXxjN+pV7mqUIQ4=", + "lastModified": 1785979955, + "narHash": "sha256-OP96Ak4OBydR98keoNYKdGY8j+wrIys0LafSZgwS20g=", "owner": "basecamp", "repo": "basecamp-cli", - "rev": "e1059fb123a03295ce6176272e4bbaf43d7971c6", + "rev": "61a5591de1da9bc99c56b8072a4d6bad2c9b9e47", "type": "github" }, "original": { "owner": "basecamp", - "ref": "v0.8.0-rc.1", + "ref": "v0.9.0", "repo": "basecamp-cli", "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": { "locked": { "lastModified": 1785318670, @@ -128,11 +150,54 @@ "inputs": { "agents": "agents", "basecamp": "basecamp", + "buzz": "buzz", "nixpkgs": "nixpkgs", "nixpkgs-master": "nixpkgs-master", "opencode": "opencode", "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", diff --git a/flake.nix b/flake.nix index e9cae72..fe9a3a2 100644 --- a/flake.nix +++ b/flake.nix @@ -6,23 +6,22 @@ nixpkgs-master.url = "github:NixOS/nixpkgs/master"; basecamp = { - url = "github:basecamp/basecamp-cli/v0.8.0-rc.1"; + url = "github:basecamp/basecamp-cli/v0.9.0"; inputs.nixpkgs.follows = "nixpkgs"; }; - # openspec - spec-driven development for AI coding assistants openspec = { url = "github:Fission-AI/OpenSpec"; 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"; + buzz = { + url = "github:mulatta/buzz.nix"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + # Agent definitions and coding rules agents = { url = "git+https://code.m3ta.dev/m3tam3re/AGENTS"; diff --git a/pkgs/default.nix b/pkgs/default.nix index 5c5c939..aa7493f 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -44,13 +44,25 @@ in { # 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 # override back to the plain pass-through. - basecamp = inputs.basecamp.packages.${system}.default.overrideAttrs (_: { - version = "0.8.0-rc.1"; - vendorHash = "sha256-m1UF/Ga9C9GJF0JtZMXFOX88chb+f279/aoAaiwfxvg="; - # 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. - __intentionallyOverridingVersion = true; - }); + # basecamp = inputs.basecamp.packages.${system}.default.overrideAttrs (_: { + # version = "0.8.0-rc.1"; + # vendorHash = "sha256-m1UF/Ga9C9GJF0JtZMXFOX88chb+f279/aoAaiwfxvg="; + # # 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. + # __intentionallyOverridingVersion = true; + # }); + basecamp = inputs.basecamp.packages.${system}.default; openspec = inputs.openspec.packages.${system}.default; 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; }