A comprehensive templating system for creating OS containers with modifier flags (minimal, dev, pentest). Supports containerized environments via distrobox and NixOS VMs.
- 6 Base OS Templates: Arch, Fedora, Debian, Ubuntu, Alpine, Kali Linux
- Modifier Flags: Combine
--minimal,--dev,--pentestas needed - Dry-Run Mode: Preview changes before creating
- NixOS VM Support: Full VM creation for NixOS (separate from containers)
- Export/Import: Save containers as portable images
- Qubes-Style Minimal: Strip docs, locales, timezone data for 20-50% size reduction
cd ~
git clone <repo-url> distrobox-configs
# Or use the directory you already have
cd distrobox-configs
# Make CLI executable
chmod +x bin/distrobox-template
# Add to PATH (optional)
echo 'export PATH="$HOME/distrobox-configs/bin:$PATH"' >> ~/.bashrc# Create a basic Arch container
distrobox-template create arch
# Create minimal Arch with dev tools
distrobox-template create arch --minimal --dev
# Preview what would be created (dry-run)
distrobox-template create arch --minimal --dev --dry-run
# Create Kali with pentest tools
distrobox-template create kali --pentest
# List available OS templates
distrobox-template list| OS | Image | Size (Base) | Notes |
|---|---|---|---|
arch |
ghcr.io/archlinux/archlinux:latest | ~500MB | Rolling release, AUR support |
fedora |
registry.fedoraproject.org/fedora:latest | ~500MB | Bleeding edge, good for RH ecosystem |
debian |
debian:stable-slim | ~100MB | Rock solid, minimal base |
ubuntu |
ubuntu:minimal | ~100MB | Popular, good support |
alpine |
alpine:latest | ~50MB | Ultra-minimal, musl libc |
kali |
kalilinux/kali-rolling | ~1.5GB | Security testing distro |
Flags can be combined in any order:
Strips unnecessary packages to reduce size:
- Removes documentation (
/usr/share/doc,/usr/share/man) - Keeps only
en_US.UTF-8locale - Keeps only
UTCtimezone - Removes package caches
- Cleans log files
- Result: 20-50% smaller containers
Installs development toolchain:
- Build tools (gcc, make, cmake)
- Version control (git)
- Text editor (vim)
- Utilities (curl, wget, jq, tree, htop)
- Compression tools (zip, unzip, tar)
- SSL/TLS tools (openssl)
Installs penetration testing tools:
- Network scanners (nmap, masscan)
- Wireless tools (aircrack-ng)
- Web testing (sqlmap, nikto)
- Password cracking (john, hashcat, hydra)
- Enumeration (gobuster, dirb)
- Note: Primarily designed for Kali/Debian/Ubuntu
Install custom packages (comma-separated):
distrobox-template create arch --custom "nodejs,npm,yarn,docker"Containers are auto-named: <os>-<modifier>-<modifier>
Examples:
arch-minimal-devdebian-minimalkali-pentestfedora-dev
Override with --name:
distrobox-template create arch --minimal --dev --name my-containerdistrobox-template create <os> [flags]
# Examples
distrobox-template create arch
distrobox-template create arch --minimal
distrobox-template create arch --dev
distrobox-template create arch --minimal --dev
distrobox-template create kali --pentest
distrobox-template create debian --minimal --dev --custom "python3,pip"distrobox-template listdistrobox-template export <container-name> [output-file]
# Examples
distrobox-template export arch-minimal-dev
distrobox-template export arch-minimal-dev my-backup.tar.gzdistrobox-template import <file> [name]
# Examples
distrobox-template import arch-minimal-dev.tar.gz
distrobox-template import arch-minimal-dev.tar.gz restored-containerdistrobox-template create-vm nixos [flags]
# Examples
distrobox-template create-vm nixos
distrobox-template create-vm nixos --minimal
distrobox-template create-vm nixos --minimal --dev --name my-nixosNote: NixOS VMs require:
- Nix package manager installed
- QEMU/KVM
- ~2GB disk space for initial build
Preview changes without creating anything:
$ distrobox-template create arch --minimal --dev --dry-run
DRY RUN - Would create the following:
Container Name: arch-minimal-dev
Base OS: arch
Base Image: ghcr.io/archlinux/archlinux:latest
Modifiers:
✓ --minimal (strip docs, man pages, locales)
✓ --dev (install dev tools)
Estimated disk space: ~500 MB + ~200 MBdistobox-configs/
├── bin/
│ └── distrobox-template # Main CLI script
├── lib/
│ ├── base-images.sh # OS base definitions
│ ├── modifiers.sh # Modifier logic
│ └── vm-nixos.sh # NixOS VM support
├── manifests/
│ ├── arch.ini # distrobox-assemble manifests
│ ├── fedora.ini
│ ├── debian.ini
│ ├── ubuntu.ini
│ ├── alpine.ini
│ └── kali.ini
├── config/
│ ├── packages/
│ │ ├── dev.list # Dev package lists
│ │ ├── pentest.list # Pentest package lists
│ │ └── minimal-cleanup.sh # Minimal cleanup script
│ └── nixos/
│ └── *.nix # NixOS VM configurations
└── README.md
Pre-made manifests are provided for declarative container management:
# Create from manifest
distrobox assemble create --file manifests/arch.ini --name arch-minimal
# Replace existing
distrobox assemble create --file manifests/arch.ini --name arch-minimal --replace- Pros: Fast to clone, easy to modify, integrated with host
- Cons: Uses more disk over time
- Best for: Active development, experimentation
- Pros: Portable, version controlled, can delete containers
- Cons: Slower to create, need to import to use
- Best for: Distribution, backup, immutable templates
# Export for backup
distrobox-template export arch-minimal-dev arch-backup.tar.gz
# Import later
distrobox-template import arch-backup.tar.gz| OS | Reason |
|---|---|
| QubesOS | Requires Xen hypervisor, incompatible with containers |
| Tails | Designed for live USB amnesic operation |
| NixOS | Works only as VM, not container (see create-vm command) |
# Check distrobox is installed
distrobox --version
# Check podman/docker is working
podman info
# or
docker info# Make script executable
chmod +x ~/distrobox-configs/bin/distrobox-template
# Or use bash directly
bash ~/distrobox-configs/bin/distrobox-template create archSome packages may not be available on all distros. The script will continue with warnings.
Ensure Nix is properly installed:
curl -L https://nixos.org/nix/install | sh
. ~/.nix-profile/etc/profile.d/nix.sh- distrobox (on Bazzite:
ujust distrobox) - podman or docker
- bash 4.0+
- For NixOS VMs: nix package manager, QEMU
MIT
Pull requests welcome! Especially:
- Additional OS support
- More modifier flags
- Improved cleanup scripts
- Better NixOS VM configurations