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.
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.
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.
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
{
"image": "mcr.microsoft.com/devcontainers/base:ubuntu",
"features": {
"ghcr.io/pirpedro/features/chezmoi:1": {
"repoUrl": "https://github.com/yourusername/dotfiles",
"branch": "main",
"apply": true,
"useLoginShell": true
}
}
}Quick setup without repository:
{
"features": {
"ghcr.io/pirpedro/features/chezmoi:1": {}
}
}Dependencies: Requires common-utils and git features.
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
{
"image": "mcr.microsoft.com/devcontainers/base:ubuntu",
"features": {
"ghcr.io/pirpedro/features/dev-gadgets:1": {}
}
}Dependencies: Requires common-utils and git features.
For the ultimate development environment, combine all features:
{
"image": "mcr.microsoft.com/devcontainers/base:ubuntu",
"features": {
"ghcr.io/devcontainers/features/common-utils:2": {
"installZsh": true,
"username": "vscode",
"userUid": "1000",
"userGid": "1000"
},
"ghcr.io/devcontainers/features/git:1": {},
"ghcr.io/pirpedro/features/dev-gadgets:1": {},
"ghcr.io/pirpedro/features/chezmoi:1": {
"repoUrl": "https://github.com/yourusername/dotfiles",
"apply": true
},
"ghcr.io/pirpedro/features/antidote:1": {
"setAsDefaultShell": true
}
}
}This setup provides:
- β Modern Zsh with plugins and enhancements
- β Automated dotfiles management
- β Enhanced Git workflow tools
- β Secure SSH configuration
- β Optimized shell experience
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
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
- π 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
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": {
"favorite": {
"type": "string",
"enum": ["red", "gold", "green"],
"default": "red",
"description": "Choose your favorite color."
}
}
}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}"
...Features are automatically published to GitHub Container Registry (GHCR) and can be referenced in your devcontainer.json:
{
"image": "mcr.microsoft.com/devcontainers/base:ubuntu",
"features": {
"ghcr.io/pirpedro/features/antidote:1": {},
"ghcr.io/pirpedro/features/chezmoi:1": {},
"ghcr.io/pirpedro/features/dev-gadgets:1": {}
}
}| 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 |
Features follow semantic versioning. Pin to major versions for stability:
{
"features": {
"ghcr.io/pirpedro/features/antidote:1": {}, // Stable
"ghcr.io/pirpedro/features/antidote:1.2": {}, // Specific minor
"ghcr.io/pirpedro/features/antidote:1.2.3": {} // Exact version
}
}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- 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
This project is licensed under the MIT License - see the LICENSE file for details.
Made with β€οΈ for the dev container community
{ "image": "mcr.microsoft.com/devcontainers/base:ubuntu", "features": { "ghcr.io/pirpedro/features/antidote:1": { "setAsDefaultShell": true } } }