This repository contains config files to set up my systems and keep them in sync.
-
Install homebrew
-
brew install rcm topgrade -
git clone git@github.com:gildesmarais/dotfiles.git ~/.dotfiles && cd ~/.dotfiles && rcup -v -
topgrade -
cd ~/.dotfiles && brew bundle -
Setup vim:
mkdir -p ~/.vim/backups mkdir -p ~/.vim/swaps mkdir -p ~/.vim/undo
| Script | What it does | Prerequisites |
|---|---|---|
./scripts/macos-defaults-apply |
Guided wizard that applies my preferred macOS defaults and prompts for the manual tweaks listed below. | macOS, sudo access for protected settings. |
./scripts/wiki |
fzf-powered browser for the local wiki directory that opens files in your preferred editor. |
fzf, git, rg, optional VISUAL/EDITOR or WIKI_* overrides. |
./scripts/download-audio |
Fetches remote audio (e.g., YouTube URLs) and normalises them via the process-audio pipeline for library-ready files. |
aria2, ffmpeg, yt-dlp; installs live in the Brewfile. |
./scripts/skill |
Links project .codex/skills entries to the canonical ~/.dotfiles/skills store and can promote local skills. |
Ruby 2.6+, optional git for auto-detecting the project root. |
./scripts/skill manages per-project .codex/skills symlinks backed by ~/.dotfiles/skills.
Examples:
skill list
skill status
skill link ruby-dev
skill link --all
skill unlink ruby-dev
skill clean
skill doctor
skill adopt ../my-skill
skill promote my-skill
skill rename ruby-dev rubyUse skill --project /path/to/project ... to target a project other than the current git root or working directory.
adopt moves an arbitrary local skill directory into ~/.dotfiles/skills and links it into the current project. rename renames the canonical stored skill and updates this project's symlink when it points to the old name.
doctor reports broken links, mismatched targets, local copies still sitting in .codex/skills, and stored skills not linked into the current project.
Implementation lives in skill/src, with characterization tests in skill/test, and scripts/skill stays as the thin executable entrypoint.
Run the following script to apply system-wide defaults:
./scripts/macos-defaults-applyFor settings that cannot be scripted, follow these manual steps:
- Apple Watch Unlock: Enable via
System Settings>Touch ID & Password. - Three Finger Swipe: Verify in
System Settings>Trackpad>More Gestures. - Pointer Outline Color: Configure in
System Settings>Accessibility. - Screenshot Location: Open the Screenshot App, navigate to
Options, and set your preferred save location. - Sudo with Touch ID:
- Open the sudoers file for editing:
sudo vim /etc/pam.d/sudo - Add the following line at the top of the file:
auth sufficient pam_tid.so
- Open the sudoers file for editing:
After symlinking the Brewfile, install the specified applications with:
brew bundle install --globalThis step pulls down the command-line helpers the shell expects to find:
lsdfor thels/llaliases defined inzshrc.zsh-autosuggestionsto enable inline completions when the plugin is available.
git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-$HOME}/.zprezto"mkdir -p ~/.zprezto-contrib- open a fresh
zshshell
Key repeat on hold is enabled via the macos-defaults script.
brew install duti yq
curl "https://raw.githubusercontent.com/github/linguist/master/lib/linguist/languages.yml" \
| yq -r "to_entries | (map(.value.extensions) | flatten) - [null] | unique | .[]" \
| xargs -L 1 -I "{}" duti -s com.microsoft.VSCode {} allFind other editors by lsappinfo | grep 'bundleID="' | cut -d'"' -f2 | sort.
Source: https://alexpeattie.com/blog/associate-source-code-files-with-editor-in-macos-using-duti/