| Crates.io | capsules |
| lib.rs | capsules |
| version | 0.2.0 |
| created_at | 2025-12-15 23:06:37.835228+00 |
| updated_at | 2025-12-17 22:36:57.043156+00 |
| description | Hierarchical listboards for your terminal |
| homepage | |
| repository | https://github.com/rlofc/capsules |
| max_upload_size | |
| id | 1986940 |
| size | 38,678 |
A tiny helper around Podman for spinning up “capsules” — task-centric containers that keep your host OS clean and your various environments nicely boxed in.
Capsules is a CLI wrapper for Podman that makes it easy to:
Think of it as a closed-by-default, simpler alternative to distrobox.
Capsules looks under ~/.config/capsules for its config and bootstrap bits.
capsules.tomlOptional, but handy:
# ~/.config/capsules/capsules.toml
# Where to store per-capsule volumes (home dirs, bootstrap, etc.)
# If relative, it's resolved from $HOME.
volumes_root = "/files/capsules/volumes"
# What the container considers its "home root"
# (your username is appended, e.g. /home/youruser)
capsule_home_dir = "/home"
If you skip this file:
volumes_root defaults to: ~/.local/capsules/volumescapsule_home_dir defaults to: /homeWhen you run:
capsules spin <image> <container_id>
Capsules expects a directory:
~/.config/capsules/bootstrap/<container_id>/
That directory is copied into the container at:
/files/.bootstrap/
Then Capsules runs:
bash /files/.bootstrap/init.sh
So you probably want at least:
~/.config/capsules/bootstrap/<container_id>/init.sh
to install packages, create users, tweak configs, etc.
Right now the code assumes:
/files/projects/dotfiles/config mounted to
$CAPSULE_HOMEDIR/$USER/.config/files/projects/dotfiles/fonts mounted to
$CAPSULE_HOMEDIR/$USER/.fonts/run/user/1000/pulse → /run/user/host/pulseIf your setup is different, you’ll probably want to tweak spin_a_new_capsule in main.rs.
Issues, ideas, and PRs are all welcome.
This project is licensed under the BSD 3-Clause License. See the LICENSE file for the boring legal details.