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]
### 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
+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/` |
| `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
Generated
+69 -4
View File
@@ -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",
+6 -7
View File
@@ -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";
+19 -7
View File
@@ -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;
}