Настройка нового Mac для разработки одной командой.
Когда мне выдали рабочий Mac, я потратил целый день, чтобы настроить всё под себя: Homebrew, терминал, шрифты, горячие клавиши, системные настройки, инструменты для работы. День. На то, что по сути сводится к набору одних и тех же команд.
Недавно я купил Mac mini — и понял, что всю эту настройку придётся делать заново. По памяти, гугля забытые шаги, вспоминая, какие именно пакеты я ставил и какие твики macOS включал. Перспектива повторять этот день меня не обрадовала.
Поэтому я собрал всё в один скрипт. Теперь настройка чистого мака — это одна команда и пара минут ожидания, а не день кликанья по меню. И когда появится следующий мак, я просто запущу это снова.
Бонусом написал второй скрипт — для отката, на случай если захочется вернуть систему к исходному состоянию.
Два скрипта:
setup_mac.sh— настраивает чистый Mac с нуляuninstall_mac.sh— откатывает изменения обратно
Оба идемпотентны: можно запускать повторно, уже сделанное пропускается. Оба интерактивные — выбор компонентов через меню со стрелками и чекбоксами, ничего не ставится без твоего ведома.
git clone https://github.com/<USERNAME>/mac-setup.git
cd mac-setup
chmod +x setup_mac.sh
./setup_mac.shСкрипт спросит пароль один раз в начале, дальше работает сам. Единственное, что потребует твоего участия по ходу — добавить SSH-ключ на GitHub (откроется страница, ключ уже будет в буфере обмена).
Запускай файл напрямую (
./setup_mac.sh), а не черезcurl | bash— интерактивному меню нужен настоящий терминал для чтения стрелок.
Базовая система
- Xcode Command Line Tools, Homebrew (с правильным путём для Apple Silicon и Intel)
- JetBrains Mono Nerd Font — шрифт с глифами для иконок в терминале и Neovim
CLI-инструменты
- База:
git,gh,tmux,btop,neovim,wget,curl,jq - Современные альтернативы:
ripgrep,fd,eza,bat,fzf,zoxide - SRE-набор:
kubectl,k9s,kubectx,helm,stern
Языки и рантаймы
go,python,nvm(Node ставится через nvm, чтобы не конфликтовать)
Swift (по выбору)
swiftlint,swiftformat,xcbeautify
Docker (по выбору)
- Colima + Docker CLI (лёгкий, без GUI) или Docker Desktop
Терминал
- Oh My Zsh + Powerlevel10k, плагины автодополнения и подсветки
- Современные алиасы (
ls→ eza,cat→ bat и т.д.), интеграция zoxide и fzf
Безопасность и Git
- SSH-ключ ed25519 с добавлением в Keychain
- Подпись коммитов через SSH (
allowed_signersнастраивается автоматически — без негоgit log --show-signatureругается) - Touch ID для
sudoв терминале (черезsudo_local, переживает обновления macOS; для tmux подключаетсяpam-reattach)
GUI-приложения (выбор в меню)
iTerm2, VS Code, Spotify, Rectangle, Google Chrome, Raycast, Stats, Telegram, Maccy, The Unarchiver, MonitorControl, DockDoor, Caffeine, AppCleaner, Bruno — каждое можно включить или выключить.
Системные твики macOS
- Finder: показ скрытых файлов, расширений, путь-бар, список по умолчанию
- Отключение автозамены текста, быстрый повтор клавиш, мгновенное автоскрытие Dock
- Скриншоты в PNG без тени, сохранение в
~/Pictures/Screenshots - Блокировка
.DS_Storeна сетевых и USB-накопителях
Структура папок
Создаёт систему хранения, организованную по источнику файла, а не по абстрактным категориям:
~/Documents/
00_Inbox/ свалка по умолчанию для неразобранного
Personal/ личные документы (IDs, Medical)
Finances/ счета, налоги, выписки
Work/ рабочие бумаги, договоры
Business/ своё дело
_Archive/ законченное
~/Pictures/
00_Inbox/
Screenshots/ сюда же сохраняются скриншоты
Wallpapers/
_Archive/
~/Developer/
00_Inbox/ быстрый клон или эксперимент
_Archive/ замороженные проекты
README.md памятка о принципе
Префиксы 00_ и _ держат Inbox сверху, Archive снизу при сортировке. Папки проектов не дробятся — папка проекта сама по себе единица.
./uninstall_mac.shВозвращает систему к состоянию до setup. В меню выбираешь, что именно откатить: приложения, CLI, Swift, Docker, Deck, системные твики, конфигурацию zsh, Touch ID, шрифт.
Откат сделан осторожно:
- Файлы не теряются. Папки удаляются только пустые (через
rmdir, который физически не трогает непустые) — твои документы в безопасности. git,curl,wgetне удаляются даже при откате CLI — они почти наверняка были в системе до setup.- Опасные действия — только по подтверждению. SSH-ключ, Git-конфиг и сам Homebrew по умолчанию не трогаются; на каждое спрашивается отдельно, с дефолтом «нет».
- Конфиг
.zshrcправится хирургически — удаляется только блок, добавленный setup, твои строки остаются.
Deck (менеджер буфера обмена, по выбору) ставится из стороннего tap и не нотаризован Apple, поэтому при первом запуске macOS его заблокирует — нужно один раз нажать «Open Anyway» в System Settings → Privacy & Security. Карантин снимается только для него, не глобально. После установки стоит выключить авто-выгрузку диагностики; AI-функции отправляют буфер внешним провайдерам, так что при работе с секретами лучше использовать локальную модель через Ollama.
Туда, что осталось руками после setup:
- В iTerm2 выбрать шрифт JetBrainsMono Nerd Font
- Пройти мастер настройки Powerlevel10k (или
p10k configure) - Docker Desktop при выборе — запустить один раз из
/Applications
Apple Silicon и Intel. Написано с учётом того, что macOS из коробки идёт с bash 3.2 — скрипты работают на нём без установки нового bash.
MIT