Personal configuration files for macOS, managed as a Git bare repository.
- Quick start
- Manual setup
- Personalization
- Usage
- Included configurations
- Exporting Homebrew packages
- License
On a fresh Mac, run:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/marcodeltongo/dotfiles/main/install.sh)"This will install Homebrew, clone the dotfiles, install all packages (formulae + casks, including fonts), set up mise tools, and set Fish as the default shell.
After it completes, see Personalization before making your first commit.
If you prefer to set things up yourself:
-
Clone as a bare repository:
git clone --bare https://github.com/marcodeltongo/dotfiles.git $HOME/.dotfiles -
Checkout the dotfiles into your home directory:
git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME checkout
If there are conflicts, back up existing files first, then retry.
-
Suppress untracked file noise:
git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME config --local status.showUntrackedFiles no
-
Install Homebrew packages:
brew install $(cat ~/.config/brew_formulas.txt) brew install --cask $(cat ~/.config/brew_casks.txt)
-
You're all set! The
dotfilesfunction from the Fish config is now available.
If you're forking or cloning these dotfiles, update the following before making any commits.
git config --global user.name "Your Name"
git config --global user.email "you@example.com"Commit and tag signing is enabled by default. GPG Suite is installed via the cask list.
To set it up:
- Open GPG Suite, import or generate your key
- Copy the key ID (the long hex string)
- Tell git about it:
git config --global user.signingKey YOUR_KEY_IDTo disable signing temporarily (e.g. while setting up):
git config --global commit.gpgsign false
git config --global tag.gpgSign falseThe dotfiles function (defined in config.fish) is an alias for
git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME.
Track a new file:
dotfiles add .config/something/config
dotfiles commit -m "Add something config"
dotfiles pushUpdate an existing file:
dotfiles add .gitconfig
dotfiles commit -m "Update git aliases"
dotfiles pushCheck status / pull / log:
dotfiles status
dotfiles pull
dotfiles lo| Tool | Config path |
|---|---|
| Fish | .config/fish/config.fish |
| Git | .gitconfig, .config/git/ignore |
| Ghostty | .config/ghostty/config |
| Starship | .config/starship.toml |
| Helix | .config/helix/config.toml |
| Zed | .config/zed/settings.json |
| mise | .config/mise/config.toml |
| Topgrade | .config/topgrade.toml |
| gh | .config/gh/config.yml |
| gh-dash | .config/gh-dash/config.yml |
| Homebrew | .config/brew_formulas.txt, .config/brew_casks.txt |
| SSH | .ssh/config |
| EditorConfig | .editorconfig |
| Script | Description |
|---|---|
install.sh |
Full macOS bootstrap — run once on a new machine |
scripts/macos-defaults.sh |
Apply sensible macOS system defaults (Finder, Dock, keyboard, etc.) |
To update the package lists after installing something new:
brew leaves --installed-on-request > ~/.config/brew_formulas.txt
brew list --cask > ~/.config/brew_casks.txtThis captures only the packages you explicitly requested, without dependencies.
TL;DR: Feel free to fork and customize!
This is free and unencumbered software released into the public domain. Anyone is free to copy, modify, publish, use, compile, sell, or distribute this software, for any purpose, commercial or non-commercial, and by any means.
For more information, please refer to https://unlicense.org/.