๐ Development Environment Features
A curated collection of high-quality dev container Features designed to enhance your development workflow. These features provide seamless integration of essential development tools into your containerized environments.
โจ Features Overview
This repository contains a collection of 4 specialized Features that work together to create a powerful development environment. Each feature is designed with best practices, proper error handling, and cross-platform compatibility.
๐ antidote - Supercharged Zsh with Plugin Management
Transform your shell experience with Antidote, a fast and modern Zsh plugin manager that provides autosuggestions, syntax highlighting, and enhanced completions out of the box.
What it includes:
- ๐ Antidote plugin manager - Fast, static bundle generation for optimal performance
- ๐ก Smart autosuggestions - Fish-like command suggestions as you type
- ๐จ Syntax highlighting - Real-time command validation and colorization
- ๐ Enhanced completions - Rich tab completions for better productivity
- ๐ Directory jumping - Quick navigation with
zcommand - โ๏ธ Optimized configuration - Sensible defaults for history and shell behavior
Dependencies: Requires common-utils (with zsh) and git features.
๐ chezmoi - Dotfiles Management Made Easy
Seamlessly manage your dotfiles across different environments with chezmoi, ensuring consistent development setups everywhere.
What it provides:
- ๐ง Automated dotfiles sync - Initialize from any Git repository
- ๐ฟ Branch support - Use specific branches for different environments
- โก One-command setup - Automatic init and apply functionality
- ๐ก๏ธ Safe execution - Runs in proper user context with secure PATH handling
- ๐ Cross-platform - Works on Alpine, Ubuntu, Debian, and more
Quick setup without repository:
Dependencies: Requires common-utils and git features.
๐ง dev-gadgets - Enhanced Git Workflow Tools
Essential Git utilities and SSH client setup for seamless repository management and secure connections.
What it includes:
- ๐ SSH client - Properly configured for Git over SSH
- ๐ SSH directory setup - Secure ~/.ssh with correct permissions
- ๐ Cross-platform support - Works on Alpine, Debian/Ubuntu, and RHEL-based systems
- โก Automatic detection - Smart OS detection with fallback mechanisms
Dependencies: Requires common-utils and git features.
๐๏ธ Complete Development Setup
For the ultimate development environment, combine all features:
This setup provides:
- โ Modern Zsh with plugins and enhancements
- โ Automated dotfiles management
- โ Enhanced Git workflow tools
- โ Secure SSH configuration
- โ Optimized shell experience
๐ Repository Structure
This repository follows the standard dev container Features distribution specification. Each Feature is self-contained in its own directory with proper configuration and installation scripts.
โโโ src/
โ โโโ antidote/ # Zsh plugin manager
โ โ โโโ devcontainer-feature.json
โ โ โโโ install.sh
โ โโโ chezmoi/ # Dotfiles management
โ โ โโโ devcontainer-feature.json
โ โ โโโ install.sh
โ โโโ dev-gadgets/ # Git workflow enhancements
โ โ โโโ devcontainer-feature.json
โ โ โโโ install.sh
โโโ test/ # Feature testing
โ โโโ antidote/
โ โโโ chezmoi/
โ โโโ dev-gadgets/
โโโ .github/workflows/ # CI/CD automation
โโโ release.yaml
๐ง Feature Development
Each feature includes:
- ๐ Configuration -
devcontainer-feature.jsonwith options and metadata - โ๏ธ Installation -
install.shwith cross-platform support and error handling - ๐งช Tests - Comprehensive testing across multiple Linux distributions
- ๐ Documentation - Clear usage examples and option descriptions
๐ Key Design Principles
- ๐ Dependency Management - Proper
installsAfterdeclarations - ๐ก๏ธ Error Handling - Graceful failures with helpful error messages
- ๐ Cross-Platform - Support for Alpine, Ubuntu, Debian, and RHEL-based systems
- ๐ค User Safety - Proper user context and permission handling
- โก Performance - Optimized installations and static configurations
Options
All available options for a Feature should be declared in the devcontainer-feature.json. The syntax for the options property can be found in the devcontainer Feature json properties reference.
For example, the color feature provides an enum of three possible options (red, gold, green). If no option is provided in a user's devcontainer.json, the value is set to "red".
Options are exported as Feature-scoped environment variables. The option name is captialized and sanitized according to option resolution.
#!/bin/bash echo "Activating feature 'color'" echo "The provided favorite color is: ${FAVORITE}" ...
๐ฆ Using These Features
๐ Public Registry
Features are automatically published to GitHub Container Registry (GHCR) and can be referenced in your devcontainer.json:
๐ Feature Reference
| Feature | Description | Key Benefits |
|---|---|---|
antidote |
Zsh plugin manager | Fast shell, autosuggestions, syntax highlighting |
chezmoi |
Dotfiles management | Consistent dev environments, automated setup |
dev-gadgets |
Git workflow tools | SSH support, enhanced Git functionality |
๐ Versioning & Updates
Features follow semantic versioning. Pin to major versions for stability:
๐งช Development & Testing
Running Tests
Test your features locally using the dev container CLI:
# Test individual features devcontainer features test --features antidote devcontainer features test --features chezmoi devcontainer features test --features dev-gadgets # Test with scenarios (includes dependencies) devcontainer features test --features antidote --skip-autogenerated
๐ ๏ธ Contributing
- Fork this repository
- Create a feature branch:
git checkout -b feature/awesome-feature - Add tests in
test/your-feature/ - Test locally with multiple distributions
- Submit a pull request
๐ License
This project is licensed under the MIT License - see the LICENSE file for details.
๐ Acknowledgments
Made with โค๏ธ for the dev container community