| set -euo pipefail | |
| ROOT=/opt/jackailocal | |
| [ -x "$ROOT/bin/jackailocald" ] || { echo "Missing $ROOT/bin/jackailocald" >&2; exit 1; } | |
| [ -x "$ROOT/backends/ollama/linux/ollama" ] || { echo "Missing $ROOT/backends/ollama/linux/ollama" >&2; exit 1; } | |
| [ -x "$ROOT/backends/whisper.cpp/linux/whisper-cli" ] || { echo "Missing $ROOT/backends/whisper.cpp/linux/whisper-cli" >&2; exit 1; } | |
| [ -x "$ROOT/backends/piper/linux/piper" ] || { echo "Missing $ROOT/backends/piper/linux/piper" >&2; exit 1; } | |
| install -d /var/log/jackailocal /var/lib/jackailocal "$ROOT/.jackailocal/cache" "$ROOT/.jackailocal/logs" "$ROOT/workspace/documents" "$ROOT/workspace/threads" "$ROOT/workspace/exports" "$ROOT/diagnostics" | |
| chmod +x "$ROOT/tools/pm-hwscan.sh" 2>/dev/null || true | |
| cp "$ROOT/linux/systemd/jackailocald.service" /etc/systemd/system/jackailocald.service | |
| cp "$ROOT/linux/systemd/jackailocal-hwscan.service" /etc/systemd/system/jackailocal-hwscan.service | |
| cp "$ROOT/linux/systemd/jackailocal-kiosk.service" /etc/systemd/system/jackailocal-kiosk.service | |
| cp "$ROOT/linux/systemd/ollama-jackailocal.service" /etc/systemd/system/ollama-jackailocal.service | |
| systemctl daemon-reload | |
| systemctl enable jackailocal-hwscan.service ollama-jackailocal.service jackailocald.service jackailocal-kiosk.service | |
| ln -sf /opt/jackailocal/bin/jackailocald /usr/local/bin/jackailocald | |
| echo "JackAILocal Linux runtime installed." | |