setup-macos-developer
Seu Mac de engenharia como código: Homebrew, dotfiles e defaults, reproduzíveis em Bash
git clone https://github.com/fernandofatech/dot-setup-macos-developer.gitOuvir guia
gerado ao ouvirGerado apenas no primeiro play
Com tecnologia Amazon Polly + OmniVoice
Scripts em Bash que transformam um Mac recém-formatado numa estação de engenharia previsível — Homebrew, dotfiles e ajustes do macOS aplicados na mesma ordem, quantas vezes for preciso.
Por que existe
Depois de anos trocando de máquina — laptop pessoal, laptop de cliente, Mac Mini de laboratório — a conta que eu pagava não era o dia perdido instalando ferramentas. Era a semana seguinte: descobrir que o git tinha um alias diferente, que o node estava numa versão de dois anos atrás, que o terminal não tinha o mesmo tema e cada comando parecia estranho. Ambiente montado à mão não é lento — é irreproduzível.
Este repositório resolve isso do jeito mais simples que ainda funciona: scripts em Bash, versionados, que descrevem a estação de trabalho como código. O Homebrew instala o que é instalável por pacote; dotfiles carregam a configuração de shell, git e editor; o que sobra são ajustes do macOS que hoje eu faço clicando e amanhã não lembro onde ficava.
O critério de sucesso: rodar o mesmo comando em dois Macs e terminar com o mesmo ambiente. Não "parecido" — o mesmo. Se uma máquina diverge, a correção entra no repositório, não no histórico do terminal de uma máquina só.
Não é framework de dotfiles. Existem vários, alguns excelentes, e todos cobram um custo de aprendizado que não quis pagar por algo que rodo poucas vezes por ano. Bash puro é o que qualquer engenheiro lê em cinco minutos.
O que ele cobre
~/.zshrc, ~/.gitconfig e afins) ligados por symlink, para que editar no repositório seja editar na máquina.fernandofatech/platform.Fluxo de uma execução
O script principal orquestra três frentes na mesma ordem toda vez: pacotes, dotfiles, ajustes do sistema.
- Script de bootstrap · ordena os passos
- Lista de pacotes · formulae + casks
- Dotfiles · zsh, git, editor
- Ajustes do macOS · `defaults write`
- Homebrew · /opt/homebrew ou /usr/local
- $HOME · symlinks para os dotfiles
- Preferências do sistema · Finder, teclado, Dock
Como funciona
A ordem importa e é a mesma em toda execução. Primeiro o script confere se o Homebrew existe e instala se não — sem ele nada mais roda, então é o passo zero. Depois vem a lista de pacotes: formulae de linha de comando e casks de aplicativos, que o Homebrew processa em bloco. Só então os dotfiles são ligados ao $HOME por symlink, porque vários deles referenciam binários que acabaram de ser instalados. Por último, os ajustes do macOS que valem a pena automatizar: os que eu esqueço, e os que mudam comportamento de teclado e Finder.
Idempotência: o script foi escrito para ser reexecutado. Pacote já instalado é pulado, symlink existente não é recriado, e o Homebrew sabe ignorar o que já está na versão certa. É isso que permite usar o mesmo repositório para manter a máquina, não só para montar.
Bash de propósito: não há Python, Ansible nem Nix. Num Mac recém-formatado o que existe é zsh, bash e curl — tudo aqui roda com isso. O preço é menos abstração; o ganho é que qualquer pessoa abre o script e entende o que ele vai fazer com a máquina antes de rodar. Num script que pede a senha do administrador, isso não é detalhe.
Como o README é curto, a fonte de verdade sobre nomes de arquivo e flags é o próprio repositório. Leia o script principal antes da primeira execução; ele é o manual.
Instalar e usar
- 1
Clone o repositório
git clone https://github.com/fernandofatech/dot-setup-macos-developer.git ~/dot-setup-macos-developer. Num Mac novo ogitvem com as Command Line Tools; o macOS oferece instalá-las na primeira chamada. - 2
Leia antes de rodar
Abra o script principal e a lista de pacotes. Remova o que você não usa — o objetivo é a sua máquina, não a minha. Cinco minutos aqui evitam uma hora desinstalando.
- 3
Execute o bootstrap
Rode o script principal a partir da raiz do repositório. Ele vai pedir a senha do administrador para instalar o Homebrew e para os ajustes do sistema.
- 4
Recarregue o shell
exec zshou abra um terminal novo para os dotfiles entrarem em vigor. Confira combrew --versionegit config --list. - 5
Reexecute quando algo mudar
Adicione um pacote à lista, faça commit e rode o script de novo. O que já existe é pulado; só o delta é instalado.
# 1. Clone
git clone https://github.com/fernandofatech/dot-setup-macos-developer.git ~/dot-setup-macos-developer
cd ~/dot-setup-macos-developer
# 2. Read what is about to run (the script is the manual)
ls -la
less ./*.sh
# 3. Run the bootstrap (asks for the admin password)
bash ./setup.sh # replace with the main script's actual name
# 4. Reload the shell
exec zsh
# 5. Verify
brew --version && brew list | head
git config --list | headEste script muda a máquina
Ajustes via defaults write alteram preferências do sistema e alguns só voltam à mão. Num Mac gerido por MDM corporativo, confira com o time de TI antes: um perfil de configuração pode sobrescrever ou bloquear o que o script faz, e a falha é silenciosa — o comando passa e a preferência não muda.
Convenções e esteira
O repositório segue as regras do fernandofatech/platform, o mesmo lugar que governa meus outros projetos públicos. Branch com prefixo de tipo — feat/, fix/, chore/, docs/ — e commits em Conventional Commits. A versão sai dos commits; ninguém escreve número de versão à mão, e isso vale até para um repositório de scripts.
Por que tanta esteira para dotfiles: porque o custo não é o de escrever o script — é o de mantê-lo por anos sem que apodreça. O pr-lint recusa PR com título fora do padrão; o CI roda lint de shell; a varredura de segurança pega segredo colado por engano num .zshrc — e dotfile é exatamente onde token de API vai parar "só por hoje". O release automático marca cada mudança relevante, então dá para saber qual versão do setup montou qual máquina.
Corrigir a régua é mudar um arquivo no platform, não aqui. Esse é o ganho de centralizar: um repositório pequeno de scripts ganha a mesma disciplina de um serviço, sem carregar o YAML.
Se você for forkar, pode ignorar tudo isso: os scripts não dependem da esteira. Ela existe para o mantenedor, não para quem executa.
Perguntas frequentes
Funciona em Apple Silicon e Intel?
O Homebrew cuida da diferença — /opt/homebrew no Apple Silicon, /usr/local no Intel. Confira com brew --prefix que o shell está apontando para o caminho certo. Casks que só existem para uma arquitetura se resolvem na lista de pacotes, não no script.
Posso usar só os dotfiles, sem instalar pacotes?
Pode; o passo de symlink é independente da instalação. Mas alguns dotfiles referenciam binários que a lista instala, então espere avisos no shell até completar o restante.
Como manter minha versão sem perder as atualizações?
Fork, mantenha seus pacotes e dotfiles na sua branch e faça rebase de tempos em tempos. A separação entre script (mecanismo) e lista (conteúdo) existe para que o merge conflite pouco.
Referências
Quando usar
Use quando você troca de Mac com alguma frequência, quando mantém mais de uma máquina e quer as duas iguais, ou quando entra num time e precisa do ambiente de pé no primeiro dia sem depender de um wiki desatualizado. Não use se quer um framework com plugins e temas — aqui é Bash e uma lista, de propósito. E leia o script antes de rodar: um setup que pede senha de administrador merece cinco minutos de leitura.
Deep dives de arquitetura, AWS, IA e mercado — direto no seu email. Grátis.
Sem spam · cancele quando quiser