Skip to content

Configuration

Everything that parameterises a Ponos run: the environment variables it reads, the choices it persists, the packages it declares, and the paths it manages.

Environment variables

Required for Git configuration

Read by setup_git; expected in ~/.zshenv so they reach the script's non-interactive shell. Missing any one skips the Git step (each missing variable is logged).

VariableDescriptionExample
GIT_AUTHOR_NAMEName used in commits (user.name).John Doe
GIT_AUTHOR_EMAILEmail used in commits (user.email).john@example.com
GIT_EDITOREditor Git launches (core.editor).vim
GIT_DEFAULT_BRANCHDefault branch (init.defaultBranch); also the default target for bclean/rfrom.main
GIT_BRANCH_PREFIXPrefix used by the cmb/cm aliases.jdoe

Optional run-time overrides

VariableUsed byEffect
PONOS_CONTAINERsync_mac.shdocker-desktop or colima; skips the container prompt.
PONOS_BROWSERsync_mac.shgoogle-chrome or brave-browser; skips the browser prompt.
CHEZMOI_SOURCE_DIRsync_mac.shOverrides the chezmoi source directory.

Read by the CLI extensions

Set in .zshrc (except GIT_PATH, see the note in CLI Reference → rhooks).

VariableDefault value in .zshrcUsed by
GIT_PATH_CONFIG$DEV_PERSO_PATH/Ponosrhooks (source of hook templates).
GIT_PATH(unset)rhooks (directory to scan for repositories).
GIT_DEFAULT_BRANCHfrom ~/.zshenvbclean, rfrom.
DEV_PATH, DEV_PERSO_PATH, DEV_PRO_PATH, DEV_ASSO_PATHunder ~/Documents/Developmentthe perso/pro/asso aliases.
SSH_AUTH_SOCK~/.bitwarden-ssh-agent.sockSSH auth via the Bitwarden agent.

Persisted choices

~/.config/ponos/install-choices.env — written by save_install_choices, sourced by load_install_choices on the next run:

sh
CONTAINER_CHOICE="docker-desktop"
BROWSER_CHOICE="google-chrome"

Contains only non-sensitive selections. Delete it to be asked again from scratch.

Brewfile

The base package set (authoritative list lives in the repository's Brewfile):

GroupPackages
Core toolsgit, zsh, starship, chezmoi, ansible
Language managerspyenv, nvm
Editors / IDE / AIvim, visual-studio-code, jetbrains-toolbox, claude-code, opencode-desktop, redis-insight
Infra / DevOpstalosctl (siderolabs tap), opentofu, kubectl, helm, velero, docker-desktop
Appsiterm2, insomnia, firefox, obsidian, rectangle, alt-tab
Communicationwhatsapp, discord
Otherbitwarden, spotify, steam

At run time sync_mac.sh appends the interactive selections (see Packages & Interactive Choices) to a temporary effective Brewfile; the tracked file is never modified.

Managed paths

PathManaged byContents
~/.zshrcsymlinkShell init, env vars, aliases, keybindings.
~/.config/starship.tomlsymlinkStarship prompt (Dracula palette).
~/.ssh/configsymlinkSSH host definitions (keys via Bitwarden agent).
~/.vim/vimrcsymlinkVim configuration.
~/.vim/pack/themes/opt/draculagit cloneVim Dracula theme.
~/Library/Application Support/Code/User/{settings,keybindings}.jsonsymlinkVS Code config.
~/.config/opencode/{opencode,tui}.jsonsymlinkOpencode config.
~/.gitconfigrewrittenGlobal Git config, aliases, template dir.
~/.config/git/hooksmkdirHooks directory created by setup_git.
~/.zsh/zsh-autosuggestions, ~/.zsh/zsh-syntax-highlightinggit cloneZsh plugins.
~/.pyenv, ~/.nvm, ~/.sdkmanversion managersLanguage runtimes.
~/.config/ponos/install-choices.envwrittenPersisted interactive choices.

~/.gitconfig note. setup_git runs rm ~/.gitconfig (without -f) before rewriting it. On a machine with no existing global config this rm fails, and because the script runs under set -e the failure aborts the whole run at that point. Ensure a ~/.gitconfig exists (even an empty touch ~/.gitconfig) before the first run.