My personal development environment configuration files.
- ZSH - Shell with custom aliases, functions, and environment setup
- Git - Version control with useful aliases and better defaults
- Helix - Modern text editor with LSP support and git blame integration
- tmux - Terminal multiplexer with vim-style navigation
- Hyper - Terminal emulator with custom theme
dotfiles/
βββ zsh/
β βββ .zshrc # Main ZSH configuration
β βββ .zshenv # Environment variables
βββ git/
β βββ .gitconfig # Git configuration
β βββ .gitignore_global # Global ignore patterns
βββ helix/
β βββ .config/helix/
β βββ config.toml # Helix editor settings
βββ tmux/
β βββ .tmux.conf # tmux configuration
βββ hyper/
βββ .hyper.js # Hyper terminal configuration
Setting up your development environment on a new Mac.
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"# Core tools
brew install git stow zsh tmux helix
# Python tools
brew install uv# Create directory structure
mkdir -p ~/Code
cd ~/Code
# Clone your dotfiles
git clone https://github.com/Doctacon/dotfiles.git
cd dotfiles# Link all configs at once
stow zsh git helix tmux
# Or link individually if you prefer
stow zsh # Shell config
stow git # Git config
stow helix # Editor config
stow tmux # Terminal multiplexer# Install Python LSPs
uv tool install pyright
uv tool install ruff-lsp# Add homebrew zsh to allowed shells
sudo sh -c "echo $(which zsh) >> /etc/shells"
# Change default shell
chsh -s $(which zsh)Close and reopen your terminal, or run:
source ~/.zshrcYour environment is ready. Test it out:
# Check helix is working with LSP
hx --health python
# Test git aliases
git s
# Test ripgrep
rg "test"If you're setting this up on a work machine with existing configs and sensitive environment variables:
Before running stow, save your work-specific settings:
# Copy your existing environment variables to a local file
cp ~/.zshrc ~/.zshrc.local
# Edit to keep only work-specific stuff (API keys, paths, etc.)
hx ~/.zshrc.local
# Remove everything except your work-specific exports and configsFollow the setup steps above. When you run stow zsh, it will replace your .zshrc with the dotfiles version.
The .zshrc from dotfiles automatically sources ~/.zshrc.local if it exists, so all your work-specific environment variables will still load.
In ~/.zshrc.local (never committed):
# Work-specific API keys
export OPENAI_API_KEY="sk-..."
export AWS_ACCESS_KEY_ID="..."
export DATABASE_URL="..."
# Company-specific paths
export WORK_REPO="/Users/you/work/repo"
# Corporate proxy settings
export HTTP_PROXY="..."In dotfiles .zshrc (committed to git):
- General aliases and functions
- Tool configurations
- Generic PATH additions
- Theme and prompt settings
This way you get all your dotfiles goodness while keeping sensitive work data separate and secure.
# Link configurations
stow zsh # Link single package
stow zsh git helix # Link multiple packages
# Unlink configurations
stow -D zsh # Remove single package
stow -D zsh git helix # Remove multiple packages
# Relink configurations (useful after updates)
stow -R zsh # Relink single package
stow -R -v zsh git helix # Relink multiple with verbose output
# Dry run (preview changes)
stow -n -v zsh # See what would happen# See all symlinks
ls -la ~ | grep -E "^l.*dotfiles"
# Check specific symlink
ls -la ~/.zshrcFeatures:
- Smart prompt with git integration
- Extensive aliases for git, navigation, and common tasks
- History with deduplication and sharing
- Ripgrep aliases for data engineering (
rgs,rgpy,rgdata, etc.) - Custom functions (
mkcd,extract,backup,gacp) - Environment setup for development tools
Key Aliases:
ll,la- Enhanced listinggs,gd,gp- Git shortcutsrgs- Search SQL filesrgpy- Search Python filesrgdata- Search data files (CSV, JSON, etc.)
Features:
- Helix as default editor
- Global gitignore for common files
- Better diff algorithms and merge conflict display
- Auto-prune on fetch
- Rebase by default on pull
- SSH preference for GitHub
Useful Aliases:
git s- Quick statusgit ll- Pretty log with graphgit cane- Amend without editing messagegit undo- Undo last commit (keep changes)git recent- Show recent branchesgit go <branch>- Switch/create branch
Features:
- Catppuccin Mocha theme
- Relative line numbers
- Git gutter indicators
- Mouse support
- Smart indentation
Custom Keybindings:
Alt-b- Git blame for current lineSpace e/f- File pickerSpace r- Rename symbolSpace a- Code actionTab/Shift-Tab- Buffer switchingjk- Exit insert mode
Features:
- Prefix:
Ctrl-a(instead ofCtrl-b) - Mouse support enabled
- Vim-style pane navigation (
h,j,k,l) - Window/pane indexing starts at 1
- 256 color support
Key Bindings:
Prefix |- Vertical splitPrefix -- Horizontal splitPrefix r- Reload configPrefix h/j/k/l- Navigate panesPrefix H/J/K/L- Resize panes
Features:
- Fira Code font with ligatures
- Dracula-inspired color scheme
- WebGL renderer for performance
- Custom tab styling
- ZSH as default shell
For machine-specific configurations:
- ZSH: Create
~/.zshrc.local - Git: Use
git config --localin repositories
- Create a new directory in
~/Code/dotfiles/ - Mirror the home directory structure
- Run
stow <package>to create symlinks
Example for adding vim configuration:
mkdir -p ~/Code/dotfiles/vim
echo "set number" > ~/Code/dotfiles/vim/.vimrc
cd ~/Code/dotfiles
stow vimThis means files already exist where stow wants to create symlinks.
# Option 1: Back up existing file and retry
mv ~/.zshrc ~/.zshrc.backup
stow zsh
# Option 2: Force adopt existing files
stow --adopt zshMake sure you've installed and activated your virtual environment:
# Create and activate virtual environment
uv venv
source .venv/bin/activate
# Install project dependencies
uv sync # if using pyproject.toml
# or
uv pip install <package> # for individual packagesMake sure you restarted your terminal after setup, or run:
source ~/.zshrcMIT - Feel free to use and modify these configurations