From 168c128b1d4a4d5ae1cc3b76efa8e2ed2e474c17 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Fromme?= Date: Fri, 9 Jan 2026 18:07:45 +0100 Subject: [PATCH] chore: update claude code installation in ddev container --- .ddev/addon-metadata/claude/manifest.yaml | 4 +++- .ddev/claude/.gitignore | 5 +++++ .ddev/config.claude.yaml | 22 +++++++++++++++++++++- .ddev/docker-compose.claude.yaml | 12 ++++++++++++ 4 files changed, 41 insertions(+), 2 deletions(-) create mode 100644 .ddev/claude/.gitignore create mode 100644 .ddev/docker-compose.claude.yaml diff --git a/.ddev/addon-metadata/claude/manifest.yaml b/.ddev/addon-metadata/claude/manifest.yaml index bb05849..8af46e3 100644 --- a/.ddev/addon-metadata/claude/manifest.yaml +++ b/.ddev/addon-metadata/claude/manifest.yaml @@ -1,9 +1,11 @@ name: claude repository: /Users/fromme/Development/Misc/ddev-claude-code version: "" -install_date: "2026-01-09T16:22:30+01:00" +install_date: "2026-01-09T17:50:43+01:00" project_files: - commands/web/claude - config.claude.yaml + - docker-compose.claude.yaml + - claude/.gitignore global_files: [] removal_actions: [] diff --git a/.ddev/claude/.gitignore b/.ddev/claude/.gitignore new file mode 100644 index 0000000..cffe851 --- /dev/null +++ b/.ddev/claude/.gitignore @@ -0,0 +1,5 @@ +# Auth tokens - do not commit +.claude.json + +# Claude data directory +.claude/ diff --git a/.ddev/config.claude.yaml b/.ddev/config.claude.yaml index 22ceea3..6c55631 100644 --- a/.ddev/config.claude.yaml +++ b/.ddev/config.claude.yaml @@ -1,6 +1,26 @@ +#ddev-generated # Claude Code add-on configuration # This file is merged with your project's .ddev/config.yaml hooks: post-start: - - exec: "mkdir -p ~/.bashrc.d && test -f ~/.bashrc.d/claude.sh || echo 'export PATH=\"$HOME/.local/bin:$PATH\"' > ~/.bashrc.d/claude.sh && test -f ~/.local/bin/claude || curl -fsSL https://claude.ai/install.sh | bash" + # Fix volume permissions for binaries + - exec: "sudo chown -R $(id -u):$(id -g) /mnt/claude-binaries" + - exec: "mkdir -p /mnt/claude-binaries/local-bin /mnt/claude-binaries/local-share" + # Create config directories if needed + - exec: "mkdir -p /mnt/claude-config/.claude" + - exec: "touch /mnt/claude-config/.claude.json" + # Copy global CLAUDE.md and skills from homeadditions (if they exist) + - exec: "test -f ~/.claude-global/CLAUDE.md && cp -n ~/.claude-global/CLAUDE.md /mnt/claude-config/.claude/ || true" + - exec: "test -d ~/.claude-global/skills && cp -rn ~/.claude-global/skills /mnt/claude-config/.claude/ || true" + # Remove existing dirs/files and create symlinks + - exec: "rm -rf ~/.claude && ln -sfn /mnt/claude-config/.claude ~/.claude" + - exec: "rm -f ~/.claude.json && ln -sfn /mnt/claude-config/.claude.json ~/.claude.json" + # Symlink ~/.local/bin to volume (for claude binary) + - exec: "mkdir -p ~/.local && rm -rf ~/.local/bin && ln -sfn /mnt/claude-binaries/local-bin ~/.local/bin" + # Symlink ~/.local/share to volume (for claude versions) + - exec: "rm -rf ~/.local/share && ln -sfn /mnt/claude-binaries/local-share ~/.local/share" + # Set up PATH + - exec: "mkdir -p ~/.bashrc.d && echo 'export PATH=\"$HOME/.local/bin:$PATH\"' > ~/.bashrc.d/claude.sh" + # Install Claude Code if not already installed + - exec: "test -f /mnt/claude-binaries/local-share/claude/versions/*/claude || curl -fsSL https://claude.ai/install.sh | bash" diff --git a/.ddev/docker-compose.claude.yaml b/.ddev/docker-compose.claude.yaml new file mode 100644 index 0000000..be917c0 --- /dev/null +++ b/.ddev/docker-compose.claude.yaml @@ -0,0 +1,12 @@ +#ddev-generated +# Mount a named Docker volume for Claude Code binaries (isolated) +# Config files are stored in .ddev/claude/ (host-accessible) + +services: + web: + volumes: + - claude-binaries:/mnt/claude-binaries + - ./claude:/mnt/claude-config + +volumes: + claude-binaries: