# setup-macos-developer

Automatize seu ambiente macOS de dev com um script idempotente e opiniões sensatas.

- URL: https://fernando.moretes.com/open-source/setup-macos-developer

- Markdown: https://fernando.moretes.com/open-source/setup-macos-developer/guide.md?lang=pt

- GitHub: https://github.com/fernandofatech/setup-macos-developer

- Homepage: https://fernando.moretes.com

- Language: Shell

- Topics: automation, bash, developer-setup, developer-tools, dotfiles, homebrew, macos, moretes, portfolio, productivity

- Stars: 3

- Forks: 0

- Updated: 2026-05-16T01:15:38Z

---

setup-macos-developer é um script Bash idempotente que provisiona do zero um ambiente de desenvolvimento macOS completo — shell, linguagens, CLIs de nuvem e ferramentas de produtividade — com um único comando.

## Por que este repositório existe

Toda vez que troco de máquina, recebo um MacBook novo ou preciso recriar um ambiente após uma reinstalação do sistema, o custo de reconfigurar manualmente tudo — Homebrew, runtimes de linguagem, CLIs da AWS, ferramentas de terminal, configurações de dotfiles — é alto e propenso a inconsistências. A solução padrão da indústria é automatizar isso uma vez e reutilizar sempre.

Este repositório é a minha resposta pessoal a esse problema. Ele captura as escolhas que faço como arquiteto de soluções sênior: quais ferramentas instalar, em que ordem, e com quais configurações padrão. Não é um framework genérico — é um conjunto de decisões explícitas que refletem o meu fluxo de trabalho real com AWS, desenvolvimento em nuvem, segurança e plataformas de dados.

O princípio central é **idempotência**: rodar o script uma segunda ou décima vez não quebra nada, não duplica instalações e não sobrescreve configurações locais que você alterou intencionalmente. Isso torna o script seguro para uso contínuo, não apenas na configuração inicial.

## O que o script cobre

- **Idempotente por design** — re-executável sem efeitos colaterais; verifica o que já está instalado antes de agir.
- **Homebrew como base** — todos os pacotes, casks e dependências são gerenciados pelo Homebrew para consistência e facilidade de atualização.
- **CLIs de nuvem incluídas** — ferramentas como AWS CLI estão no escopo, refletindo um fluxo de trabalho real de arquitetura em nuvem.
- **Shell e linguagens** — configuração do ambiente de shell e runtimes de linguagem relevantes para desenvolvimento moderno.
- **Ferramentas de produtividade** — aplicativos e utilitários de terminal que compõem um ambiente de trabalho eficiente para engenharia.
- **Estrutura modular** — o layout do projeto segue uma organização orientada a produção; cada área de responsabilidade vive em seu próprio módulo.

## Como o script funciona — fluxo de execução

main.sh atua como orquestrador: ele chama módulos especializados em sequência, cada um responsável por uma camada do ambiente.

### 💻 Local Machine

- main.sh orchestrator (compute)
- Homebrew bootstrap (compute)
- Shell & dotfiles module (compute)
- Languages module (compute)
- Cloud CLIs module (compute)
- Productivity tools module (compute)

### 🌐 External Sources

- Homebrew registry (external)
- GitHub (repo clone) (external)

### Fluxos

- dev -> github: git clone
- dev -> main: ./main.sh
- main -> homebrew: 1 — bootstrap
- main -> shell: 2 — shell
- main -> langs: 3 — runtimes
- main -> cloud: 4 — cloud CLIs
- main -> productivity: 5 — apps
- homebrew -> brew_cdn: instala pacotes
- langs -> brew_cdn: instala runtimes
- cloud -> brew_cdn: instala CLIs

## Instalação e uso

1. **Pré-requisito: macOS com acesso à internet** — O script assume um macOS limpo ou existente. Não é necessário instalar o Homebrew manualmente — o script cuida disso. Você precisa apenas de acesso à internet e permissão para executar scripts com `sudo` quando solicitado.

2. **Clone o repositório** — Clone para qualquer diretório local. O script não precisa estar em um caminho específico.

3. **Torne o script executável** — O comando `chmod +x *.sh` garante que todos os módulos Shell no repositório tenham permissão de execução. Faça isso antes de rodar qualquer script.

4. **Execute o script principal** — Rode `./main.sh` e acompanhe a saída. O script verificará o que já está instalado, instalará o que está faltando e configurará os dotfiles. Pode ser necessário inserir sua senha de administrador em alguns pontos.

5. **Re-execute quando necessário** — Graças à idempotência, você pode rodar `./main.sh` novamente após adicionar novas ferramentas ao script ou ao configurar uma nova máquina. Execuções repetidas são seguras.

_Fluxo completo de instalação — do clone à execução_

```bash
# 1. Clone the repository
git clone https://github.com/fernandofatech/setup-macos-developer.git
cd setup-macos-developer

# 2. Make all shell scripts executable
chmod +x *.sh

# 3. Run the main orchestrator
./main.sh

# The script will:
#   - Install Homebrew if not present
#   - Configure your shell environment
#   - Install language runtimes via Homebrew
#   - Install cloud CLIs (e.g. AWS CLI)
#   - Install productivity tools and applications
#
# Re-running is safe — already-installed items are skipped.
./main.sh  # idempotent: run again anytime
```

## Como o script funciona internamente

O ponto de entrada é `main.sh`, que atua como orquestrador. Ele chama módulos especializados em uma sequência determinística — primeiro o bootstrap do Homebrew, depois a configuração do shell, runtimes de linguagem, CLIs de nuvem e, por fim, ferramentas de produtividade. Essa ordem importa: cada camada depende da anterior.

A idempotência é implementada por verificações explícitas antes de cada operação. Antes de instalar um pacote, o script verifica se ele já existe. Antes de escrever uma configuração, verifica se ela já está presente. Isso é feito principalmente através de comandos como `brew list`, `command -v` e comparações de strings nos arquivos de configuração existentes.

O Homebrew é o mecanismo de entrega central para quase tudo: fórmulas para ferramentas de linha de comando, casks para aplicativos macOS e possíveis taps para fontes de terceiros. Isso mantém o gerenciamento de pacotes uniforme e auditável — você pode inspecionar o que foi instalado com `brew list` a qualquer momento.

A estrutura modular significa que é simples adicionar ou remover ferramentas: você edita o módulo relevante sem tocar no orquestrador. Se você não precisa de um conjunto específico de ferramentas, pode comentar a chamada correspondente em `main.sh` antes de executar.

> **Personalizando para o seu fluxo de trabalho:** Este script reflete as minhas escolhas pessoais como arquiteto de soluções. Se você quiser adaptá-lo, o ponto de partida mais simples é editar os módulos individuais para adicionar ou remover pacotes Homebrew. Você não precisa entender o orquestrador para fazer isso. Mantenha o padrão de verificação antes de instalar para preservar a idempotência.

## Perguntas frequentes

### O script funciona em Apple Silicon (M1/M2/M3)?

O Homebrew tem suporte nativo a Apple Silicon desde 2021, instalando em `/opt/homebrew` em vez de `/usr/local`. Scripts Bash bem escritos que delegam ao Homebrew funcionam em ambas as arquiteturas. Se você encontrar problemas relacionados a arquitetura, abra uma issue no repositório.

### É seguro rodar em uma máquina que já tem ferramentas instaladas?

Sim. Esse é o propósito central da idempotência. O script verifica o que já existe antes de agir. Ferramentas já instaladas são puladas. Configurações existentes não são sobrescritas de forma destrutiva.

### Posso usar isso como base para o meu próprio setup?

Sim, o projeto está licenciado sob MIT. Faça um fork, adapte os módulos às suas necessidades e remova as ferramentas que não fazem parte do seu fluxo de trabalho. O padrão de orquestrador + módulos é deliberadamente simples para facilitar a customização.

### O script requer sudo?

Algumas etapas podem solicitar sua senha de administrador — principalmente a instalação do Homebrew em si e possivelmente a instalação de certos casks. O script não deve rodar inteiramente como root; ele solicitará elevação apenas quando necessário.

## Para quem é este repositório

Este repositório é útil para qualquer engenheiro de software ou arquiteto que trabalha principalmente no macOS e quer eliminar o atrito de configurar um novo ambiente. É especialmente relevante se o seu fluxo de trabalho envolve AWS e CLIs de nuvem, desenvolvimento com múltiplos runtimes de linguagem, ou se você simplesmente troca de máquina com frequência suficiente para que a configuração manual seja um custo real.

Não é uma solução universal. As ferramentas e configurações refletem as minhas escolhas pessoais. Se o seu stack é muito diferente, você levará algum tempo adaptando os módulos — mas a estrutura e os padrões de idempotência são reutilizáveis. Para quem quer aprender como estruturar automação de dotfiles de forma limpa em Bash puro com Homebrew, este repositório também serve como exemplo concreto e legível.

## Referências

- [fernandofatech/setup-macos-developer — GitHub](https://github.com/fernandofatech/setup-macos-developer)
- [Fernando Azevedo — Portfolio](https://fernando.moretes.com)
- [Homebrew — The Missing Package Manager for macOS](https://brew.sh)

## Links

- [GitHub repository](https://github.com/fernandofatech/setup-macos-developer)
- [Homepage](https://fernando.moretes.com)
