From 775f91779cc44b7c3a80ed7d8512a4a5f12a6828 Mon Sep 17 00:00:00 2001 From: Brydon DeWitt Date: Mon, 8 Jun 2026 23:22:26 -0400 Subject: [PATCH] fix: added Docker, VS Code, extensions to --host install --- install.sh | 111 ++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 105 insertions(+), 6 deletions(-) diff --git a/install.sh b/install.sh index a2aab2c..8816970 100755 --- a/install.sh +++ b/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'