Skip to content

Instantly share code, notes, and snippets.

@leogdion
Last active March 2, 2026 18:59
Show Gist options
  • Select an option

  • Save leogdion/ade89af20a7621a6a3c24d61af87ac3a to your computer and use it in GitHub Desktop.

Select an option

Save leogdion/ade89af20a7621a6a3c24d61af87ac3a to your computer and use it in GitHub Desktop.
MacBook Air dev environment snapshot
# Created by https://www.toptal.com/developers/gitignore/api/macos
# Edit at https://www.toptal.com/developers/gitignore?templates=macos
### macOS ###
# General
.DS_Store
.AppleDouble
.LSOverride
# Icon must end with two \r
Icon
# Thumbnails
._*
# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent
# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk
### macOS Patch ###
# iCloud generated files
*.icloud
# End of https://www.toptal.com/developers/gitignore/api/macos

MacBook Air 2026 — Pre-Sale Snapshot

This repo captures the state of my MacBook Air before selling it, so I can restore my setup on a new laptop.

What's Included

File Description
Brewfile All Homebrew packages, casks, and taps (full dump)
Brewfile.leaves Intentionally installed formulae only, excluding transitive dependencies
mise-globals.toml Global dev tool runtimes to install via mise (node, ruby, python, etc.)
Applications.md Curated app list with install source (Homebrew, App Store, or manual)
manual-installs.md Apps not covered by Homebrew with descriptions and download links
v22.17.1.txt Global npm packages for Node v22.17.1
pip-global.txt Global Python packages installed via pip

Restoring on a New Machine

1. Homebrew

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew bundle --file=Brewfile.leaves

2. Dev tools (mise)

mise install

Copy mise-globals.toml to ~/.config/mise/config.toml first.

3. Python packages

pip install -r pip-global.txt

4. Applications

See Applications.md for the full app list with install sources. For apps requiring manual installation, see manual-installs.md.

Applications

App Source
AdGuard for Safari App Store
AirBuddy Homebrew
Alfred 5 Homebrew
Amphetamine App Store
Awesome Screenshot & Recorder App Store
balenaEtcher Manual
Bear App Store
Bento|Craft Manual
Buffer App Store
Claude Manual
Core Data Lab App Store
Cursor Homebrew
DaisyDisk Homebrew
Descript Homebrew
DevCleaner App Store
Developer App Store
Discord Homebrew
Docker Homebrew
Firefox Homebrew
Forecast Manual
Google Chrome Canary Homebrew
Icon Composer Manual
Kaleidoscope Homebrew
Keynote Creator Studio App Store
LaunchBuddy App Store
Logic Pro Creator Studio App Store
MainStage Creator Studio App Store
Microsoft Teams Homebrew
MonthBar App Store
Motion Creator Studio App Store
Nova Homebrew
Numbers Creator Studio App Store
Pages Creator Studio App Store
Pixelmator Pro Creator Studio App Store
Postico 2 Homebrew
Proxyman Homebrew
QReate App Store
RocketSim App Store
Sketch App Store
Slack App Store
Spark App Store
Streaks App Store
Tabs to Links App Store
Taska App Store
TestFlight App Store
TranslateKit App Store
Transmit Homebrew
TripMode Homebrew
Visual Studio Code Homebrew
Webex Manual
WhatsApp App Store
Windows App App Store
Wipr App Store
Xcode Manual
zoom.us Homebrew
AdGuard for Safari.app
AirBuddy.app
Alfred 5.app
Amphetamine.app
Apidog.app
Awesome Screenshot & Recorder.app
balenaEtcher.app
Bear.app
Bento|Craft.app
Buffer.app
ChatGPT.app
Claude.app
Compressor Creator Studio.app
Core Data Lab.app
Cursor.app
DaisyDisk.app
Dark Noise.app
dataFude for Simulator.app
DB Browser for SQLite.app
Descript.app
DevCleaner.app
Developer.app
Discord.app
Docker.app
Final Cut Pro Creator Studio.app
Firefox.app
Focus.app
Forecast.app
Google Chrome Canary.app
Ice Cubes.app
Icon Composer.app
IINA.app
Kaleidoscope.app
Keynote Creator Studio.app
Keynote.app
LaunchBuddy.app
Logic Pro Creator Studio.app
MainStage Creator Studio.app
Microsoft Teams.app
MonthBar.app
Motion Creator Studio.app
Movist Pro.app
Nova.app
Numbers Creator Studio.app
Numbers.app
OBS.app
Pages Creator Studio.app
Pages.app
PiP.app
Pixelmator Pro Creator Studio.app
Pixelmator Pro.app
Plinky Mini.app
Postico 2.app
Proxyman.app
QReate.app
RocketSim.app
Safari.app
SF Symbols.app
Sketch.app
Slack.app
Spark.app
Streaks.app
Tabs to Links.app
Taska.app
TeamViewer.app
TestFlight.app
TranslateKit.app
Transmit.app
TripMode.app
Utilities
Visual Studio Code.app
Watts.app
Webex.app
WhatsApp.app
Windows App.app
Wipr.app
Xcode.app
zoom.us.app
tap "cirruslabs/cli"
tap "cloudflare/cloudflare"
tap "heroku/brew"
tap "homebrew/bundle"
tap "skiptools/skip"
tap "stripe/stripe-cli"
tap "tuist/tuist"
tap "zmwangx/npm-noob"
brew "webp"
brew "aom"
brew "awscli"
brew "cmake"
brew "cocoapods"
brew "cpulimit"
brew "docker", link: false
brew "unbound"
brew "gnutls"
brew "libass"
brew "pango"
brew "tesseract"
brew "ffmpeg"
brew "flyctl"
brew "fswatch"
brew "gh"
brew "git-filter-repo"
brew "git-lfs"
brew "git-subrepo"
brew "gnupg"
brew "grip"
brew "icu4c@75"
brew "imagemagick"
brew "ios-deploy"
brew "jq"
brew "libpq", link: true
brew "llvm"
brew "macos-trash", link: true
brew "mas"
brew "mint"
brew "mkcert"
brew "node"
brew "netlify-cli"
brew "ninja"
brew "nmap"
brew "node@22"
brew "nvm"
brew "openapi-generator"
brew "pandoc"
brew "parallel"
brew "pinentry-mac"
brew "python-markdown"
brew "python@3.11"
brew "rbenv"
brew "sourcery"
brew "svgo"
brew "swift-protobuf"
brew "tmux"
brew "tree"
brew "uv"
brew "vapor"
brew "vgmstream"
brew "virtualenv"
brew "weasyprint"
brew "wget"
brew "xcodegen"
brew "yq"
brew "yt-dlp"
brew "cirruslabs/cli/tart"
brew "heroku/brew/heroku"
brew "stripe/stripe-cli/stripe"
brew "tuist/tuist/tuist@4.47.0", link: false
brew "tuist/tuist/tuist@4.83.0", link: false
brew "zmwangx/npm-noob/noob"
cask "1password"
cask "airbuddy"
cask "alfred"
cask "amitv87-pip"
cask "android-commandlinetools"
cask "android-platform-tools"
cask "android-studio"
cask "apidog"
cask "claude-code"
cask "cursor"
cask "daisydisk"
cask "db-browser-for-sqlite"
cask "descript"
cask "discord"
cask "docker-desktop"
cask "firefox"
cask "google-chrome"
cask "google-chrome@canary"
cask "iina"
cask "kaleidoscope"
cask "microsoft-auto-update"
cask "microsoft-teams"
cask "movist-pro"
cask "ngrok"
cask "nova"
cask "obs"
cask "postico"
cask "proxyman"
cask "rapidapi"
cask "sf-symbols"
cask "skiptools/skip/skip"
cask "teamviewer"
cask "transmit"
cask "tripmode"
cask "tuist"
cask "visual-studio-code"
cask "zoom"
mas "AdGuard for Safari", id: 1440147259
mas "Amphetamine", id: 937984704
mas "Awesome Screenshot & Recorder", id: 1531282066
mas "Bear", id: 1091189122
mas "Buffer", id: 1474298973
mas "Compressor", id: 6746516157
mas "Core Data Lab", id: 1460684638
mas "Dark Noise", id: 1465439395
mas "dataFude for Simulator", id: 6444231603
mas "DevCleaner", id: 1388020431
mas "Developer", id: 640199958
mas "Final Cut Pro", id: 1631624924
mas "Focus", id: 777233759
mas "Ice Cubes", id: 6444915884
mas "Keynote", id: 361285480
mas "Keynote", id: 409183694
mas "LaunchBuddy", id: 1615169630
mas "Logic Pro", id: 1615087040
mas "MainStage", id: 6746637089
mas "MonthBar", id: 0
mas "Motion", id: 6746637149
mas "Numbers", id: 361304891
mas "Numbers", id: 409203825
mas "Pages", id: 361309726
mas "Pages", id: 409201541
mas "Pixelmator Pro", id: 6746662575
mas "Pixelmator Pro", id: 1289583905
mas "Plinky Mini", id: 6473683112
mas "QReate", id: 6446048195
mas "RocketSim", id: 1504940162
mas "Sketch", id: 1667260533
mas "Slack", id: 803453959
mas "Spark", id: 1176895641
mas "Streaks", id: 963034692
mas "Tabs to Links", id: 1451408472
mas "Taska", id: 6741809383
mas "TestFlight", id: 899247664
mas "TranslateKit", id: 6476773066
mas "WhatsApp", id: 310633997
mas "Windows App", id: 1295203466
mas "Wipr", id: 1320666476
vscode "42crunch.vscode-openapi"
vscode "antfu.vite"
vscode "anthropic.claude-code"
vscode "ban.spellright"
vscode "bradlc.vscode-tailwindcss"
vscode "christian-kohler.npm-intellisense"
vscode "csstools.postcss"
vscode "davidanson.vscode-markdownlint"
vscode "dbaeumer.vscode-eslint"
vscode "esbenp.prettier-vscode"
vscode "firefox-devtools.vscode-firefox-debug"
vscode "mermade.openapi-lint"
vscode "mikestead.dotenv"
vscode "ms-azuretools.vscode-containers"
vscode "ms-azuretools.vscode-docker"
vscode "ms-toolsai.jupyter"
vscode "ms-toolsai.jupyter-keymap"
vscode "ms-toolsai.jupyter-renderers"
vscode "ms-toolsai.vscode-jupyter-cell-tags"
vscode "ms-toolsai.vscode-jupyter-slideshow"
vscode "ms-vscode-remote.remote-containers"
vscode "ms-vscode.makefile-tools"
vscode "octref.vetur"
vscode "okitavera.vscode-nunjucks-formatter"
vscode "pflannery.vscode-versionlens"
vscode "redhat.vscode-yaml"
vscode "ronnidc.nunjucks"
vscode "sdras.vue-vscode-snippets"
vscode "streetsidesoftware.code-spell-checker"
vscode "tyriar.lorem-ipsum"
vscode "vitest.explorer"
vscode "vue.volar"
vscode "wayou.vscode-todo-highlight"
vscode "zaferayan.lorem-picsum"
uv "specify-cli"
tap "heroku/brew"
tap "homebrew/bundle"
tap "tuist/tuist"
brew "ffmpeg"
brew "flyctl"
brew "gh"
brew "git-filter-repo"
brew "git-lfs"
brew "git-subrepo"
brew "jq"
brew "libpq", link: true
brew "macos-trash", link: true
brew "mas"
brew "mise"
brew "openapi-generator"
brew "parallel"
brew "pinentry-mac"
brew "tmux"
brew "tree"
brew "yq"
brew "yt-dlp"
brew "heroku/brew/heroku"
cask "airbuddy"
cask "alfred"
cask "claude-code"
cask "cursor"
cask "daisydisk"
cask "descript"
cask "discord"
cask "docker-desktop"
cask "firefox"
cask "google-chrome@canary"
cask "kaleidoscope"
cask "microsoft-auto-update"
cask "microsoft-teams"
cask "nova"
cask "postico"
cask "proxyman"
cask "transmit"
cask "tripmode"
cask "tuist"
cask "visual-studio-code"
cask "zoom"
mas "AdGuard for Safari", id: 1440147259
mas "Amphetamine", id: 937984704
mas "Awesome Screenshot & Recorder", id: 1531282066
mas "Bear", id: 1091189122
mas "Buffer", id: 1474298973
mas "Core Data Lab", id: 1460684638
mas "DevCleaner", id: 1388020431
mas "Developer", id: 640199958
mas "Keynote", id: 361285480
mas "LaunchBuddy", id: 1615169630
mas "Logic Pro", id: 1615087040
mas "MainStage", id: 6746637089
mas "MonthBar", id: 0
mas "Motion", id: 6746637149
mas "Numbers", id: 361304891
mas "Pages", id: 361309726
mas "Pixelmator Pro", id: 6746662575
mas "QReate", id: 6446048195
mas "RocketSim", id: 1504940162
mas "Sketch", id: 1667260533
mas "Slack", id: 803453959
mas "Spark", id: 1176895641
mas "Streaks", id: 963034692
mas "Tabs to Links", id: 1451408472
mas "Taska", id: 6741809383
mas "TestFlight", id: 899247664
mas "TranslateKit", id: 6476773066
mas "WhatsApp", id: 310633997
mas "Windows App", id: 1295203466
mas "Wipr", id: 1320666476

CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

Purpose

This repo is a pre-sale snapshot of a MacBook Air development environment, designed for full restoration on a new machine.

Restoration Commands

Homebrew packages

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew bundle --file=Brewfile.leaves

Dev tools (mise)

Copy mise-globals.toml to ~/.config/mise/config.toml, then:

mise install

Python global packages

pip install -r pip-global.txt

Manual apps

See manual-installs.md for apps not covered by Homebrew, with download links.

What Each File Contains

File Description
Brewfile Full Homebrew dump (includes transitive dependencies)
Brewfile.leaves Intentionally installed formulae only (brew leaves) — use this for restoration
mise-globals.toml Global dev tool runtimes (node, ruby, python, cocoapods, mkcert) — replaces nvm, rbenv, virtualenv
Applications.md Curated app list with install source per app
manual-installs.md Apps not in Homebrew, with descriptions and download links
v22.17.1.txt Global npm packages for Node v22.17.1
pip-global.txt Global Python packages

Manual Installs

Apps present on the old machine that are not covered by Brewfile and must be installed manually.

App Description Install
balenaEtcher Flash OS images to USB drives and SD cards etcher.balena.io
Bento|Craft App Store marketing assets and screenshot creator App Store
Claude Anthropic Claude desktop app claude.ai
Forecast Podcast MP3 post-production and chapter encoder by Marco Arment overcast.fm/forecast
Icon Composer Apple tool for creating layered app icons (requires macOS 15.3+) App Store
Webex Cisco Webex video conferencing webex.com
Xcode Apple IDE for iOS and macOS development App Store or developer.apple.com
# Global mise tools (~/.config/mise/config.toml)
# Install with: mise install
# These replace: nvm, node@22, rbenv, virtualenv, mkcert (brew)
[tools]
node = "22"
ruby = "latest"
python = "latest"
mkcert = "latest" # via aqua backend: mise x aqua:FiloSottile/mkcert
cocoapods = "latest"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment