# Distoolbox Distrobox? Toolbox? Whatever you want. - [Distoolbox](#distoolbox) - [Reese's Arch Distoolbox](#reeses-arch-distoolbox) - [Using Reese's Arch Toolbox](#using-reeses-arch-toolbox) - [Integrating distoolbox into your workflow](#integrating-distoolbox-into-your-workflow) - [Aliases using Distrobox](#aliases-using-distrobox) - [Aliases using Toolbox](#aliases-using-toolbox) - [Building Reese's Arch Toolbox](#building-reeses-arch-toolbox) - [Distrobox Notes](#distrobox-notes) ## Reese's Arch Distoolbox ### Using Reese's Arch Toolbox Head to and pick the CPU image or AMD GPU image. If you can't decide pick the CPU image. The GPU image was built and tested with a Framework 16 with 7700s GPU module. Click the image and copy the tag (should be something like: 2a421392b1bde168973a0c7ac8be05a6ffa1c48a) Next you need [distrobox](https://distrobox.it/) or [toolbox](https://docs.fedoraproject.org/en-US/fedora-silverblue/toolbox/). Both are good options. If you don't know whether to use distrobox or toolbox: - If you're on Fedora, and you haven't used either, toolbox is built-in - If you understand toolbox and you've never used distrobox, try distrobox - If you understand distrobox and you've never used toolbox, try toolbox - If you care what I use: distrobox Once you have toolbox or distrobox installed, try the following: ```bash export TBOX_REPO='gitea.reeseapps.com/services' export TBOX_IMAGE='arch-toolbox' export TBOX_TAG=paste image tag copied above here export TBOX_NAME="$TBOX_IMAGE-$TBOX_TAG" # With distrobox distrobox create --name $TBOX_NAME --image $TBOX_REPO/$TBOX_IMAGE:$TBOX_TAG distrobox enter $TBOX_NAME # With toolbox toolbox create -i $TBOX_REPO/$TBOX_IMAGE:$TBOX_TAG SHELL=/bin/zsh toolbox enter $TBOX_NAME ``` ### Integrating distoolbox into your workflow Copy the relevant aliases below into your `.bashrc`. Run `ntbox` the first time to create a new toolbox. Run `tbox` anytime you want to enter the toolbox. Run `rtbox` to delete the toolbox. #### Aliases using Distrobox Add the following to your `.bashrc` ```bash # Reese's Toolbox Commands export TBOX_REPO='gitea.reeseapps.com/services' # NOTE: Uncomment one of the below for either the amdgpu or cpu image # export TBOX_IMAGE='arch-toolbox' # export TBOX_IMAGE='arch-toolbox-amdgpu' export TBOX_TAG=paste image tag copied above here export TBOX_NAME="$TBOX_IMAGE-$TBOX_TAG" # Creates a new toolbox alias ntbox="distrobox create --name $TBOX_NAME --image $TBOX_REPO/$TBOX_IMAGE:$TBOX_TAG" # Enters the toolbox when you want to use it, you'll be running this all the time alias tbox="distrobox enter $TBOX_NAME" # Removes the toolbox alias rtbox="distrobox stop $TBOX_NAME --yes && podman container rm $TBOX_NAME" ``` #### Aliases using Toolbox ```bash # Reese's Toolbox Commands export TBOX_REPO='gitea.reeseapps.com/services' # NOTE: Uncomment one of the below for either the amdgpu or cpu image # export TBOX_IMAGE='arch-toolbox' # export TBOX_IMAGE='arch-toolbox-amdgpu' export TBOX_TAG='latest' export TBOX_NAME="$TBOX_IMAGE-$TBOX_TAG" # Creates a new toolbox alias ntbox="toolbox create -i $TBOX_REPO/$TBOX_IMAGE:$TBOX_TAG" # Enters the toolbox when you want to use it, you'll be running this all the time alias tbox="SHELL=/bin/zsh toolbox enter $TBOX_NAME" # Removes the toolbox alias rtbox="podman container stop $TBOX_NAME && podman container rm $TBOX_NAME" ``` ## Building Reese's Arch Toolbox You can build and run the image with the `arch-build.sh` script (See `Containerfile` in this directory): ```bash ./active/software_distoolbox/arch-build.sh ``` In vscode you can set this as your default build task for homelab and trigger it with `ctrl shift B` .vscode/tasks.json ```json { // See https://go.microsoft.com/fwlink/?LinkId=733558 // for the documentation about the tasks.json format "version": "2.0.0", "tasks": [ { "label": "Build arch-toolbox", "type": "shell", "command": "./active/software_distoolbox/arch-build.sh", "problemMatcher": [], "group": { "kind": "build", "isDefault": true } } ] } ``` ## Distrobox Notes ```bash # --init creates a separate systemd environment. You won't be able to access the system's host processes. distrobox create -i docker.io/library/debian --name test-debian ```