Personal dotfiles for macOS and Linux development environments. Manages shell configuration, Git settings, prompt theming, and development tool defaults through a single idempotent installer.
| Category | Tools / Configs |
|---|---|
| Shell | Zsh (.zshrc, .zprofile) with OS-specific variants |
| Prompt | Oh My Posh powerline theme (Starship fallback) |
| Git | Global config with delta pager, VS Code diff/merge tools, aliases, rebase workflow |
| Aliases | Cross-platform + OS-specific (macOS BSD / Linux GNU) |
| Languages | pyenv (Python), NVM (Node), Bun, PHP 8.3 |
| Ruby | Rails generator defaults, RSpec options |
| Secrets | Template-based private_env.zsh (never committed) |
# Clone the repository
git clone https://github.com/boutquin/dotfiles.git ~/Developer/dotfiles
# Run the installer
cd ~/Developer/dotfiles
chmod +x install.zsh
./install.zshThe installer will:
- Detect your OS (macOS or Linux)
- Back up any existing config files (as
.bak-<timestamp>) - Create symlinks from the repo to your home directory
- Copy
private_env.zsh.templatetoprivate_env.zshif it doesn't exist - Secure
private_env.zshwithchmod 600
After installation, restart your terminal or run source ~/.zshrc.
- Zsh (default on macOS;
sudo apt install zshon Ubuntu) - Oh My Posh —
brew install oh-my-posh(macOS) or see docs for Linux - Nerd Font —
brew install --cask font-meslo-lg-nerd-font(set as terminal font) - delta —
brew install git-delta(for improved git diffs)
dotfiles/
├── README.md
├── LICENSE
├── .gitignore
├── install.zsh # Idempotent installer (backup + symlink)
├── private_env.zsh.template # Template for API keys / secrets
├── zsh/
│ ├── macos/
│ │ ├── .zshrc # macOS interactive shell config
│ │ ├── .zprofile # macOS login shell config
│ │ └── zsh_aliases.zsh # macOS-specific aliases (BSD tools)
│ ├── linux/
│ │ ├── .zshrc # Linux interactive shell config
│ │ ├── .zprofile # Linux login shell config
│ │ └── zsh_aliases.zsh # Linux-specific aliases (GNU tools)
│ ├── zsh_aliases_shared.zsh # Cross-platform aliases
│ └── oh-my-posh.json # Prompt theme (powerline segments)
└── config/
├── git/
│ ├── config # Global Git configuration
│ └── ignore # Global gitignore
├── rails/
│ └── railsrc # Rails generator defaults
└── rspec/
└── options # RSpec global options
The installer creates the following symlinks:
| Repo Source | Machine Target |
|---|---|
zsh/{os}/.zshrc |
~/.zshrc |
zsh/{os}/.zprofile |
~/.zprofile |
zsh/zsh_aliases_shared.zsh |
~/.config/zsh/zsh_aliases_shared.zsh |
zsh/{os}/zsh_aliases.zsh |
~/.config/zsh/zsh_aliases.zsh |
zsh/oh-my-posh.json |
~/.oh-my-posh.json |
config/git/config |
~/.config/git/config |
config/git/ignore |
~/.config/git/ignore |
private_env.zsh |
~/.config/private_env.zsh |
config/rails/railsrc |
~/.config/rails/railsrc |
config/rspec/options |
~/.config/rspec/options |
API keys and credentials are stored in private_env.zsh, which is:
- Never committed (matched by
private_env.*in.gitignore) - Permissioned to owner-only read/write (
chmod 600) - Sourced by
.zprofileon login (with.zshrcfallback for non-login shells)
To set up secrets:
- The installer copies
private_env.zsh.templatetoprivate_env.zshon first run - Fill in your actual values in
private_env.zsh - The template is tracked in Git; the actual file is not
- Machine-specific config: Create
~/.config/extra.zshfor settings that shouldn't be in the repo (sourced by.zshrcif present) - New aliases: Add to
zsh_aliases_shared.zsh(cross-platform) orzsh/{os}/zsh_aliases.zsh(OS-specific) - Git aliases: Edit
config/git/config— additional aliases are available as commented examples
Apache License 2.0 — Copyright 2025-2026, Pierre G Boutquin