mirror of
https://github.com/trailofbits/dropkit
synced 2026-06-21 14:11:54 +00:00
Initial commit
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
FROM mcr.microsoft.com/devcontainers/base:debian
|
||||
|
||||
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
|
||||
|
||||
# Install uv
|
||||
COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /usr/local/bin/
|
||||
|
||||
# Switch to non-root user
|
||||
USER vscode
|
||||
WORKDIR /home/vscode
|
||||
|
||||
# Add ~/.local/bin to PATH for Claude Code
|
||||
ENV PATH="/home/vscode/.local/bin:$PATH"
|
||||
|
||||
# Install Claude Code (installs to ~/.local/bin/claude)
|
||||
RUN curl -fsSL https://claude.ai/install.sh | bash && \
|
||||
claude plugin marketplace add trailofbits/skills && \
|
||||
claude plugin marketplace add anthropics/skills && \
|
||||
claude plugin marketplace add obra/superpowers
|
||||
|
||||
# Set environment variables
|
||||
ENV DEVCONTAINER=true
|
||||
ENV EDITOR=nano
|
||||
|
||||
# Configure zsh and add aliases
|
||||
RUN echo "export HISTFILE=\"\$HOME/.zsh_history_data/.zsh_history\"" >> ~/.zshrc && \
|
||||
echo "alias yolo=\"claude --dangerously-skip-permissions\"" >> ~/.zshrc
|
||||
|
||||
WORKDIR /workspace
|
||||
@@ -0,0 +1,58 @@
|
||||
{
|
||||
"$schema": "https://raw.githubusercontent.com/devcontainers/spec/main/schemas/devContainer.schema.json",
|
||||
"name": "dropkit",
|
||||
"build": {
|
||||
"dockerfile": "Dockerfile"
|
||||
},
|
||||
"runArgs": ["--hostname=dropkit-dev"],
|
||||
"features": {
|
||||
"ghcr.io/devcontainers/features/python:1": {
|
||||
"version": "3.13"
|
||||
},
|
||||
"ghcr.io/devcontainers/features/github-cli:1": {},
|
||||
"ghcr.io/tailscale/codespace/tailscale:1": {}
|
||||
},
|
||||
"remoteUser": "vscode",
|
||||
"workspaceFolder": "/workspace",
|
||||
"workspaceMount": "source=${localWorkspaceFolder},target=/workspace,type=bind,consistency=cached",
|
||||
"mounts": [
|
||||
"source=dropkit-zsh-history,target=/home/vscode/.zsh_history_data,type=volume",
|
||||
"source=dropkit-claude,target=/home/vscode/.claude_data,type=volume",
|
||||
"source=dropkit-gh,target=/home/vscode/.gh_data,type=volume",
|
||||
"source=dropkit-config,target=/home/vscode/.config/dropkit,type=volume",
|
||||
"source=dropkit-ssh,target=/home/vscode/.ssh,type=volume"
|
||||
],
|
||||
"customizations": {
|
||||
"vscode": {
|
||||
"extensions": [
|
||||
"anthropic.claude-code",
|
||||
"ms-python.python",
|
||||
"ms-python.vscode-pylance",
|
||||
"charliermarsh.ruff",
|
||||
"eamodio.gitlens",
|
||||
"tamasfe.even-better-toml"
|
||||
],
|
||||
"settings": {
|
||||
"terminal.integrated.defaultProfile.linux": "zsh",
|
||||
"python.defaultInterpreterPath": "/workspace/.venv/bin/python",
|
||||
"python.terminal.activateEnvironment": true,
|
||||
"[python]": {
|
||||
"editor.formatOnSave": true,
|
||||
"editor.defaultFormatter": "charliermarsh.ruff",
|
||||
"editor.codeActionsOnSave": {
|
||||
"source.fixAll.ruff": "explicit",
|
||||
"source.organizeImports.ruff": "explicit"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"onCreateCommand": "uv sync",
|
||||
"updateContentCommand": "uv sync",
|
||||
"postCreateCommand": "sudo chown -R vscode:vscode /home/vscode/.config/dropkit /home/vscode/.claude_data /home/vscode/.gh_data /home/vscode/.zsh_history_data /home/vscode/.ssh",
|
||||
"containerEnv": {
|
||||
"UV_LINK_MODE": "copy",
|
||||
"CLAUDE_CONFIG_DIR": "/home/vscode/.claude_data",
|
||||
"GH_CONFIG_DIR": "/home/vscode/.gh_data"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user