fix: added Docker, VS Code, extensions to --host install

This commit is contained in:
Brydon DeWitt 2026-06-08 23:22:26 -04:00
parent 56d4073f4a
commit 775f91779c

View File

@ -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'