dotfiles-Alpine

OS-native Stable

The lean outlier: musl libc, busybox, doas. The small-footprint / container / rescue layer — bootstrap detects doas vs sudo.

Highlights

  • musl + busybox
  • apk + doas
  • container / rescue

How it fits

The OS-native layer — Package manager, paths, clipboard — what changes with the OS. It builds on Core, which is vendored into its core/ directory. See the three-layer model for how the layers compose.

Getting started

git clone https://github.com/dotgibson/dotfiles-Alpine ~/dotfiles-Alpine
cd ~/dotfiles-Alpine
./bootstrap.sh
exec zsh

Run as root, or as a user with doas (or sudo) configured — bootstrap detects which. Make sure the community repo is enabled in /etc/apk/repositories. Flag: --links-only.

What actually bites

  • musl libc, not glibc — Prebuilt glibc binaries will not run, so the stack comes from apk wherever possible. starship/mise install via scripts that detect musl; yazi and tree-sitter-cli are compiled with cargo (why build-base is in the package list).
  • doas, not sudo — bootstrap auto-detects doas → sudo → root; the shell layer aliases sudo→doas so muscle memory works. Configure /etc/doas.d/doas.conf or run as root.
  • ash is the default shell — zsh is installed explicitly and the login shell is switched with chsh (from the shadow package — busybox has none). bootstrap reads the current shell from /etc/passwd directly because busybox has no getent.
  • No MAC framework, no flatpak — Alpine ships no default SELinux/AppArmor and flatpak isn't idiomatic, so those Fedora/openSUSE helper blocks are removed entirely — keeping the lean/container/rescue layer small.

Read next