bin/install.sh still rsynced --delete from a backup path retired in July, so the documented Linux install both failed and could erase a working tree. Every step it claimed to do already lives in bin/sync.py, shared with Windows. Root ./install.sh is now a thin wrapper over `sync.py restore`, so deployment stays one bash command. It also registers ncp/promethean in ~/.bashrc, which was the only thing the old script uniquely did. Split restore-linux.sh into runtime (Ollama binary, shell aliases) and desktop (XFCE panel, theme, os-release). Only desktop writes outside the repo, it now auto-skips off XFCE, and `--no-desktop` skips it explicitly. Two tests keep the stage names in sync and the $HOME writes confined to the desktop stage. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
27 lines
1.1 KiB
Bash
Executable File
27 lines
1.1 KiB
Bash
Executable File
#!/bin/bash
|
|
# NexusOS installer, Linux. One painless command:
|
|
#
|
|
# git clone <repo> nexus-core && cd nexus-core && ./install.sh
|
|
#
|
|
# ponytail: a wrapper, not an installer. Every step - git pull, venv, pip with
|
|
# the right GPU overlay, npm build, apt packages, Ollama binary, desktop wiring
|
|
# - lives in bin/sync.py, shared with native Windows. Duplicating any of it here
|
|
# means two installers drifting apart, which is exactly how the old
|
|
# bin/install.sh ended up rsyncing from a backup path retired months earlier.
|
|
# Re-run it any time to update; --check dry-runs it. Windows: install-windows.ps1.
|
|
set -euo pipefail
|
|
cd "$(dirname "$0")"
|
|
|
|
if ! command -v python3 >/dev/null; then
|
|
echo "python3 is required (it runs the installer). Install it, then re-run:" >&2
|
|
echo " sudo apt-get install -y python3 python3-venv" >&2
|
|
exit 1
|
|
fi
|
|
|
|
# Prefer the venv interpreter once it exists, same as ncp does; python3 is the
|
|
# bootstrap case on a fresh clone. sync.py is stdlib-only either way.
|
|
py=Promethean/bin/python
|
|
[ -x "$py" ] || py=python3
|
|
|
|
exec "$py" bin/sync.py restore "$@"
|