From 8a9b0f70ff02dee1f80f661e2ef4450caa340d97 Mon Sep 17 00:00:00 2001 From: Ryan Hughes Date: Fri, 9 Oct 2026 19:11:59 -0400 Subject: [PATCH] Add buzz 0.5.28: Block's desktop workspace for humans and agents (#919) Buzz (https://github.com/block/buzz, Apache-2.0) is a Tauri desktop app on a Nostr relay. Upstream ships Linux builds for x86_64 only, so this builds the desktop-v0.5.28 tag from source for x86_64 and aarch64, following upstream's release-linux job: the six sidecar binaries from the root workspace, then the app with --features mesh-llm. The updater stays compiled out (its key and endpoint are unset), so pacman owns updates. On the fast ring; the watch follows desktop-v* releases. On aarch64, -march gains +crypto so sha2-asm can assemble its SHA instructions; sha2 still detects them at runtime. Built natively for aarch64 with bin/build and launched with isolated HOME/XDG dirs: the window opens and renders the bundled frontend. --- pkgbuilds/buzz/.omarchy/package.json | 10 +++ pkgbuilds/buzz/PKGBUILD | 92 ++++++++++++++++++++++++++++ pkgbuilds/buzz/buzz.desktop | 10 +++ 3 files changed, 112 insertions(+) create mode 100644 pkgbuilds/buzz/.omarchy/package.json create mode 100644 pkgbuilds/buzz/PKGBUILD create mode 100644 pkgbuilds/buzz/buzz.desktop diff --git a/pkgbuilds/buzz/.omarchy/package.json b/pkgbuilds/buzz/.omarchy/package.json new file mode 100644 index 00000000..a92266b9 --- /dev/null +++ b/pkgbuilds/buzz/.omarchy/package.json @@ -0,0 +1,10 @@ +{ + "source": "local", + "release_ring": "fast", + "upstream": { + "watch": { + "github": "block/buzz", + "pattern": "desktop-v(?P[0-9]+(?:\\.[0-9]+)*)" + } + } +} diff --git a/pkgbuilds/buzz/PKGBUILD b/pkgbuilds/buzz/PKGBUILD new file mode 100644 index 00000000..631ae61b --- /dev/null +++ b/pkgbuilds/buzz/PKGBUILD @@ -0,0 +1,92 @@ +pkgname=buzz +pkgver=0.5.28 +pkgrel=1 +pkgdesc='Workspace where humans and AI agents build together, on a Nostr relay you own' +arch=('x86_64' 'aarch64') +url='https://github.com/block/buzz' +license=('Apache-2.0') + +depends=( + 'alsa-lib' + 'cairo' + 'gcc-libs' + 'gdk-pixbuf2' + 'glib2' + 'glibc' + 'gst-plugins-good' + 'gtk3' + 'hicolor-icon-theme' + 'libayatana-appindicator' + 'libsoup3' + 'opus' + 'webkit2gtk-4.1' +) +makedepends=('cargo' 'cmake' 'nodejs' 'pnpm' 'pkgconf') +conflicts=('buzz-appimage' 'buzz-bin' 'buzz-desktop-git') +# Arch's GCC LTO objects cannot be consumed when crates compile bundled C +# libraries (secp256k1-sys among them). +options=('!lto') + +_srcdir="$pkgname-desktop-v$pkgver" +source=("$pkgname-$pkgver.tar.gz::$url/archive/refs/tags/desktop-v$pkgver.tar.gz" + 'buzz.desktop') +sha256sums=('4ba8c250d6ebb075ba60e6c4d217b77ea605b183161715b77629bd8660b81a43' + '3c152420e67c64f5046cc0e10a9d948e1c7d3efa512582ad279f073b0900526a') + +# The sidecars the desktop app spawns from its own directory, from upstream's +# scripts/bundle-sidecars.sh. +_sidecars=(buzz-acp buzz-agent buzz-backend-kubernetes buzz-dev-mcp git-credential-nostr buzz) + +prepare() { + cd "$_srcdir" + + export npm_config_store_dir="$srcdir/pnpm-store" + pnpm install --frozen-lockfile + + # The sidecars build in the root workspace; the app has its own lockfile. + cargo fetch --locked --target "$CARCH-unknown-linux-gnu" + cargo fetch --locked --target "$CARCH-unknown-linux-gnu" \ + --manifest-path desktop/src-tauri/Cargo.toml +} + +build() { + cd "$_srcdir" + + export npm_config_store_dir="$srcdir/pnpm-store" + # audiopus_sys's vendored opus fallback declares an old CMake minimum. + export CMAKE_POLICY_VERSION_MINIMUM=3.5 + # sha2-asm assembles ARMv8 SHA instructions, which Arch Linux ARM's + # -march=armv8-a leaves out. sha2 still checks for them at runtime. + [[ $CARCH == aarch64 ]] && CFLAGS=${CFLAGS/-march=armv8-a/-march=armv8-a+crypto} + + cargo build --frozen --release -p buzz-acp -p buzz-agent -p buzz-backend-kubernetes \ + -p buzz-dev-mcp -p git-credential-nostr -p buzz-cli + ./scripts/bundle-sidecars.sh + + # Upstream's Linux release build, without its bundles. Leaving + # BUZZ_UPDATER_PUBLIC_KEY and BUZZ_UPDATER_ENDPOINT unset compiles the + # self-updater out: pacman owns updates. + cd desktop + pnpm tauri build --ci --no-bundle --features mesh-llm -- --frozen +} + +package() { + cd "$_srcdir" + + install -Dm755 desktop/src-tauri/target/release/buzz-desktop "$pkgdir/usr/bin/buzz-desktop" + local bin + for bin in "${_sidecars[@]}"; do + install -Dm755 "target/release/$bin" "$pkgdir/usr/bin/$bin" + done + + install -Dm644 "$srcdir/buzz.desktop" "$pkgdir/usr/share/applications/buzz-desktop.desktop" + local icons=desktop/src-tauri/icons size + for size in 32 64 128; do + install -Dm644 "$icons/${size}x$size.png" \ + "$pkgdir/usr/share/icons/hicolor/${size}x$size/apps/buzz-desktop.png" + done + install -Dm644 "$icons/128x128@2x.png" "$pkgdir/usr/share/icons/hicolor/256x256/apps/buzz-desktop.png" + install -Dm644 "$icons/icon.png" "$pkgdir/usr/share/icons/hicolor/512x512/apps/buzz-desktop.png" + + install -Dm644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE" +} diff --git a/pkgbuilds/buzz/buzz.desktop b/pkgbuilds/buzz/buzz.desktop new file mode 100644 index 00000000..0bdfe2b3 --- /dev/null +++ b/pkgbuilds/buzz/buzz.desktop @@ -0,0 +1,10 @@ +[Desktop Entry] +Type=Application +Name=Buzz +Comment=Workspace where humans and AI agents build together +Exec=buzz-desktop %u +Icon=buzz-desktop +Terminal=false +StartupWMClass=buzz-desktop +Categories=Network;InstantMessaging;Chat; +MimeType=x-scheme-handler/buzz;