#!/usr/bin/env bash set -euo pipefail cd "$(dirname "$0")" SERVICE_NAME="slopbot" SERVICE_FILE="${SERVICE_NAME}.service" SYSTEMD_SERVICE_PATH="/etc/systemd/system/${SERVICE_FILE}" NIX=(nix --extra-experimental-features 'nix-command flakes') if [[ ! -f .zuliprc ]]; then echo "error: .zuliprc is missing. Copy .zuliprc.example and fill in bot credentials." >&2 exit 1 fi if [[ ! -f .env ]]; then cat > .env <<'EOF' # Required by slop-search. KAGI_API_KEY= SLOPBOT_AGENT_MODEL=parasail/kimi-k26 SLOPBOT_WORKERS=4 SLOPBOT_AGENT_WORKERS=1 SLOPBOT_AGENT_TIMEOUT=120 SLOPBOT_HISTORY_LIMIT=20 SLOPBOT_SYSTEM_PROMPT=prompts/system.md EOF echo "created .env with slopbot defaults" echo "edit .env if agent needs provider keys or config before restarting again" fi echo "locking local flake inputs..." "${NIX[@]}" flake lock echo "building slopbot..." "${NIX[@]}" build .#slopbot echo "installing systemd unit to ${SYSTEMD_SERVICE_PATH}..." sudo install -m 0644 "${SERVICE_FILE}" "${SYSTEMD_SERVICE_PATH}" echo "reloading systemd..." sudo systemctl daemon-reload echo "enabling and restarting ${SERVICE_NAME}..." sudo systemctl enable "${SERVICE_NAME}" sudo systemctl restart "${SERVICE_NAME}" echo "${SERVICE_NAME} status:" sudo systemctl --no-pager --full status "${SERVICE_NAME}" echo echo "follow logs with: sudo journalctl -u ${SERVICE_NAME} -f"