Personal configuration files for macOS development environment.
git clone [email protected]:descentintomael/dotfiles ~/.dotfiles
cd ~/.dotfiles
rake installThe install script will:
- Prompt for git user name/email (stored in
~/.gitconfig.local) - Prompt for AWS profile (stored in
~/.zshrc.local) - Create symlinks for all configuration files
- Install Homebrew and packages from
Brewfile - Initialize shell plugins via sheldon
~/.dotfiles/
├── shell/ # Shell configuration
│ ├── zshrc # Main zsh config → ~/.zshrc
│ ├── zlogin # Login shell config → ~/.zlogin
│ ├── aliases # Shell aliases (sourced by zshrc)
│ ├── functions # Shell functions (sourced by zshrc)
│ └── extras/ # Additional shell scripts (md2pdf, etc.)
│
├── editor/ # Editor configuration
│ └── nvim/ # Neovim (Lua-based) → ~/.config/nvim/
│
├── git/ # Git configuration
│ ├── config # Main git config → ~/.gitconfig
│ ├── ignore # Global gitignore → ~/.gitignore
│ └── attributes # Git attributes
│
├── tools/ # Modern CLI tool configs
│ ├── starship.toml # Prompt → ~/.config/starship.toml
│ └── sheldon/ # Plugin manager → ~/.config/sheldon/
│
├── ruby/ # Ruby development configs
│ ├── irbrc # IRB config → ~/.irbrc
│ ├── gemrc # Gem config → ~/.gemrc
│ └── railsrc # Rails generators → ~/.railsrc
│
├── templates/ # Local config templates (not symlinked)
│ ├── gitconfig.local.template
│ └── zshrc.local.template
│
├── themes/ # Terminal themes
│ └── iterm/ # iTerm color schemes
│
├── Brewfile # Homebrew packages
└── Rakefile # Installation script
| Tool | Purpose | Usage |
|---|---|---|
| zsh | Shell | Default macOS shell |
| sheldon | Plugin manager | Fast, declarative plugin management |
| starship | Prompt | Cross-shell, fast, customizable |
| fzf | Fuzzy finder | Ctrl+R for history, Ctrl+T for files |
| zoxide | Smart cd | z <partial-path> learns your habits |
| eza | Modern ls | Icons, git status, tree view |
| direnv | Per-directory env | Auto-load .envrc files |
| Tool | Purpose |
|---|---|
| neovim | Editor with Lua config |
| delta | Syntax-highlighted git diffs |
| ripgrep | Fast code search (rg) |
| fd | Fast file finder |
| bat | Cat with syntax highlighting |
| jq | JSON processor |
| Tool | Purpose |
|---|---|
| rbenv | Ruby version manager |
| node | JavaScript runtime |
| python | Python runtime |
| go | Go runtime |
| java | OpenJDK 17 |
The prompt displays:
➜- Prompt indicator (red)- Ruby version (when in Ruby project)
- Git branch
±(branch) - Dirty indicator
✗(yellow, when uncommitted changes) - Current directory (right-aligned)
- zsh-autosuggestions - History-based suggestions
- fast-syntax-highlighting - Real-time syntax highlighting
- fzf-tab - Fuzzy completion menu
- oh-my-zsh git - Git aliases and completions
- oh-my-zsh bundler - Bundle exec shortcuts
- oh-my-zsh rake - Rake task completion
- Delta for side-by-side diffs with syntax highlighting
- Kaleidoscope as diff/merge tool
- Auto-prune on fetch
- Auto-setup remote on push
- Useful aliases:
git lol,git recent,git amend,git undo
Create local config files for machine-specific settings (not tracked in git):
~/.gitconfig.local - Git user identity:
[user]
name = Your Name
email = [email protected]~/.zshrc.local - Machine-specific shell config:
# AWS
export AWS_PROFILE=your-profile
# Project-specific paths
export PATH="$HOME/custom/bin:$PATH"Edit Rakefile and add to the SYMLINKS hash:
SYMLINKS = {
# ... existing entries ...
'path/in/repo' => File.join(ENV['HOME'], '.target'),
}rake install # Full installation with prompts
rake symlinks # Only create symlinks (non-interactive)MIT