Features are published to ghcr.io/devopsbuildingblocks/devcontainer-features/ and follow the Dev Container Feature spec.
Design
Each feature installs its tool via devbox global add, which means tools are isolated in Nix with no system package conflicts and reliable version-pinning across rebuilds. The devbox feature (or an image that already includes it) is a prerequisite for all tool features.
Shell integration is dropped into ~/.shellrc.d/ by the common-utils shell framework, sourced automatically by both bash and zsh.
Feature list
| Feature | Description |
|---|---|
awscli2 | AWS CLI v2 |
bat | cat clone with syntax highlighting |
claude | Claude Code CLI and VS Code extension |
common-utils | Non-root user, shell framework, volume mounts |
delta | Syntax-highlighting pager for git diffs |
devbox | Devbox package manager (Nix-based) |
direnv | Environment switcher with /workspaces whitelisted |
eza | Modern ls replacement |
fd | Fast, user-friendly find replacement |
fzf | Command-line fuzzy finder |
gemini | Gemini CLI and VS Code extension |
helm | Kubernetes package manager |
k9s | Terminal UI for Kubernetes |
kubectl | Kubernetes command-line tool |
lazygit | Terminal UI for git |
oh-my-posh | Shell prompt theme engine |
ripgrep | Fast line-oriented search tool |
terragrunt | Thin wrapper for Terraform/OpenTofu |
Dependency order
Most tool features require devbox first. The images handle this automatically. If you’re composing features on a third-party image, add nix, common-utils, and devbox before any tool features:
"features": {
"ghcr.io/devcontainers/features/nix:1": {},
"ghcr.io/devopsbuildingblocks/devcontainer-features/common-utils:0": {},
"ghcr.io/devopsbuildingblocks/devcontainer-features/devbox:0": {},
"ghcr.io/devopsbuildingblocks/devcontainer-features/bat:0": {}
}