This is my take on a Toolbox / Distrobox container based on the ideas of ublue-os/boxkit.
The goal of this project is to have a companion distrobox container for my custom ublue-bayou Fedora Silverblue setup. It's my default terminal for daily usage.
The container is based on the latest Alpine image from the Toolbx Community Images and and is spruced up with the following configuration.
The following tools are shipped with the container:
- chezmoi for dotfile management
- cosign to sign OCI containers (and other artifacts) using Sigstore
- direnv to unclutter your
.profile
- helix as post-modern text editor
- jq JSON command-line processor
- neofetch eye candy system information
- pipx to run python applications in isolated environments
- poetry for python
venv
management - python-3 to run python applications
- starship cross-shell prompt for that <3
- yq YAML command-line processor
- zsh as the default shell
The following tools are symlinked from the host system:
distrobox create -i ghcr.io/tepene/box-bayou:latest -n box-bayou
distrobox enter box-bayou
toolbox create -i ghcr.io/tepene/box-bayou:latest -c box-bayou
toolbox enter box-bayou
Once the box is running you can set the initial configuration with the setup.sh
script.
You have the following options:
Use this option for all glitter and sparkle.
/opt/scripts/setup.sh glitter
This will set the needed file permissions for the /opt
directory, change
the default shell to ZSH and configure ZSH and Starship with an initial
configuration. And just to be sure, if you already have a ZSH and / or Starship
configuration, the script will create a backup of the files ~/.zshrc
and
~/.config/starship.toml
. (better safe than sorry...)
Use this option if you just want to set ZSH as the default shell but no default configuration.
/opt/scripts/setup.sh boring
This will set the needed file permissions for the /opt
directory and change
the default shell to ZSH.
Use this option if you already have a ZSH and / or Starship configuration which you don't want to mess up.
/opt/scripts/setup.sh preserve
This will only set the needed file permissions for the /opt
directory.
These images are signed with sisgstore's cosign.
You can verify the signature by downloading the cosign.pub
key from this repo
and running the following command:
cosign verify --key cosign.pub ghcr.io/tepene/box-bayou:latest
If you're forking this repo you should read the docs on keeping secrets in github. You need to generate a new keypair with cosign. The public key can be in your public repo (your users need it to check the signatures), and you can paste the private key in Settings -> Secrets -> Actions.