#!/usr/bin/env bash # ZeroGravity — macOS setup # Installs a launchd plist for automatic startup and sets up config directories. # No UID isolation on macOS — runs in headless/HTTPS_PROXY mode only. set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" PROJECT_DIR="$(dirname "$SCRIPT_DIR")" CONFIG_DIR="$HOME/Library/Application Support/zerogravity" # ── 1. Config directory ── echo "→ Setting up config directory…" mkdir -p "$CONFIG_DIR" # ── 2. Data directory ── echo "→ Setting up /tmp/zerogravity-standalone…" mkdir -p /tmp/zerogravity-standalone # ── 3. Launchd plist ── echo "→ Installing launchd plist…" PLIST_DIR="$HOME/Library/LaunchAgents" PLIST="$PLIST_DIR/com.zerogravity.proxy.plist" mkdir -p "$PLIST_DIR" cat > "$PLIST" << EOF Label com.zerogravity.proxy ProgramArguments $PROJECT_DIR/target/release/zerogravity WorkingDirectory $PROJECT_DIR EnvironmentVariables RUST_LOG info KeepAlive SuccessfulExit StandardOutPath $HOME/Library/Logs/zerogravity.log StandardErrorPath $HOME/Library/Logs/zerogravity.log EOF echo " Installed: $PLIST" echo " Start with: launchctl load $PLIST" echo " Stop with: launchctl unload $PLIST" # ── 4. Build ── echo "→ Building release binary…" cd "$PROJECT_DIR" cargo build --release 2>&1 | tail -1 echo "" echo "✓ Setup complete." echo " Start with: launchctl load $PLIST" echo " Or manually: zg start"