Personal macOS environment managed with chezmoi. This repository keeps shell, Neovim, Git, and terminal configuration reproducible across machines using Homebrew for package management.
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/RyanJamesCaldwell/dotfiles/main/install.sh)"The bootstrap script installs essential dependencies, runs brew bundle, and applies the chezmoi-managed files.
- Shell: Zsh with oh-my-zsh, fzf integration, starship prompt, lazy nvm/asdf loading, aliases tuned for git, and
wtsourced from~/.config/wt/wt.zsh. - Editor: Kickstart-based Neovim setup with Stylua formatting and lazily-loaded plugins.
- Terminal: WezTerm configuration for pane-focused workflows, rose-pine colors, and JetBrainsMono Nerd Font.
- Packages: Brewfile defines CLI tools (asdf, gh, ripgrep, etc.) and GUI apps (WezTerm, ngrok, 1Password CLI).
Theme selection is shared across Zsh/Starship, Neovim, and WezTerm through ~/.config/theme/current.
- Available themes:
sakura_night(default),ashfall,rosepine - From shell:
themeortheme currentshows the active themetheme listshows valid themestheme pickopens an fzf picker when available, with a numbered fallbacktheme <sakura_night|ashfall|rosepine>applies a theme directly
- From Neovim:
:ThemeSet <sakura_night|ashfall|rosepine>:ThemeToggle(cycles through all themes)
- From WezTerm: reads
~/.config/theme/currentand applies the matching scheme automatically (sakura_night,ashfall, orrose-pineforrosepine)
Theme files live in:
dot_config/starship/themes/for Starshipdot_config/nvim/lua/custom/for custom Neovim palettesdot_wezterm.luafor WezTerm theme mappings and tab bar styling If WezTerm is already open, it picks up theme changes automatically (status refresh interval is ~1s).
- Edit files under this repo (e.g.,
dot_zshrc,dot_config/nvim/init.lua). - Run
chezmoi applyto sync changes into$HOME. - Commit updates with descriptive messages and push to GitHub.
Use chezmoi diff to inspect changes before applying, and chezmoi doctor to verify templates on new hosts.
- Drop
workorpersonalinto~/.chezmoi_profile(not tracked in git) to pick the active configuration; the default remainspersonalwhen the file is absent. - Chezmoi exposes the selection to templates as
.profile, which currently feeds intoCHEZMOI_PROFILEand optional overrides sourced from~/.zshrc.<profile>. - Use
profile current,profile list,profile pick, orprofile <personal|work>from Zsh to inspect or switch profiles. - The
profilehelper writes~/.chezmoi_profile, updatesCHEZMOI_PROFILEin the current shell, runschezmoi applywhen available, and sends a terminal notification when possible.
- nvm and asdf are lazy-loaded to keep startup fast while preserving shims and command behavior.
- Run
zsh-startup-profileto launch a one-shot profiled shell and printzprofoutput without adding overhead to normal startup.
MIT License © Ryan Caldwell