The devops-starter setup command is an interactive guided wizard that walks you
through the complete initial configuration of devops-starter. It is safe to
re-run at any time to modify your settings without losing per-tool overrides.
devops-starter setupdevops-starter setup [flags]
Flags:
--non-interactive use existing config/defaults without prompts (for CI)
--dry-run preview actions without executing
--config string config file (default: ~/.config/devops-starter/config.yaml)
The setup wizard progresses through the following screens. You can navigate
forward with enter and backward with esc at any point.
Displays an overview of what the wizard will configure and checks whether your
install directory is present in $PATH.
If the install directory is not in PATH, a warning is shown. The wizard still proceeds -- you can add it to PATH afterward.
Controls: enter to continue, q/esc to quit.
Presents all available tool groups as a checkbox list:
- languages
- containers
- kubernetes
- infra
- cloud
- ansible
- rust-tools
- utilities
Groups are pre-selected based on your existing config (or all enabled for first-time users).
Controls:
j/kor arrow keys to navigatespaceto toggle a groupato select allnto deselect allenterto proceedescto go back
A text input field for the binary install directory. Defaults to ~/.local/bin.
The ~ prefix is expanded automatically. After confirming, the PATH check is
re-evaluated against the new value.
Controls: type to edit, enter to confirm, esc to go back.
Select which dotfile categories to symlink:
- shell (zsh/bash)
- git
- tmux
- starship
- neovim
Controls:
j/kto navigatespaceto toggleaall,nnoneenterto proceed with linkingsto skip dotfiles entirelyescto go back
Displays a summary of all selections:
- Install directory
- Enabled groups
- Dotfile categories (or "skipped")
Also shows where the config file will be saved.
Controls: y/enter to confirm, n/esc to go back.
After confirmation, the config is saved. The done screen shows:
- Success message
- Next steps (
devops-starter install,devops-starter dotfiles link) - PATH warning if applicable
The wizard writes to ~/.config/devops-starter/config.yaml (or
$XDG_CONFIG_HOME/devops-starter/config.yaml). The resulting file looks like:
install_dir: /home/user/.local/bin
groups:
languages: true
containers: true
kubernetes: true
infra: false
cloud: false
ansible: true
rust_tools: true
utilities: true
overrides:
terraform:
version: "1.8.0"
kubectl:
disabled: true| Field | Modified by setup? |
|---|---|
install_dir |
Yes |
groups.* |
Yes |
overrides |
Never -- preserved across re-runs |
Running devops-starter setup again:
- Loads your existing config
- Pre-selects groups based on current settings
- Pre-fills the install directory
- Lets you change any selections
- Saves without touching
overrides
This means version pins and per-tool disables you've set manually are always preserved.
For scripted environments, use --non-interactive to skip the TUI and
save the existing config (or defaults if no config exists):
# Use defaults
devops-starter setup --non-interactive
# Preview only
devops-starter setup --non-interactive --dry-run
# With custom config path
devops-starter setup --non-interactive --config /path/to/config.yamlIn non-interactive mode, the command:
- Loads existing config if present (preserving all settings)
- Falls back to
DefaultConfig()if no config file exists - Saves the config (unless
--dry-run)
If you see ! PATH check: ~/.local/bin is NOT in your PATH, add the following
to your shell profile:
# ~/.zshrc or ~/.bashrc
export PATH="$HOME/.local/bin:$PATH"Then restart your shell or run source ~/.zshrc.
If saving the config fails with a permission error, ensure you have write access to the config directory:
mkdir -p ~/.config/devops-starter
chmod 755 ~/.config/devops-starterThis should not happen with the setup wizard. If it does, check that you're not
running another process that overwrites the config file concurrently. The
MergeGroups function explicitly preserves the overrides map.