My personal dotfiles and macOS system configuration, managed with dotdrop.
This repository aims to:
- Quickly set up a new development environment
- Maintain consistent configurations across multiple machines
- Automate the installation of essential tools and applications
- Provide a modular and maintainable configuration system
- Use a tiling window manager for efficient window management
Configuration is deployed as symlinks pointing back into this repository, so ~/.zshrc and config/zsh/zshrc are the same file. Edit either one, commit from here — there is no copy step to remember.
- Git
- Homebrew
- Clone the repository:
git clone https://github.com/wilfriedago/dotfiles.git ~/.dotfiles
cd ~/.dotfiles- Install packages and applications:
brew bundle --file Brewfile
just zinit-install- Deploy the dotfiles:
dotdrop install -c dotdrop.config.yml -p default
dotdrop install -c dotdrop.config.yml -p macosInspect conflicts before replacing existing files. If replacement is intentional, use
just install-force <profile> after backing up anything you want to keep.
- Apply macOS system settings:
bash ~/.scripts/macos/settings.shI use Zsh with a deliberately small plugin set. The configuration is modular, with separate files for aliases, completions, functions and settings, plus a plugins directory holding one file per tool. My prompt is Starship.
See config/zsh for the shell configuration and config/starship for the prompt.
For command-line tools I stick to the ones I use daily:
bat- acatclone with syntax highlighting and Git integrationbtop- a terminal resource monitoreza- a modern alternative tolsfd- a simple, fast and user-friendly alternative tofindfzf- a command-line fuzzy finderk9s- a terminal UI for Kubernetesyazi- a terminal file managerzoxide- a smartercd
The complete curated package list lives in Brewfile.
I use Rex as my terminal emulator. It isn't on Homebrew yet, so it's installed by hand from its DMG and is not in the Brewfile; its config lives in config/rex.
My previous terminal, Ghostty, is no longer installed, but its config is kept in config/ghostty.
VSCode is my main editor — simple, yet extensible and powerful. Its extensions are listed in Brewfile, and I keep the setup as lean as I can. I separate work into profiles, each with its own settings, keybindings, extensions and snippets.
Settings, keybindings, snippets and UI customisations live in config/vscode.
A LazyVim-based configuration in config/nvim, used for quick edits and remote work.
My window manager is aerospace — light, very configurable, and it doesn't require disabling System Integrity Protection. Configuration is in config/aerospace.
Because dotfiles are symlinked, changes you make to a deployed config are already changes in this repository:
cd ~/.dotfiles
git status
git commit -am "chore: update configuration"To check that everything on disk still matches the repository:
dotdrop compare -c dotdrop.config.yml -p default
dotdrop compare -c dotdrop.config.yml -p macosRe-run dotdrop install only after adding a new dotfile mapping, or on a new machine.
Validate the repository before committing:
just checkInspiration and code was taken from many sources, including: