Dotfiles and setup automation, managed with GNU Stow.
Originally forked from michailpanagiotis/apparatus ❤️
platforms/<os>/ # per-platform config (packages, stow targets, repos, links)
<package>/ # stow packages (zsh, git, kitty, sway, etc.)
bootstrap.sh # clones the repo, then invokes install.sh
install.sh # repo-local installation driver
Apparatus requires Bash 4 or newer. On macOS, install Homebrew if necessary, then install a current Bash:
brew install bashTo bootstrap a new machine:
curl -fsSL https://raw.githubusercontent.com/liouk/apparatus/master/bootstrap.sh | shFrom an existing checkout:
# check if current OS is supported
./install.sh --check-support
# full install (packages + repos + links + stow)
./install.sh
# restow dotfiles only
./install.sh --stow-only
# unstow dotfiles
./install.sh --unstow-onlyAdditional machine- or work-specific shell files can be linked into ~/.zsh/conf.d/. Files ending in .zsh or .sh are sourced in filename order.
Create platforms/<os-id>/ (where <os-id> matches the ID field in /etc/os-release) with:
config— aninstall_<manager>_packagesfunction for each package managerpackages.<N>.<manager>— one package per line, installed in sort orderstow-targets—TARGET:packageper linerepos(optional) —target_dir git_urlper linelinks(optional) —link_name:target_pathper linepre-install.sh/post-install.sh(optional) — run before/after package install
Catppuccin Mocha, applied in kitty, neovim, sway, waybar, mako, tig, and swaylock.