This repo represents my personal development setup built in a infrastructure-as-code style of repository. I use it to centrally store as many configs as possible and keep them versioned for debugging and sharing purposes.
git clone [email protected]:HaydenMeloche/dotfiles.git ~/.dotfiles
cd ~/.dotfiles
./bootstrapThe installation script symlinks all the files in this repo to the locations that their applications expect their configs to live. For example $repo_dir/home/.zshrc (the file in this repo) will be symlinked to ~/.zshrc. Any direct config updates in the future to ~/.zshrc is updating the git-versioned file in this repo.
Once the script is complete, set your Git identity in ~/.gitconfig.local and add your SSH key to ~/.ssh/config. A ~/.zshlocal file is created for private environment variables.
I never use caps lock, therefor I remap it to a "super" shortcut through Karabiner. I do this to achieve my window-tiling style quick access keys for example CAPS + 1 opening/focsuing to Ghostty.
If you want to replicate this, open Karabiner-Elements and enable Caps Lock to Hyper from Complex Modifications.
Use dotfiles-update later to update the repository, packages, and shell plugins.
Brewfile— Homebrew command-line tools and desktop applications.bootstrap— the main installer: installs Homebrew packages and developer tools, applies macOS defaults, and creates configuration symlinks.bin/dotfiles-update— updates this repository, Homebrew packages, and Sheldon plugins.scripts/install-{nvm,sdkman,codex,claude}— install NVM, SDKMAN!, Codex, and Claude Code if they are not already available.scripts/macos-defaults— Dark Mode, keyboard and scrolling preferences, Dock layout, Finder settings, and trackpad click behavior.scripts/clone-reposandrepos.tsv— clone the listed repositories into~/code(or$CODE_DIR), without replacing existing directories.
home/.zprofile— Homebrew and Docker CLI environment setup.home/.zshrc— shell defaults, PATH entries, NVM, SDKMAN!, Sheldon, direnv, fzf, Herdr tab naming, and loading of private local settings.lib/aliases.zsh— common shell and Git aliases pluskillport.lib/lscolors.zsh— file-listing and completion colours.lib/smartdots.zsh— expands repeated.keystrokes into parent-directory navigation.home/.config/sheldon/plugins.tomlandprompt/spaceship.zsh— Zsh plugin list and the Spaceship prompt loader.home/.config/ghostty/config— GitHub Dark Dimmed theme and FiraCode Nerd Font terminal settings.
home/.config/nvim/init.lua— Neovim Treesitter and rendered-Markdown plugins.home/.config/karabiner/assets/complex_modifications/caps_lock_to_hyper.json— maps Caps Lock to Hyper/Super (Control-Option-Shift-Command) when held and Escape when tapped. Enable Caps Lock to Hyper in Karabiner-Elements after bootstrapping.home/.hammerspoon/init.lua— uses the Hyper modifier supplied by Karabiner: Hyper-1 through 4 open Ghostty, Firefox, Slack, and IntelliJ IDEA; Hyper-R reloads Hammerspoon.
home/.gitconfig— Git defaults, aliases, global ignores, SSH GitHub URL rewriting, and a local identity include.home/.gitignore_global— ignores common editor, environment, certificate, and signing-key files across repositories.home/.gitconfig.local.example— template for the untracked local Git identity.home/.ssh/config.example— template for the untracked SSH GitHub host configuration.home/.codex/config.toml— Codex model, permissions, plugins, trusted projects, and hook state.home/.codex/hooks.jsonandhome/.codex/herdr-agent-state.sh— report Codex session state to Herdr.home/.codex/skills/pine-ship— personal Codex skill for safely preparing and opening Pine pull requests.home/.claude/settings.jsonandhome/.claude/hooks/herdr-agent-state.sh— Claude Code display settings and a Herdr SessionStart hook.home/.config/herdr/config.toml— Herdr terminal theme, UI, status indicators, sound, and toast delivery preferences.
~/.zshlocalfor private shell variables.~/.gitconfig.localfor Git identity.~/.ssh/configand SSH keys for SSH configuration and credentials.- Codex and Claude authentication, session history, caches, and per-machine trust settings.