toolbox-dev¶
A single, configurable development toolbox container built on Fedora Toolbox.
Instead of maintaining separate container images for each language, toolbox-dev ships one image with Ansible roles that you enable or disable via a simple YAML config file.
How it works¶
- One container image includes all the base development tools plus Ansible
- Ansible roles install language-specific tooling on demand
- Configuration is a simple YAML file toggling roles on/off
- Auto-apply detects config changes and applies them on container entry
Available roles¶
Languages¶
| Role | Config key | Description |
|---|---|---|
| Python | languages.python_development |
Python 3, pip, ruff, pre-commit, pyright, pyenv dependencies |
| Node.js | languages.nodejs_development |
Node.js, pnpm, yarn |
| Go | languages.go_development |
Go compiler |
| Rust | languages.rust_development |
Rust via rustup, cmake, clang |
| C++ | languages.cpp_development |
GCC, G++, clangd, cmake, ctags |
| Ruby | languages.ruby_development |
Ruby, RVM, ruby-lsp and plugins |
| .NET | languages.dotnet_development |
.NET 10.0 SDK and runtime |
| Zig | languages.zig_development |
Zig compiler |
Environments¶
| Role | Config key | Description |
|---|---|---|
| Fedora Packaging | environments.fedora_packaging |
fedpkg, packit, COPR, conversion tools |
Quick start¶
toolbox create --image quay.io/toolbox-dev/toolbox-dev:latest dev
toolbox enter dev
tdx-edit # enable desired languages
tdx-apply # install them
Usage examples¶
Single language setup¶
Enable just Python for scripting or data work:
Full-stack web development¶
Enable multiple languages for a typical web project:
After running tdx-apply, tools like python3, node, pnpm, cargo, and rustc are all available in the same container.
Fedora package maintainer¶
Combine language tooling with the packaging environment:
This gives you fedpkg, mock, rpmlint, and packit alongside your
development tools.
Configuration¶
Config file¶
The config file lives at ~/.config/toolbox-dev/config.yml. Use tdx-edit to
open it in your $EDITOR, or edit it directly.
To use a custom path:
CLI tools¶
| Command | Description |
|---|---|
tdx-edit |
Open the config file in your editor |
tdx-apply |
Apply the current configuration |
tdx-apply -v |
Apply with verbose Ansible output |
tdx-apply --check |
Dry run -- show what would change without applying |
tdx-upgrade |
Upgrade the container to the latest image |
Auto-apply on entry¶
When you enter the container, toolbox-dev automatically detects config changes
and runs tdx-apply for you. No need to remember to apply after editing.
Host wrapper scripts¶
Enabled roles install wrapper scripts in ~/.local/bin/ so you can call tools
directly from the host without entering the container first:
# These work from the host -- they transparently run inside the container
python3 myscript.py
ruff check .
cargo build
Override the target container name with:
See Getting Started for detailed setup instructions, Configuration for the full reference, and Custom Playbooks to extend toolbox-dev with your own Ansible tasks.