Personal dotfiles repository to consolidate settings and configurations across Linux, macOS, WSL, and Windows.
git/- Git configuration, aliases, and tool integrationshell/- Shell functions and initialization (Bash/Zsh)ohmyposh/- Oh My Posh prompt theme and configurationcopilot-statusline/- Copilot CLI statusline (Oh My Posh powered)winget/- WinGet bootstrap module for Windows.devcontainer/- Dev container / Codespaces configurationdocs/- Project documentation
Linux/macOS/WSL:
./install.shWindows PowerShell:
.\install.ps1Each module can be installed independently:
# Git configuration
cd git && ./install.sh
# Shell functions
cd shell && ./install.sh
# Oh My Posh prompt
cd ohmyposh && ./install.sh
# Copilot CLI statusline
cd copilot-statusline && ./install.sh
# WinGet bootstrap (Windows only)
cd winget && ./install.sh- Git for version control configuration
- Oh My Posh for the custom prompt theme and Copilot statusline
- jq for the Copilot statusline installer (Linux/macOS)
- VS Code (optional) for diff/merge tool integration and the workspace file
- Git LFS (optional) for large file support
- A Nerd Font for powerline glyphs and icons
- WinGet (optional, Windows) for package management
Each configuration module is organized in its own directory with:
- Configuration files (dotfiles)
- Installation scripts:
install.sh— Linux/macOS/WSL (Bash)install.ps1— Windows PowerShell
- Documentation (
README.md)
Installation scripts use set -euo pipefail for strict error handling, back up existing configs (with timestamps) before creating symbolic links, and skip re-linking if already configured. On Windows, scripts fall back to file copying if symbolic links are unavailable.
Full Git setup including user settings, editor integration (VS Code), and workflow defaults like autoSetupRemote and LFS support.
Aliases:
| Alias | Command | Alias | Command |
|---|---|---|---|
st |
status | co |
checkout |
br |
branch | ci |
commit |
ca |
commit -a | cm |
commit -m |
cam |
commit -am | cp |
cherry-pick |
df |
diff | dc |
diff --cached |
lg |
log --oneline --graph | ls |
log --stat |
pu |
push | pl |
pull |
rb |
rebase | rs |
reset |
sh |
stash | sm |
submodule |
unstage |
reset HEAD -- | last |
log -1 HEAD |
clearOldBranches— Cleans up local branches deleted from remote (switches to main, prunes, deletes "gone" branches)
Shell scripts are auto-loaded by shell/init.sh, which sources every .sh file in the shell/ directory on terminal startup (excluding install.sh). New functions are added by creating a new .sh file — no registration needed.
clearOldBranches— Git branch cleanup, available as a shell function (exported for subshells)- Oh My Posh initialization — Automatically configures the custom prompt if
oh-my-poshis installed
A custom two-line prompt theme with:
- Left prompt: Username, directory, Git branch/status, exit code
- Right prompt: Node.js, Go, Python indicators, shell name, current time
- Tooltips: AWS and Azure context when relevant
- SSH session awareness and a custom color palette
An Oh My Posh-powered statusline for GitHub Copilot CLI that displays:
- Git branch and working tree status
- Runtime/language versions (Node.js, Go, Python)
- Context token usage with visual gauge
- Session duration
- Line changes (+added/-removed)
Based on Scott Hanselman's gist.
Open dotfiles.code-workspace in VS Code for:
- Automatic shell configuration loading via
BASH_ENV - Integrated terminal with all dotfiles functions pre-loaded
- Build task to reload dotfiles (
Load Dotfiles) - GitHub Copilot and MCP server configuration
- GitHub Issues queries pre-configured
The .devcontainer/devcontainer.json enables:
- Ubuntu 24.04 base image with Git, GitHub CLI, Node.js, and PowerShell (
pwsh) pre-installed - 240-minute idle timeout for Codespaces (vs. the 30-minute default)
- GitHub Copilot CLI (
copilot) and Squad CLI (squad) installed globally viapostCreateCommand - Automatic dotfiles installation via
postCreateCommand
Open this repo in a Codespace or VS Code Dev Container and everything is configured automatically.
| Platform | Status | Method |
|---|---|---|
| Linux | ✅ Supported | Symbolic links |
| macOS | ✅ Supported | Symbolic links |
| Windows WSL | ✅ Supported | Symbolic links |
| Windows PowerShell | ✅ Supported | Symbolic links (admin/Developer Mode) or file copy fallback |
| GitHub Codespaces | ✅ Supported | Dev container with auto-install |
- Create a directory at the repo root (e.g.,
vim/) - Add
install.shandinstall.ps1following the backup → symlink/copy pattern - Add a
README.mddescribing the module - Register the module in both root
install.shandinstall.ps1 - Update this README to document the new module
This project is licensed under the MIT License.
See SECURITY.md for vulnerability reporting guidelines.
This repo is a GitHub template. Click Use this template on GitHub to create your own dotfiles repo from it.
To keep your downstream copy in sync with upstream updates (manual or automated via a GitHub Action), see SYNCING.md. An example sync workflow is included at docs/examples/template-sync.yml.