This repository contains my personal dotfiles, as well as several scripts to install applications and configure settings. Although the shell configuration settings should (mostly) work on any Unix-based system, most of these scripts were only designed to run on macOS and likely won't run at all on any other OS.
Here's a short description of each script in this repository:
bootstrap.shbootstrap install everything, including cloning this repository (callable usingbootstrap)run.shinstall Homebrew and run all the following scriptsdotsync.shsync and symlink dotfiles from this repository to your home directorymacos.shconfigure several macOS settingsaerials.pydownload macOS Aerial live wallpapers (callable usingaerials)install.shinstall fonts, tools, and apps using Homebrew,uv, and the Mac App Store (callable usingsyncapps)app.pyCLI tool to manage and install applications listed inapps.toml(callable usingapp)dock.shconfigure macOS dockcode.shinstall Cursor extensionslocal.shfinal local settings, like configuring git user details and registering apps using keys stored in 1Passwordbash_traceback.shhelper script used by other scripts to print a more helpful traceback on failure (does nothing by itself)
All these scripts are idempotent, meaning they can be run multiple times without issue.
Warning: Running these dotfiles blindly will overwrite settings and install apps and fonts that you probably don't need. Use at your own risk!
On a fresh (or not so fresh) macOS install, run the following command to install Homebrew and run all scripts:
bash <(curl -s https://raw.githubusercontent.com/martimlobao/dotfiles/main/bootstrap.sh)For my own convenience, I have a shorter https://dot.lobao.io URL that redirects to the same
script. However, you probably shouldn't run arbitrary code from a stranger on the internet, so
unless you're me or you fully trust me, it might be best to use the longer version.
The easier-to-remember command is:
bash <(curl -L dot.lobao.io)To run the script without interactive prompts, just add -y to the end:
bash <(curl -sL https://dot.lobao.io) -y1Password is required to store secrets used by these scripts. These include but are not limited to:
op://Private/GitHub/nameto set your gituser.nameop://Private/GitHub/emailandop://Private/GitHub/usernameto configure git and push to Githubop://Private/GitHub SSH Commit Signing Key/public keyto configure SSH commit signingop://Private/iStat Menus 6/registered emailandop://Private/iStat Menus 6/license keyto register iStat Menus 6op://Private/Charles/registered nameandop://Private/Charles/license keyto register Charles- SSH keys for AWS
- Symlink dotfiles from this repository to your home directory
- Install apps, fonts, and tools using Homebrew,
uv, and the Mac App Store - Set up straightforward Python configuration using
uv - Set up macOS Dock with most used apps
- Register and configure iStat Menus 6, Charles, 1Password, AWS CLI, and GitHub CLI
- TouchID for sudo
- Configure git user details
- Configure SSH client
- Configure GPG client
Use the app CLI (backed by scripts/app.py) to keep apps.toml
up to date:
app add <app> <source> [--group <group>] [--description <text>]
app remove <app>By default, adding an app will also install it via the chosen source, and removing an app will
uninstall it. Pass --no-install to skip those steps and only update apps.toml.
This repository contains a script that downloads the wallpapers from Apple's servers and caches them to your local machine. It can also delete existing wallpapers and list all available wallpapers.
To use the script, run uv run scripts/aerials.py or simply ./scripts/aerials.py (requires
installing uv).
You can even run the script directly from GitHub using uv:
curl -LsSf https://astral.sh/uv/install.sh | sh # Install uv if not already installed
uv run https://raw.githubusercontent.com/martimlobao/dotfiles/refs/heads/main/scripts/aerials.pySeveral people and repositories have contributed to or been a source of inspiration for this repository:
- @mathiasbyens/dotfiles, off of which this repository was initially based
- @kevinsuttle/macOS-Defaults
- @ryanpavlick/add_to_dock
- @mikeswanson/WallGet
- @lejacobroy/aerials-downloader
- @br3ndonland/dotfiles
- @MichaelAquilina/zsh-auto-notify
- @Niraj-Kamdar/macos-the-long-running-task-notifier
- @ikuwow/dotfiles
- @kennethreitz/dotfiles
- @br3ndonland/dotfiles
- @pablopunk/dotfiles
- @demophoon/dotfiles
- @lupin3000/macOS-defaults