Skip to content

Repository files navigation

Angelo's dotfiles

CI

Dotfiles preview

🤗  These dotfiles help me to set up and maintain my macOS or Linux installations. They intend to automate the installation and update process of, well, everything. Feel free to explore, copy and re-use the code to your liking.

Installation

💥  Warning: Please fork and review the code first, before giving these dotfiles a try. In theory, they can be installed on an existing system as well, but a fresh installation is recommended. Use at your own risk.

macOS notes: Make sure to install the Xcode Command Line Tools by running xcode-select --install first, then log into iCloud and the Apple App Store. The installer asks for your admin password once up front — Rosetta, Homebrew casks, FileVault and the /etc/hosts symlink all need it later on.

The following command will install the dotfiles into ~/.dotfiles and runs the installer automatically 🤖:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/finalangel/dotfiles/master/bootstrap)"

🤔  Yeah that's it, really, I think...

The dot command

👉  Once installed, use the following command to manage the dotfiles:

$ dotfiles --help
Usage: dotfiles [options]

Options:
  -e, --edit     Edit dotfiles
  -g, --go       Go to dotfiles directory
  -h, --help     Show help
  -i, --install  Runs installer
  -u, --update   Runs updater

dotfiles -u is the one that matters day to day: it pulls this repository, then runs every topic's update script — Homebrew, npm globals, uv tools, tmux plugins, fonts, the Dock layout and macOS software updates.

What's included

Except for bin/, scripts/ and utils/, every top-level folder is a self-contained topic providing an install and update script. You can easily disable individual topics by commenting the lines in scripts/. On top of that:

  • every aliases.zsh, paths.zsh and functions.zsh file in a topic is automatically loaded
  • every .symlink file in a topic will be mapped to ~/.[filename]
  • everything in the bin/ folder gets automatically added to your $PATH

The following package flavours are installed:

A few things are kept in sync across machines rather than installed:

  • Claude config (~/.claude, ~/.agents) lives in iCloud and is symlinked into place, so settings, memory, skills and hooks follow both machines
  • Private files (secrets, .pypirc, tmuxinator projects) are linked out of iCloud too, which keeps them out of this public repository
  • The Dock is declared in macos/Dockfile and reapplied on every update; macos/dock-dump regenerates it from the current Dock
  • Dark mode re-themes a running tmux server automatically through a dark-notify launch agent

Contributions

🐛  Feel free to send me pull requests if something is misconfigured or could be enhanced upon. These are very personal, but if they work for others as well, the more, the merrier.

scripts/lint syntax-checks every bash, zsh, ruby and python file in the repository and runs on each push through GitHub Actions — the badge at the top reflects it. Run it locally before opening a pull request:

./scripts/lint

I generally still want to improve on:

  • Adding real tests beyond linting would be nice :)

Credits

❤️  Many thanks to the dotfiles community and the excellent work from dotphiles, holman, mathiasbynens, pchampio and webpro. This work wouldn't be possible without them.

About

My personal dotfiles for macOS 👨‍💻

Resources

Stars

18 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages