{"id":46311837,"url":"https://github.com/martimlobao/dotfiles","last_synced_at":"2026-03-04T13:25:41.530Z","repository":{"id":167552892,"uuid":"176898993","full_name":"martimlobao/dotfiles","owner":"martimlobao","description":"🛠 My dotfiles, optimized for macOS","archived":false,"fork":false,"pushed_at":"2026-02-17T02:15:35.000Z","size":1745,"stargazers_count":5,"open_issues_count":3,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-02-17T02:55:29.993Z","etag":null,"topics":["bash","dotfiles","macos"],"latest_commit_sha":null,"homepage":"https://git.io/dotinstall","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/martimlobao.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2019-03-21T08:10:27.000Z","updated_at":"2026-02-17T02:15:39.000Z","dependencies_parsed_at":"2024-04-15T15:29:26.561Z","dependency_job_id":"923ac6cc-9b44-4d07-834d-47f320ff478d","html_url":"https://github.com/martimlobao/dotfiles","commit_stats":null,"previous_names":["martimlobao/dotfiles"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/martimlobao/dotfiles","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/martimlobao%2Fdotfiles","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/martimlobao%2Fdotfiles/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/martimlobao%2Fdotfiles/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/martimlobao%2Fdotfiles/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/martimlobao","download_url":"https://codeload.github.com/martimlobao/dotfiles/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/martimlobao%2Fdotfiles/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30081277,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-04T13:22:36.021Z","status":"ssl_error","status_checked_at":"2026-03-04T13:20:45.750Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bash","dotfiles","macos"],"created_at":"2026-03-04T13:25:40.856Z","updated_at":"2026-03-04T13:25:41.513Z","avatar_url":"https://github.com/martimlobao.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Martim's dotfiles\n\n![Screenshot of my shell prompt](static/screenshot.png)\n\nThis repository contains my personal dotfiles, as well as several scripts to install applications\nand configure settings. Although the shell configuration settings should (mostly) work on any\nUnix-based system, most of these scripts were only designed to run on macOS and likely won't run at\nall on any other OS.\n\nHere's a short description of each script in this repository:\n\n- [`bootstrap.sh`](bootstrap.sh) bootstrap install everything, including cloning this repository\n  (callable using `bootstrap`)\n- [`run.sh`](run.sh) install Homebrew and run all the following scripts\n- [`dotsync.sh`](scripts/dotsync.sh) sync and symlink dotfiles from this repository to your home\n  directory\n- [`macos.sh`](scripts/macos.sh) configure several macOS settings\n- [`aerials.py`](scripts/aerials.py) download macOS Aerial live wallpapers (callable using\n  `aerials`)\n- [`chshell.sh`](scripts/chshell.sh) change shell to zsh\n- [`app.py`](scripts/app.py) CLI tool to manage and sync fonts, tools, and apps using Homebrew,\n  [`uv`](https://docs.astral.sh/uv/), and the Mac App Store, listed in[`apps.toml`](apps.toml)\n- [`dock.sh`](scripts/dock.sh) configure macOS dock\n- [`code.sh`](scripts/code.sh) install Cursor extensions\n- [`local.sh`](scripts/local.sh) final local settings, like configuring git user details and\n  registering apps using keys stored in 1Password\n- [`bash_traceback.sh`](bash_traceback.sh) helper script used by other scripts to print a more\n  helpful traceback on failure (does nothing by itself)\n\nAll these scripts are idempotent, meaning they can be run multiple times without issue.\n\n**Warning:** Running these dotfiles blindly will overwrite settings and install apps and fonts that\nyou probably don't need. Use at your own risk!\n\n## Installation\n\nOn a fresh (or not so fresh) macOS install, run the following command to install Homebrew and run\nall scripts:\n\n```bash\nbash \u003c(curl -s https://raw.githubusercontent.com/martimlobao/dotfiles/main/bootstrap.sh)\n```\n\nFor my own convenience, I have a shorter `https://dot.lobao.io` URL that redirects to the same\nscript. However, you probably shouldn't run arbitrary code from a stranger on the internet, so\nunless you're me or you fully trust me, it might be best to use the longer version.\n\nThe easier-to-remember command is:\n\n```bash\nbash \u003c(curl -L dot.lobao.io)\n```\n\nTo run the script without interactive prompts, just add `-y` to the end:\n\n```bash\nbash \u003c(curl -sL https://dot.lobao.io) -y\n```\n\n### 1Password Requirements\n\n1Password is required to store secrets used by these scripts. These include but are not limited to:\n\n- `op://Private/GitHub/name` to set your git `user.name`\n- `op://Private/GitHub/email` and `op://Private/GitHub/username` to configure git and push to\n  GitHub\n- `op://Private/GitHub SSH Commit Signing Key/public key` to configure SSH commit signing\n- `op://Private/GitHub SSH Authentication Key/public key` to configure SSH authentication\n- `op://Private/iStat Menus 6/registered email` and `op://Private/iStat Menus 6/license key` to\n  register iStat Menus 6\n- `op://Private/Charles/registered name` and `op://Private/Charles/license key` to register Charles\n- SSH keys for AWS\n\n## Features\n\n- Symlink dotfiles from this repository to your home directory\n- Install apps, fonts, and tools using Homebrew, [`uv`](https://docs.astral.sh/uv/), and the Mac\n  App Store\n- Set up straightforward Python configuration using `uv`\n- Set up macOS Dock with most used apps\n- Register and configure iStat Menus 6, Charles, 1Password, AWS CLI, and GitHub CLI\n- TouchID for sudo\n- Configure git user details\n- Configure SSH client\n- Configure GPG client\n\n## Managing Apps with `app`\n\nUse the `app` CLI (backed by [`scripts/app.py`](scripts/app.py)) to keep [`apps.toml`](apps.toml)\nup to date:\n\n```bash\napp add \u003capp\u003e \u003csource\u003e [--group \u003cgroup\u003e] [--description \u003ctext\u003e]\napp remove \u003capp\u003e\napp sync [--yes] [--no-cask] [--no-formula] [--no-uv] [--no-mas]\n```\n\nBy default, adding an app will also install it via the chosen source, and removing an app will\nuninstall it. Pass `--no-install` to skip those steps and only update `apps.toml`.\n\n## Aerial Live Wallpapers\n\nThis repository contains a [script](scripts/aerials.py) that downloads the wallpapers from Apple's\nservers and caches them to your local machine. It can also delete existing wallpapers and list all\navailable wallpapers.\n\nTo use the script, run `uv run scripts/aerials.py` or simply `./scripts/aerials.py` (requires\ninstalling [`uv`](https://docs.astral.sh/uv/getting-started/installation/)).\n\nYou can even run the script directly from GitHub using `uv`:\n\n```bash\ncurl -LsSf https://astral.sh/uv/install.sh | sh  # Install uv if not already installed\nuv run https://raw.githubusercontent.com/martimlobao/dotfiles/refs/heads/main/scripts/aerials.py\n```\n\n![Aerial Live Wallpapers](static/aerials.png)\n\n## Thanks and Inspiration\n\nSeveral people and repositories have contributed to or been a source of inspiration for this\nrepository:\n\n- [@mathiasbynens](https://mathiasbynens.be/)/[dotfiles](https://github.com/mathiasbynens/dotfiles),\n  off of which this repository was initially based\n- [@kevinsuttle](https://kevinsuttle.com/)/[macOS-Defaults](https://github.com/kevinSuttle/macOS-Defaults)\n- [@ryanpavlick](https://github.com/rpavlick)/[add_to_dock](https://github.com/rpavlick/add_to_dock)\n- [@mikeswanson](https://github.com/mikeswanson)/[WallGet](https://github.com/mikeswanson/WallGet)\n- [@lejacobroy](https://github.com/lejacobroy)/[aerials-downloader](https://github.com/lejacobroy/aerials-downloader)\n- [@br3ndonland](https://github.com/br3ndonland)/[dotfiles](https://github.com/br3ndonland/dotfiles)\n- [@MichaelAquilina](https://github.com/MichaelAquilina)/[zsh-auto-notify](https://github.com/MichaelAquilina/zsh-auto-notify)\n- [@Niraj-Kamdar](https://github.com/Niraj-Kamdar)/[macos-the-long-running-task-notifier](https://dev.to/kniraj/macos-the-long-running-task-notifier-35o1)\n- [@ikuwow](https://github.com/ikuwow)/[dotfiles](https://github.com/ikuwow/dotfiles)\n- [@kennethreitz](https://www.kennethreitz.org/)/[dotfiles](https://github.com/kennethreitz/dotfiles)\n- [@br3ndonland](https://github.com/br3ndonland)/[dotfiles](https://github.com/br3ndonland/dotfiles)\n- [@pablopunk](https://github.com/pablopunk)/[dotfiles](https://github.com/pablopunk/dotfiles)\n- [@demophoon](https://github.com/demophoon)/[dotfiles](https://github.com/demophoon/dotfiles)\n- [@lupin3000](https://github.com/lupin3000)/[macOS-defaults](https://lupin3000.github.io/macOS/defaults/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmartimlobao%2Fdotfiles","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmartimlobao%2Fdotfiles","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmartimlobao%2Fdotfiles/lists"}