skip radicale and officer-caldav on a macOS dev install, not the platform

Hit live: `brew install radicale` fails outright, "No available formula with the name
radicale" — it is a pure-Python package (pip/pipx), not something Homebrew carries, unlike
every other name in that list. apt/pacman/dnf all package it for real and are untouched.

Narrower than removing the feature: officer-caldav (Calendar/Contacts) stays CORE on Linux.
On macOS the sidecar has nowhere to find Radicale — resolveRadicale() failing is exactly the
"took a whole sidecar down on a fresh install" case its own test already guards against — so
CORE_PROCESSES leaves it out on Darwin rather than let it crash-loop. Calendar/Contacts is
the one core feature not available on a Mac dev install; nothing else changes.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-26 21:40:59 +01:00
co-authored by Claude Opus 5
parent 681df1c8bc
commit e37fe8330e
2 changed files with 23 additions and 8 deletions
+8 -1
View File
@@ -125,7 +125,14 @@ pkgs_core() {
# curl, unzip and the TLS roots ship with macOS; the compilers come from
# the Xcode command line tools, which is not a formula — see xcode_clt_*.
# brotli is here because macOS ships the library but not the CLI.
echo gnupg git jq wget brotli btop htop tree ripgrep fd eza poppler radicale
#
# radicale has no Homebrew formula — confirmed live ("No available formula with the
# name radicale"), it is a pure-Python package normally installed via pip/pipx, not
# brew. Left out of a dev install rather than reached for pip here: officer-caldav
# (services.sh CORE_PROCESSES) is skipped to match on macOS, so nothing on this
# machine expects it to be present. The Linux lists above are untouched — a real
# package there, unaffected.
echo gnupg git jq wget brotli btop htop tree ripgrep fd eza poppler
;;
esac
}
+15 -7
View File
@@ -44,13 +44,6 @@ CORE_PROCESSES=(
"officer-claude-code|bun|run src/servers/sidecar/claude/user-instance.ts"
"officer-opencode|bun|run src/servers/sidecar/opencode/index.ts"
"officer-pty|node|src/servers/sidecar/pty/index.mjs"
# Calendar and contacts, CORE since 2026-08-19 rather than an app-store entry.
#
# It was a Docker service because the app store made everything one, not because Radicale needs a
# container — it is a ~2MB Python package, and this sidecar spawns it directly on loopback. A personal
# server having a calendar is not an integration with something you already run; it is the baseline.
# Radicale needs `python3` and the `radicale` package, both installed by machine-setup.
"officer-caldav|bun|run src/servers/sidecar/caldav/index.ts"
# Push notifications, CORE since 2026-08-19. Built 2026-07-31, then switched off on 2026-08-13 with
# memos and photos when it was slated to become a plugin — the only one of the three never extracted,
# so it sat mounted nowhere with its schema commented out.
@@ -62,6 +55,21 @@ CORE_PROCESSES=(
"officer-notify|bun|run src/servers/sidecar/notify/index.ts"
)
# Calendar and contacts, CORE since 2026-08-19 rather than an app-store entry.
#
# It was a Docker service because the app store made everything one, not because Radicale needs a
# container — it is a ~2MB Python package, and this sidecar spawns it directly on loopback. A personal
# server having a calendar is not an integration with something you already run; it is the baseline.
# Radicale needs `python3` and the `radicale` package, both installed by machine-setup.
#
# EXCEPT on macOS: radicale has no Homebrew formula (pkgs_core in machine-setup/lib/packages.sh
# leaves it out of the brew list for the same reason), so a dev install has nowhere for this sidecar
# to find it — `resolveRadicale()` failing is exactly the "took a whole sidecar down on a fresh
# install" case its own test guards against. Left out of a macOS install's process list entirely
# rather than crash-looped; Calendar/Contacts are the one core feature not available on a Mac dev
# install. The Linux path — and the feature itself — is untouched.
[[ "$(uname -s)" == "Darwin" ]] || CORE_PROCESSES+=("officer-caldav|bun|run src/servers/sidecar/caldav/index.ts")
write_ecosystem() {
local dest entry name script args
dest="$(ecosystem_file)"