fix: added Docker, VS Code, extensions to --host install
This commit is contained in:
parent
56d4073f4a
commit
775f91779c
111
install.sh
111
install.sh
@ -1,6 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
# install.sh — Wire .agents/ into global tool configs.
|
||||
# Run with --host to also install llama-server config and systemd services.
|
||||
# Run with --host to also install llama-server, VS Code, Docker, and extensions.
|
||||
# Idempotent: safe to re-run. Creates dirs, symlinks, and config entries.
|
||||
# Run once per machine after cloning dotfiles.
|
||||
set -euo pipefail
|
||||
@ -102,12 +102,50 @@ else
|
||||
log "OpenCode config symlink: $OC_CONFIG_LINK → $OC_CONFIG_SOURCE"
|
||||
fi
|
||||
|
||||
# ── 5. Llama-server host config (requires --host) ───────────────────────────
|
||||
# ── 5. Build llama-server (requires --host) ──────────────────────────────────
|
||||
if [[ "$INSTALL_HOST" != "true" ]]; then
|
||||
skip "llama-server build skipped (use --host to install)"
|
||||
else
|
||||
if [[ -x /opt/llama-server/llama-server ]]; then
|
||||
skip "llama-server already installed at /opt/llama-server/llama-server"
|
||||
else
|
||||
sudo apt-get install -y cmake build-essential nvidia-cuda-toolkit libgomp1 git
|
||||
|
||||
(
|
||||
git clone --depth 1 --branch b9279 https://github.com/ggml-org/llama.cpp.git /tmp/llama-build
|
||||
cd /tmp/llama-build
|
||||
|
||||
cmake -B build \
|
||||
-DGGML_CUDA=ON \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DLLAMA_BUILD_SERVER=ON \
|
||||
-DLLAMA_BUILD_TESTS=OFF \
|
||||
-DLLAMA_BUILD_EXAMPLES=OFF
|
||||
|
||||
cmake --build build --config Release -j$(nproc)
|
||||
|
||||
sudo mkdir -p /opt/llama-server
|
||||
sudo cp build/bin/llama-server /opt/llama-server/
|
||||
sudo cp -P build/bin/libggml*.so* /opt/llama-server/
|
||||
sudo cp -P build/bin/libllama*.so* /opt/llama-server/
|
||||
sudo cp -P build/bin/libmtmd*.so* /opt/llama-server/ 2>/dev/null || true
|
||||
|
||||
echo "/opt/llama-server" | sudo tee /etc/ld.so.conf.d/llama-server.conf
|
||||
sudo ldconfig
|
||||
|
||||
rm -rf /tmp/llama-build
|
||||
)
|
||||
|
||||
log "llama-server built and installed to /opt/llama-server/"
|
||||
fi
|
||||
fi
|
||||
|
||||
# ── 6. Llama-server host config (requires --host) ───────────────────────────
|
||||
if [[ "$INSTALL_HOST" != "true" ]]; then
|
||||
skip "Llama-server host config skipped (use --host to install)"
|
||||
else
|
||||
|
||||
# ── 5a. Model downloads (requires --host) ──────────────────────────────────
|
||||
# ── 6a. Model downloads (requires --host) ──────────────────────────────────
|
||||
if ! command -v huggingface-cli >/dev/null 2>&1; then
|
||||
warn "huggingface-cli not found — skipping model downloads (install via 'pip install huggingface_hub')"
|
||||
else
|
||||
@ -181,7 +219,7 @@ else
|
||||
fi
|
||||
fi
|
||||
|
||||
# ── 6. VS Code global MCP ────────────────────────────────────────────────────
|
||||
# ── 7. VS Code global MCP ────────────────────────────────────────────────────
|
||||
# Primary remote/server path; falls back to local if running VS Code locally.
|
||||
VSCODE_MCP_PATHS=(
|
||||
"$HOME/.vscode-server/data/User/mcp.json"
|
||||
@ -221,7 +259,7 @@ if (changed) {
|
||||
fi
|
||||
done
|
||||
|
||||
# ── 7. VS Code global prompts dir ───────────────────────────────────────────
|
||||
# ── 8. VS Code global prompts dir ───────────────────────────────────────────
|
||||
for VSCODE_PROMPTS_DIR in \
|
||||
"$HOME/.vscode-server/data/User/prompts" \
|
||||
"$HOME/.vscode/data/User/prompts"; do
|
||||
@ -232,7 +270,7 @@ for VSCODE_PROMPTS_DIR in \
|
||||
fi
|
||||
done
|
||||
|
||||
# ── 8. MCP server dependencies ───────────────────────────────────────────────
|
||||
# ── 9. MCP server dependencies ───────────────────────────────────────────────
|
||||
MCP_DIR="$DOTFILES_AGENTS/mcp"
|
||||
if [[ ! -d "$MCP_DIR/node_modules/@modelcontextprotocol" ]]; then
|
||||
log "Installing MCP server dependencies (npm install in $MCP_DIR)..."
|
||||
@ -242,6 +280,67 @@ else
|
||||
skip "MCP server node_modules already present"
|
||||
fi
|
||||
|
||||
# ── 10. VS Code, Docker, extensions (requires --host) ────────────────────────
|
||||
if [[ "$INSTALL_HOST" != "true" ]]; then
|
||||
skip "VS Code, Docker, extensions skipped (use --host to install)"
|
||||
else
|
||||
|
||||
# ── 10a. VS Code ──────────────────────────────────────────────────────
|
||||
if command -v code >/dev/null 2>&1; then
|
||||
skip "VS Code already installed"
|
||||
else
|
||||
log "Installing VS Code..."
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y wget gpg
|
||||
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | \
|
||||
gpg --dearmor -o /usr/share/keyrings/packages.microsoft.gpg
|
||||
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/packages.microsoft.gpg] https://packages.microsoft.com/repos/code stable main" | \
|
||||
sudo tee /etc/apt/sources.list.d/vscode.list
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y code
|
||||
log "VS Code installed"
|
||||
fi
|
||||
|
||||
# ── 10b. Docker ──────────────────────────────────────────────────────
|
||||
if command -v docker >/dev/null 2>&1; then
|
||||
skip "Docker already installed"
|
||||
else
|
||||
log "Installing Docker..."
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y ca-certificates curl
|
||||
sudo install -m 0755 -d /etc/apt/keyrings
|
||||
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
|
||||
sudo chmod a+r /etc/apt/keyrings/docker.asc
|
||||
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
|
||||
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
|
||||
log "Docker installed"
|
||||
fi
|
||||
|
||||
# ── 10c. VS Code extensions ──────────────────────────────────────────
|
||||
_install_ext() {
|
||||
local ext_id="$1"
|
||||
if code --list-extensions 2>/dev/null | grep -qi "^${ext_id}$"; then
|
||||
skip "VS Code extension already installed: $ext_id"
|
||||
else
|
||||
code --install-extension "$ext_id" >/dev/null 2>&1
|
||||
log "VS Code extension installed: $ext_id"
|
||||
fi
|
||||
}
|
||||
|
||||
_install_ext "ms-vscode-remote.vscode-remote-extensionpack"
|
||||
_install_ext "ms-azuretools.vscode-docker"
|
||||
_install_ext "streetsidesoftware.code-spell-checker"
|
||||
_install_ext "EditorConfig.EditorConfig"
|
||||
_install_ext "dbaeumer.vscode-eslint"
|
||||
_install_ext "mhutchie.git-graph"
|
||||
_install_ext "bierner.github-markdown-preview"
|
||||
_install_ext "esbenp.prettier-vscode"
|
||||
_install_ext "yoavbls.pretty-ts-errors"
|
||||
|
||||
fi
|
||||
|
||||
# ── Done ─────────────────────────────────────────────────────────────────────
|
||||
printf '\n\033[0;32minstall.sh complete.\033[0m\n'
|
||||
printf 'Next steps:\n'
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user