My development setup, used in VMs and distrobox containers
Find a file
2026-07-17 18:27:06 +02:00
scripts Updated dotfiles repo URL 2026-07-17 18:27:06 +02:00
.gitignore Updated devbox bootstrap flow 2026-07-11 21:11:21 +01:00
AGENTS.md Refactored bootstrap to Bash 2026-07-13 20:08:28 +01:00
bootstrap Added zsh login shell setup 2026-07-13 20:10:23 +01:00
README.md Added zsh login shell setup 2026-07-13 20:10:23 +01:00
sync-to-vm Refactored bootstrap to Bash 2026-07-13 20:08:28 +01:00

Development environment automation

This repository contains Bash bootstrap automation for development containers and VMs.

Execution model

Run the bootstrap locally from inside the development environment being configured. That keeps the isolation method transparent: the same command works inside a Distrobox container or a Fedora VM.

For the first target, enter the container before running the bootstrap:

distrobox enter fedora44-dev

Run the setup bootstrap:

./bootstrap

Run the bootstrap as your normal user. If passwordless sudo is not available, sudo will prompt when needed.

To skip the DNF package upgrade:

./bootstrap --skip-upgrade

The setup bootstrap verifies it is running locally on Fedora-like Linux, upgrades installed DNF packages unless --skip-upgrade is passed, and runs these ordered steps:

  • system-packages: installs Docker, Docker Compose, and Podman tooling; on systemd targets it enables and starts Docker, and adds the target user to the docker group. Existing shells may need a new login before Docker group membership is visible.
  • shell: installs zsh and makes it the target user's default login shell. Existing sessions keep their current shell until a new login.
  • homebrew: installs Fedora build prerequisites, installs Homebrew from the official installer if /home/linuxbrew/.linuxbrew/bin/brew is missing, and adds Homebrew's shellenv line to ~/.bashrc without duplicates.
  • development-tools: installs dotfiles prerequisites and installs chezmoi from Homebrew.
  • dotfiles: creates ~/.config/chezmoi for local chezmoi secrets/configuration and clones https://gitlab.com/geewiz/dotfiles.git into ~/.local/share/chezmoi for dotfiles bootstrapping.
  • ada: installs the Alire release archive under ~/.local/share/alire and links alr into ~/.local/bin.

The bootstrap verifies Docker, Podman, the default login shell, Homebrew, chezmoi, and Alire versions at the end.

Copy the bootstrap to a VM

Use the sync helper from this repository to copy the bootstrap tree to a VM without Git metadata:

./sync-to-vm geewiz@fedora-vm

The destination defaults to devbox in the remote login directory. Pass a second argument to choose another target directory:

./sync-to-vm geewiz@fedora-vm '~/devbox'