Example working scenario
This folder contains a complete, practical dotfiles + bootstrap setup that exercises most flow
features.
What this example shows
- Dotfiles repository layout with
common/packages andprofiles/work/overrides - Self-hosted
flowconfig + manifest incommon/flow/.config/flow/ - Bootstrap profiles for Linux (auto PM detection), Ubuntu (
apt), Fedora (dnf), and macOS (brew) - Bootstrap actions:
requires,hostname,locale,shell, package install, binary install,ssh_keygen,configs, andruncmd - Package name mapping via
package-map(apt/dnf/brew) - Dotfiles repo workflows:
status,pull,push,sync --relink, andedit
Layout
dotfiles-repo/common/flow/.config/flow/configexampleflowconfigdotfiles-repo/common/flow/.config/flow/manifest.yamlprofiles + package map + binariesdotfiles-repo/common/zsh/.zshrc,common/git/.gitconfig,common/tmux/.tmux.confdotfiles-repo/common/nvim/.config/nvim/init.luadotfiles-repo/common/bin/.local/bin/flow-hellodotfiles-repo/profiles/work/git/.gitconfigandprofiles/work/zsh/.zshrcoverrides
Quick start
Use the absolute path to this local example repo:
EXAMPLE_REPO="/ABSOLUTE/PATH/TO/flow-cli/example/dotfiles-repo"
Initialize and link dotfiles:
flow dotfiles init --repo "$EXAMPLE_REPO"
flow dotfiles link
flow dotfiles status
Check repo commands:
flow dotfiles repo status
flow dotfiles repo pull --relink
flow dotfiles repo push
Edit package or file/path targets:
flow dotfiles edit zsh --no-commit
flow dotfiles edit common/flow/.config/flow/manifest.yaml --no-commit
Inspect bootstrap profiles and package resolution:
flow bootstrap list
flow bootstrap packages --resolved
flow bootstrap packages --profile fedora-dev --resolved
flow bootstrap show linux-auto
Run bootstrap in dry-run mode:
flow bootstrap run --profile linux-auto --var TARGET_HOSTNAME=devbox --var USER_EMAIL=you@example.com --dry-run
flow bootstrap run --profile work-linux --var WORK_EMAIL=you@company.com --dry-run
Manifest notes
linux-autoomitspackage-managerto demonstrate auto-detection.ubuntu-devuses legacypackages.packagekey to show compatibility.package-maprewrites logical names likefdandpython-devper package manager.- If mapping is missing for the selected manager,
flowuses the original package name and warns.