An opinionated set of dotfiles and other configurations from John "Steggy" Stegeman
- 🚀 Uses chezmoi to manage and apply the configuration
- 💻 Works on both macOS and Linux with cross-platform path handling
- 🎨 Rosé Pine color theme throughout (oh-my-posh, bat, helix, atuin, fish, tmux, VS Code, wezterm)
- 🐟 Fish shell as the default shell with oh-my-posh prompt and fisher for plugins
- 🕺🏽 Zsh with zsh4humans and Powerlevel10k (still available, but Fish is default)
- 🖥️ Wezterm terminal emulator with Rosé Pine theme
- ⌨️ Gallium keyboard layout using kanata
- 📝 Helix editor with Rosé Pine theme and Gallium keymaps
- 📑 lnav for viewing logfiles
- 🔐 1Password (macOS only) integration for managing secrets via chezmoi's 1Password capabilities
- 🕵🏽♀️ SSH agent integration with 1Password (store SSH private keys in 1Password)
- 🍺 Homebrew on macOS for installing utilities and GUI apps
- ☕️ Version management with mise (formerly rtx)
- ❗️ jbang for running Java programs from self-contained source files
- 🐍 uv to manage Python versions, dependencies, and virtual environments
- 👍🏽 Enhanced command-line utilities with aliases:
- 📚 atuin for shell history management
- 🔍 fzf for fuzzy finding
- 🗂️ zoxide for smart directory jumping
- 🎯 leadr for terminal session management
- 🧩 carapace for enhanced shell completions
- 🔧 jj (Jujutsu) version control with custom starship integration
- 🐳 Orbstack on macOS for creating VMs
- 🔄 zmv enabled in zsh (powerful command-line file renamer)
This configuration uses the Rosé Pine color theme across all supported applications:
- ✅ oh-my-posh prompt (rose-pine palette)
- ✅ Bat syntax highlighter (rose-pine theme)
- ✅ Helix editor (rose_pine theme)
- ✅ Atuin history (rosepine theme)
- ✅ Fish shell (Rosé Pine theme via fisher plugin)
- ✅ Tmux (rose-pine/tmux plugin)
- ✅ VS Code (Rosé Pine theme)
- ✅ Wezterm (Rose Pine theme via plugin)
Some tools may still use alternative themes where Rosé Pine is not available (e.g., git delta uses Solarized for syntax highlighting, bpytop uses solarized_dark).
The default shell is Fish with:
- Starship prompt with Rosé Pine palette
- Fisher plugin manager
- Custom functions for common tasks (git aliases, chezmoi shortcuts, etc.)
- Enhanced utilities via function wrappers
- Smart path management (only adds paths if directories exist)
Key Fish plugins:
jorgebucaran/autopair.fish- Automatic bracket/parenthesis pairingnickeb96/puffer-fish- Enhanced directory navigation0rax/fish-bd- Quick directory navigationPatrickF1/fzf.fish- FZF integrationicezyclon/zoxide.fish- Zoxide integrationrose-pine/fish- Rosé Pine theme
Zsh is still configured and available with:
- zsh4humans framework
- Powerlevel10k prompt (if configured)
- zmv for file renaming
- Various zsh plugins and enhancements
You can install chezmoi and apply this configuration in a single step:
sh -c "$(curl -fsLS get.chezmoi.io)" -- init --apply https://github.com/johnstegeman/dotfilesThis will:
- Install chezmoi
- Clone this repository to chezmoi's local state directory (
~/.local/share/chezmoi) - Apply the chezmoi local state to your home directory
Note: If you want to use your own fork, substitute the URL with your repository URL.
If you have already installed chezmoi, you can clone this repository into the chezmoi source state directory:
# Remove existing source directory if needed
rm -rf ~/.local/share/chezmoi
# Clone the repository
git clone https://github.com/johnstegeman/dotfiles ~/.local/share/chezmoi
# Apply the configuration
chezmoi applyAfter installation, you may want to:
-
Install Homebrew packages (macOS):
brew bundle --file ~/config/Brewfile -
Install Fish plugins:
fisher update
-
Install tmux plugins (if using tmux):
- Press
Prefix + Iin tmux to install plugins
- Press
-
Configure 1Password integration (macOS, optional):
- Follow chezmoi's 1Password guide
~/.config/fish/- Fish shell configuration~/.zshrc- Zsh configuration (zsh4humans)~/.zshenv- Zsh environment variables~/.config/oh-my-posh/steggy-rosepine- oh-my-posh prompt configuration~/.config/wezterm/wezterm.lua- Wezterm terminal configuration~/.config/ghostty/config- Ghostty terminal configuration (alternative)
~/.config/helix/config.toml- Helix editor configuration~/.config/Code/User/settings.json- VS Code settings (via template)
~/.config/git/config- Git configuration with delta for diffs~/.config/jj/config.toml- Jujutsu (jj) configuration
~/.config/tmux/tmux.conf- Tmux configuration (minimal)~/.tmux.conf- Main tmux configuration with plugins~/.config/bpytop/bpytop.conf- System monitor configuration~/.config/atuin/config.toml- Shell history configuration
~/.config/bat/config- Bat syntax highlighter configuration~/.config/mise/config.toml- Mise version manager configuration~/.config/leadr/- Leadr session manager configuration
- Automatic path detection (only adds paths if directories exist)
- Cross-platform support (macOS ARM/Intel, Linux)
- Smart homebrew path detection (
/opt/homebrewor/usr/local)
- Robust error handling in custom functions
- Graceful fallbacks when tools are unavailable
- Clear error messages for debugging
cm- Chezmoi wrapper (apply, edit, cd)br- Homebrew wrapper (update, clean, install)dock- macOS Dock backup/restorejmr- Jujutsu multi-remote setupmkvenv- Create Python virtual environments with uvuvu- Update uv lockfile and synctake- Create directory and cd into it- Git aliases:
g,ga,gb,gc,gl,gp,gst - Enhanced utilities:
ls,cat,df,du,rm(with fallbacks)
md- Make directory and cdtake- Create directory and cdcmcd- Change to chezmoi source directorycmedit- Edit chezmoi source in VS Codedownload- Download Neo4j distributionsmcreate- Create multipass VMsmssh- SSH into multipass VMs
Several configuration files use chezmoi templates for cross-platform compatibility:
settings.json.tmpl- VS Code settings with home directory templatecom.example.kanata.plist.tmpl- Kanata launch daemon with path templatesexecutable_host.zsh.tmpl- Host-specific zsh configuration
- Uses Homebrew for package management
- Supports both ARM (
/opt/homebrew) and Intel (/usr/local) architectures - Includes LaunchDaemons for kanata keyboard layout
- 1Password integration available
- Orbstack for containers and VMs
- Uses standard Linux package managers
- Paths automatically adjusted for Linux filesystem structure
- Some macOS-specific features are conditionally excluded
- Fork this repository (recommended)
- Make changes in your fork
- Use chezmoi templates for user-specific paths:
# Example: Add a custom path test -d {{ .chezmoi.homeDir }}/custom/bin; and fish_add_path {{ .chezmoi.homeDir }}/custom/bin
For sensitive data (SSH keys, API keys, etc.), use chezmoi's 1Password integration:
# Add a secret to 1Password
chezmoi add --encrypt ~/.ssh/id_rsa
# The file will be stored encrypted in 1PasswordSee the chezmoi 1Password guide for details.
# Pull latest changes from repository
chezmoi update
# Review changes
chezmoi diff
# Apply changes
chezmoi apply# Edit a file in the source state
chezmoi edit ~/.config/fish/config.fish
# Add a new file to chezmoi management
chezmoi add ~/.newfile
# Remove a file from chezmoi management
chezmoi forget ~/.oldfileThis is a personal dotfiles repository, but suggestions and improvements are welcome! If you find something useful or have ideas for improvements, feel free to open an issue or submit a pull request.
This configuration is provided as-is for personal use. Feel free to fork and adapt for your own needs.
- Rosé Pine - Beautiful color theme
- chezmoi - Dotfile management
- Fish Shell - Friendly interactive shell
- oh-my-posh - Cross-shell prompt
- All the amazing open-source tools that make this configuration possible