Instant development environments in Docker containers.
Devastation provides pre-configured development containers with Neovim, tmux, and language-specific tooling. No more "works on my machine" – get a consistent, powerful development environment anywhere Docker runs.
🚀 Base Environment: Ubuntu 22.04 + Zsh + Neovim + tmux
🐍 Python: Python 3.11 + LSP + debugging + pytest
⚡ C#/.NET: .NET 8 SDK + OmniSharp + debugging
☸️ DevOps: AWS CLI + kubectl + Terraform + Helm
# Python development
docker run -it --rm \
-v $(pwd):/src/MyProject \
-w /src/MyProject \
-e PROJECT_NAME=MyProject \
devastation/python:latest
# .NET development
docker run -it --rm \
-v $(pwd):/src/MyProject \
-w /src/MyProject \
-e PROJECT_NAME=MyProject \
devastation/dotnet:latest
# Infrastructure/DevOps
docker run -it --rm \
-v $(pwd):/src/MyProject \
-v ~/.aws:/home/dev/.aws \
-v ~/.kube:/home/dev/.kube \
-w /src/MyProject \
-e PROJECT_NAME=MyProject \
devastation/cluster:latest| Container | Purpose | Key Tools |
|---|---|---|
devastation/base |
Foundation for all containers | Neovim, tmux, Zsh, Node.js, Claude Code |
devastation/python |
Python development | Python 3.11, Poetry, pytest, python-lsp-server |
devastation/dotnet |
.NET development | .NET 8 SDK, OmniSharp, Azure CLI integration |
devastation/cluster |
Infrastructure & DevOps | AWS CLI, kubectl, Terraform, Helm |
# Build all containers
make all
# Build specific containers
make base
make python
make dotnet
make cluster
# Custom username (defaults to 'dev')
make USERNAME=$(whoami) base- Neovim: Fully configured with LSP, completion, debugging, file explorer
- tmux: Multi-window terminal with intuitive key bindings
- Zsh: Oh-My-Zsh + Powerlevel10k theme + useful plugins
- Development Tools: Git, ripgrep, fd, tree, curl
- Claude Code: AI assistant CLI for development help
Each container starts with pre-configured tmux windows:
- Window 1: Main development shell
- Window 2: Neovim editor
- Window 3+: Language/tool-specific windows
- Final Window: Claude Code assistant
- tmux prefix:
Ctrl+a - Neovim leader:
Space - Split tmux:
Ctrl+a |(horizontal),Ctrl+a -(vertical) - Find files:
Space + ff - Live grep:
Space + fg
Mount config directories to persist settings across container runs:
docker run -it --rm \
-v $(pwd):/src/MyProject \
-v ~/.config/git:/home/dev/.config/git \
-v ~/.config/claude:/home/dev/.config/claude \
-w /src/MyProject \
-e PROJECT_NAME=MyProject \
devastation/python:latestOverride the entire Neovim configuration:
docker run -it --rm \
-v $(pwd):/src/MyProject \
-v ~/.config/nvim:/home/dev/.config/nvim \
-w /src/MyProject \
-e PROJECT_NAME=MyProject \
devastation/base:latestCreate your own specialized container:
FROM devastation/python:latest
# Add your tools
RUN pip install mypy black isort
# Add your configurations
COPY my-configs/ /home/dev/.config/- Docker: Latest version recommended
- Environment Variable:
PROJECT_NAMEmust be set - Project Mount: Your project must be mounted to
/src/$PROJECT_NAME
The containers validate these requirements and fail with clear error messages if not met.
devastation/base:latest
├── devastation/python:latest (Python + base tools)
├── devastation/dotnet:latest (.NET + base tools)
└── devastation/cluster:latest (DevOps + base tools)
Each language container extends the base with specialized tools and configurations while maintaining the same core development experience.
- User Guides: See individual container README files
- Development: See
claude/directory for detailed technical documentation - Customization: See
claude/configuration_patterns.md
- Fork the repository
- Create your feature branch
- Test your changes with the target container
- Submit a pull request
See claude/development_workflow.md for detailed contributor guidelines.
Ready to devastate your development workflow? 🚀
Pick a container and start coding with zero configuration time.
