Skip to content

Garuda Distrobox

Garuda Distrobox is a container image for Distrobox. It is an Arch Linux based container with the Garuda Linux settings and repositories. The repository contains only the Dockerfile and the GitLab CI file that builds the image. It has no window and no menu entry.

The Garuda Toolbox lists Distrobox in its system components, with the description Creates tightly integrated containers of other Linux distributions. Lets you install and run apps from Ubuntu, Fedora, or Arch natively inside Garuda.

Distrobox must be installed on the host first. The README says that the image is created and entered with these commands.

  1. Create the container from the image. The --init option starts systemd inside the container.

    Terminal window
    distrobox create --image registry.gitlab.com/garuda-linux/tools/garuda-distrobox/garuda-distrobox:latest --name garuda --init
  2. Enter the container.

    Terminal window
    distrobox enter garuda

The name garuda is the example name from the README. Any other name works with the same commands.

ItemNotes
PackageNo PKGBUILD for this image exists in pkgbuilds/. The image is published to the GitLab container registry, not to the Arch repositories.
Base imagequay.io/toolbx/arch-toolbox:latest (Dockerfile).
Image tagregistry.gitlab.com/garuda-linux/tools/garuda-distrobox/garuda-distrobox:latest, built by .gitlab-ci.yml.

The Dockerfile installs these packages with pacman -Syu. The table lists only the packages named in the Dockerfile, their contents are not described in this repository.

PackageNote
garuda-config-agentListed in the Dockerfile. See garuda-config-agent.
garuda-common-settingsListed in the Dockerfile.
garuda-hooksListed in the Dockerfile.
garuda-iconsListed in the Dockerfile.
microListed in the Dockerfile.
pacman-contribListed in the Dockerfile.
sudoListed in the Dockerfile.
systemdListed in the Dockerfile. The README uses --init, which needs it.

The Dockerfile also removes mkinitcpio, dracut and garuda-dracut-support. The removal ends with || true, so a failure does not stop the build.

The Dockerfile adds these entries to /etc/pacman.conf.

RepositorySource
multilib/etc/pacman.d/mirrorlist
garuda/etc/pacman.d/chaotic-mirrorlist
chaotic-aur/etc/pacman.d/chaotic-mirrorlist

The keys of the Chaotic-AUR keyring are imported from keyserver.ubuntu.com and signed locally. Then the Chaotic keyring and mirrorlist packages are installed from cdn-mirror.chaotic.cx. The last awk command removes duplicate repository blocks that garuda-config-agent adds.

The CI job build-builder runs docker build and docker push for the latest tag. It starts when the Dockerfile, .gitlab-ci.yml or .dockerignore changes on the default branch. It also starts when the variable UPDATE_CORE_IMAGE is 1 on the default branch (.gitlab-ci.yml).

WhatPathNotes
Pacman config in image/etc/pacman.confChanged by the Dockerfile.
Pacman mirror lists/etc/pacman.d/mirrorlist, /etc/pacman.d/chaotic-mirrorlistUsed by the repositories above.
Distrobox settingsUNCONFIRMEDCreated by Distrobox on the host. The repository does not show where they are stored.
Build logGitLab CI job logThe CI job prints the build output.

The repository contains no runtime config file and no log file.

  • The base image is arch-toolbox:latest, so the build changes when the upstream image changes (Dockerfile).
  • The Chaotic-AUR keys are fetched from keyserver.ubuntu.com during the build (Dockerfile).
  • The || true after the removal of mkinitcpio, dracut and garuda-dracut-support hides errors of that step (Dockerfile).
  • The changelog 260819 lists the Distrobox fix systemd support (changelogs/Past changelogs/260819.md, section Distrobox). The repository does not show which change made the fix.
  • Garuda Toolbox lists Distrobox in its system components.
  • Post-installation tasks covers the first steps after installing.
  • The Arch Wiki page Docker explains the container engine that the image is built with, and Podman explains the alternative engine.