Skip to content

Repository files navigation

Dotfiles

Personal dotfiles for macOS and Linux development environments. Manages shell configuration, Git settings, prompt theming, and development tool defaults through a single idempotent installer.

What's Included

CategoryTools / Configs
ShellZsh (.zshrc, .zprofile) with OS-specific variants
PromptOh My Posh powerline theme (Starship fallback)
GitGlobal config with delta pager, VS Code diff/merge tools, aliases, rebase workflow
AliasesCross-platform + OS-specific (macOS BSD / Linux GNU)
Languagespyenv (Python), NVM (Node), Bun, PHP 8.3
RubyRails generator defaults, RSpec options
SecretsTemplate-based private_env.zsh (never committed)

Quick Start

# Clone the repository
git clone https://github.com/boutquin/dotfiles.git ~/Developer/dotfiles
# Run the installercd~/Developer/dotfiles
chmod +x install.zsh
./install.zsh

The installer will:

  1. Detect your OS (macOS or Linux)
  2. Back up any existing config files (as .bak-<timestamp>)
  3. Create symlinks from the repo to your home directory
  4. Copy private_env.zsh.template to private_env.zsh if it doesn't exist
  5. Secure private_env.zsh with chmod 600

After installation, restart your terminal or run source ~/.zshrc.

Prerequisites

  • Zsh (default on macOS; sudo apt install zsh on Ubuntu)
  • Oh My Poshbrew install oh-my-posh (macOS) or see docs for Linux
  • Nerd Fontbrew install --cask font-meslo-lg-nerd-font (set as terminal font)
  • deltabrew install git-delta (for improved git diffs)

Folder Structure

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

Symlink Map

The installer creates the following symlinks:

Repo SourceMachine 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

Secrets Management

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 .zprofile on login (with .zshrc fallback for non-login shells)

To set up secrets:

  1. The installer copies private_env.zsh.template to private_env.zsh on first run
  2. Fill in your actual values in private_env.zsh
  3. The template is tracked in Git; the actual file is not

Customization

  • Machine-specific config: Create ~/.config/extra.zsh for settings that shouldn't be in the repo (sourced by .zshrc if present)
  • New aliases: Add to zsh_aliases_shared.zsh (cross-platform) or zsh/{os}/zsh_aliases.zsh (OS-specific)
  • Git aliases: Edit config/git/config — additional aliases are available as commented examples

License

Apache License 2.0 — Copyright 2025-2026, Pierre G Boutquin

About

Cross-platform dotfiles for macOS, Linux, and Windows using zsh or PowerShell, oh-my-posh, and streamlined package management.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages