License: Personal dotfiles — all rights reserved. Forking and reuse are not permitted. See LICENSE.
Personal dotfiles managed with a bare Git repository, based on the Atlassian method.
Each branch is maintained independently with its own complete set of dotfiles — they are not derived from one another.
| Branch | Purpose |
|---|---|
master |
General-purpose — devcontainers, Codespaces, Debian/Ubuntu environments |
macos |
macOS-specific configuration and tooling |
- zsh — Oh My Zsh with a curated plugin list, custom themes, and sane history options
- zsh plugins —
zsh-autosuggestions,zsh-syntax-highlighting, customumaskplugin - zsh themes —
devcontainer,codespace, andexamplethemes under.config/zsh/themes/ - fish — Shell config, aliases, prompt, and theme under
.config/fish/ - git — Rich git config with aliases, color, LFS, URL shorthands, and sane defaults
- eza — Modern
lsreplacement with aliases (l,ll,la,tree) - mise — Runtime version manager activated in zsh
- vim — Basic
.vimrc - misc —
.dircolors,.colors,.gemrc,.my.cnf
The preferred installation method is the Atlassian bare Git repo method, documented in detail in INSTALL.md.
GitHub Devcontainers / Codespaces note: GitHub's dotfiles support does not invoke the Atlassian method directly — it looks for a runnable script (
setup.sh,install.sh, etc.) and executes it. To bridge this,setup.shexists solely as a GitHub-compatible entry point; it installs dependencies and then performs the Atlassian bare-clone method internally. If you are not using GitHub Devcontainers, follow the manual steps in INSTALL.md instead.
Point GitHub to this repository in your dotfiles settings. GitHub will automatically run setup.sh when a new devcontainer or Codespace is created.
sh -c "$(curl -fsSL https://raw.githubusercontent.com/haydenk/dotfiles/master/setup.sh)"The setup.sh script will:
- Add the eza apt repository and install
eza,git-flow,pwgen, andvim - Clone this repo as a bare Git repository into
~/.cfg(Atlassian method) - Check out dotfiles into
$HOME, backing up any conflicts to~/.config-backup/ - Install
zsh-autosuggestionsandzsh-syntax-highlightingplugins
# Clone as a bare repo — choose your branch
git clone --bare git@github.com:haydenk/dotfiles.git $HOME/.cfg
# Set up the config alias
alias config="/usr/bin/git --git-dir=$HOME/.cfg/ --work-tree=$HOME"
# Check out files for your environment (back up any conflicting files first)
# For devcontainers / Linux:
config checkout master
# For macOS:
# config checkout macos
# Hide untracked files
config config --local status.showUntrackedFiles noIf checkout fails due to existing files, back them up first:
mkdir -p ~/.config-backup config checkout 2>&1 | grep -E "^\s+\." | awk '{print $1}' | xargs -I{} mv {} ~/.config-backup/{} config checkout master
Use config in place of git to manage dotfiles:
config status
config add ~/.zshrc
config commit -m "Update zshrc"
config push- INSTALL.md — detailed setup reference