Skip to content

Instantly share code, notes, and snippets.

@Nanzitos
Created August 3, 2026 21:38
Show Gist options
  • Select an option

  • Save Nanzitos/c91e5f48d751753386c07d6e61edd83c to your computer and use it in GitHub Desktop.

Select an option

Save Nanzitos/c91e5f48d751753386c07d6e61edd83c to your computer and use it in GitHub Desktop.
setup-development-apple-silicon
#!/bin/bash
# bootstrap.sh — setup completo de dev environment num arquivo só
# Uso local: chmod +x bootstrap.sh && ./bootstrap.sh
# Uso via gist: curl -fsSL <url-raw-do-gist> | bash
set -e
echo "==> Instalando Homebrew (se ainda não tiver)..."
if ! command -v brew &> /dev/null; then
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
eval "$(/opt/homebrew/bin/brew shellenv)"
fi
echo "==> Gerando Brewfile temporário..."
BREWFILE=$(mktemp)
cat > "$BREWFILE" << 'EOF'
# Core / CLI essenciais
brew "git"
brew "gh"
brew "nvm"
brew "starship"
brew "zsh-autosuggestions"
brew "zsh-syntax-highlighting"
# Terminal / produtividade CLI
brew "fzf"
brew "ripgrep"
brew "bat"
brew "eza"
brew "htop"
brew "btop"
brew "nmap"
# Docker / Infra
cask "orbstack"
# Editor
cask "visual-studio-code"
# Bancos de dados / GUI
cask "sequel-ace"
cask "redisinsight"
cask "dbeaver-community"
# API / Rede
cask "insomnia"
cask "wireshark"
# Navegador
cask "google-chrome"
# Produtividade / Sistema
cask "rectangle"
cask "raycast"
cask "keka"
cask "appcleaner"
# Áudio (produção ao vivo / worship)
cask "loopback"
cask "audio-hijack"
EOF
echo "==> Rodando Brewfile (formulas + casks)..."
brew bundle --file="$BREWFILE"
rm "$BREWFILE"
echo "==> Configurando nvm + Node LTS..."
export NVM_DIR="$HOME/.nvm"
mkdir -p "$NVM_DIR"
[ -s "/opt/homebrew/opt/nvm/nvm.sh" ] && \. "/opt/homebrew/opt/nvm/nvm.sh"
nvm install --lts
nvm alias default lts/*
echo "==> Instalando pacotes npm globais..."
npm install -g typescript ts-node @anthropic-ai/claude-code
echo "==> Instalando Oh My Zsh (se ainda não tiver)..."
if [ ! -d "$HOME/.oh-my-zsh" ]; then
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended
fi
echo "==> Instalando extensões do VS Code..."
if command -v code &> /dev/null; then
code --install-extension bmewburn.vscode-intelephense-client
code --install-extension xdebug.php-debug
code --install-extension dbaeumer.vscode-eslint
code --install-extension esbenp.prettier-vscode
code --install-extension ms-azuretools.vscode-docker
code --install-extension eamodio.gitlens
code --install-extension redhat.vscode-yaml
else
echo "AVISO: comando 'code' não encontrado no PATH."
echo "Abra o VS Code > Cmd+Shift+P > 'Shell Command: Install code command in PATH' e rode este script de novo."
fi
echo ""
echo "==> Setup concluído!"
echo "Falta só: configurar git (user.name/email), gerar chave SSH (gh auth login),"
echo "e ajustar o ~/.zshrc com starship + plugins (eval \"\$(starship init zsh)\")."
# Dev Environment Setup — MacBook Pro M3
Script único (`bootstrap.sh`) pra configurar um Mac novo do zero com toda a stack de desenvolvimento: Docker, Node, PHP/CakePHP 2 (via Docker), bancos de dados, terminal e ferramentas de produtividade.
## Como usar
### Opção 1 — Rodar localmente
```bash
chmod +x bootstrap.sh
./bootstrap.sh
```
### Opção 2 — Rodar direto de um Gist (recomendado pra reuso em máquina nova)
```bash
curl -fsSL <URL_RAW_DO_SEU_GIST> | bash
```
> ⚠️ Só rode `curl | bash` de fontes que você controla (seu próprio Gist). Pra Gists de terceiros, sempre revise o conteúdo antes de executar.
Se quiser manter o Gist privado (recomendado, já que expõe seu setup):
```bash
gh gist create bootstrap.sh --private
```
## O que o script faz, na ordem
1. Instala o **Homebrew**, se ainda não existir
2. Instala tudo do Brewfile embutido (formulas + casks — lista completa abaixo)
3. Configura **nvm** e instala o **Node LTS** como padrão
4. Instala pacotes **npm globais**
5. Instala o **Oh My Zsh**
6. Instala as **extensões do VS Code**
Depois de rodar, ainda falta configurar manualmente (ver seção [Pós-instalação](#pós-instalação)).
---
## O que cada ferramenta faz
### Core / CLI essenciais
| Ferramenta | Pra que serve |
|---|---|
| **git** | Controle de versão |
| **gh** (GitHub CLI) | Gerenciar repos, PRs e autenticação do GitHub direto pelo terminal |
| **nvm** | Trocar de versão do Node por projeto, sem instalar Node fixo no sistema |
| **starship** | Prompt de terminal customizável e rápido (mostra branch git, versão de linguagem, etc) |
| **zsh-autosuggestions** | Sugere comandos enquanto você digita, baseado no histórico |
| **zsh-syntax-highlighting** | Colore o comando no terminal conforme você digita (verde = válido, vermelho = erro) |
### Terminal / produtividade CLI
| Ferramenta | Pra que serve |
|---|---|
| **fzf** | Fuzzy finder — busca arquivos, histórico de comandos, branches git de forma interativa |
| **ripgrep (rg)** | Grep muito mais rápido que o `grep` padrão, ótimo pra buscar em código legado grande |
| **bat** | Substituto do `cat` com syntax highlighting e números de linha |
| **eza** | Substituto do `ls` com cores, ícones e mais informação por padrão |
| **htop / btop** | Monitor de processos e uso de CPU/memória em tempo real (btop é mais visual) |
| **nmap** | Scanner de rede — útil pra debugar a segmentação de VLAN no seu roteador OpenWrt |
### Docker / Infra
| Ferramenta | Pra que serve |
|---|---|
| **OrbStack** | Roda containers Docker no Mac — alternativa ao Docker Desktop, mais leve e rápida no Apple Silicon |
### Editor
| Ferramenta | Pra que serve |
|---|---|
| **VS Code** | Editor de código principal |
### Bancos de dados
| Ferramenta | Pra que serve |
|---|---|
| **Sequel Ace** | Cliente MySQL leve e nativo, bom pro dia a dia (consultas, explorar schema) |
| **Redis Insight** | Cliente oficial do Redis — visualiza chaves, TTLs, roda comandos |
| **DBeaver Community** | Cliente multi-banco mais completo, com modo de transação manual (commit/rollback controlado) — use quando for mexer em dados sensíveis |
### API / Rede
| Ferramenta | Pra que serve |
|---|---|
| **Insomnia** | Cliente de API pra testar endpoints REST, webhooks, etc (alternativa leve ao Postman) |
| **Wireshark** | Análise profunda de tráfego de rede — útil pra debugar problemas de VLAN/firewall mais complexos que o nmap não resolve |
### Navegador
| Ferramenta | Pra que serve |
|---|---|
| **Google Chrome** | Navegador padrão |
### Produtividade / Sistema
| Ferramenta | Pra que serve |
|---|---|
| **Rectangle** | Organiza janelas na tela com atalhos de teclado (tipo Windows Snap) |
| **Raycast** | Spotlight turbinado — busca, snippets, integrações com GitHub/dev tools |
| **Keka** | Descompacta qualquer formato de arquivo (zip, rar, 7z) |
| **AppCleaner** | Desinstala apps sem deixar arquivos de configuração espalhados pelo sistema |
### Áudio (produção ao vivo / worship)
| Ferramenta | Pra que serve |
|---|---|
| **Loopback** | Cria dispositivos de áudio virtuais pra rotear sinal entre apps |
| **Audio Hijack** | Captura e roteia áudio de qualquer fonte do Mac |
### npm globais
| Pacote | Pra que serve |
|---|---|
| **typescript** | Compilador TypeScript |
| **ts-node** | Roda arquivos `.ts` direto sem precisar compilar antes |
| **@anthropic-ai/claude-code** | Claude Code — assistente de IA agentic pra tarefas de código via terminal |
### Extensões VS Code
| Extensão | Pra que serve |
|---|---|
| **intelephense** | Autocomplete e navegação inteligente pra PHP |
| **php-debug (Xdebug)** | Debug de código PHP com breakpoints |
| **ESLint** | Lint de JS/TypeScript |
| **Prettier** | Formatação automática de código |
| **Docker** | Sintaxe e gerenciamento de Dockerfile/docker-compose direto no editor |
| **GitLens** | Mostra histórico e autoria de cada linha (blame) direto no editor |
| **YAML** | Suporte a arquivos `.yml` (docker-compose, CI, etc) |
---
## Pós-instalação
O script **não faz** essas partes porque são específicas de cada pessoa/máquina:
### 1. Configurar Git
```bash
git config --global user.name "Seu Nome"
git config --global user.email "seu-email@exemplo.com"
git config --global init.defaultBranch main
```
### 2. Gerar chave SSH e autenticar no GitHub
```bash
ssh-keygen -t ed25519 -C "seu-email@exemplo.com"
eval "$(ssh-agent -s)"
ssh-add --apple-use-keychain ~/.ssh/id_ed25519
gh auth login
```
### 3. Configurar o `~/.zshrc`
Adicionar no final do arquivo:
```bash
plugins=(git docker docker-compose node npm)
source $(brew --prefix)/share/zsh-autosuggestions/zsh-autosuggestions.zsh
source $(brew --prefix)/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
eval "$(starship init zsh)"
```
### 4. Habilitar o comando `code` no terminal
No VS Code: `Cmd + Shift + P` → `Shell Command: Install 'code' command in PATH`
### 5. Definir o Chrome como navegador padrão
`Ajustes do Sistema → Desktop e Dock → Navegador padrão → Google Chrome`
### 6. Subir o ambiente Docker do projeto
Dentro da pasta do projeto (ex: `crmbonus-legacy`), com o `docker-compose.yml` configurado:
```bash
docker compose up -d
```
---
## Notas
- **Apple Silicon (M3)**: imagens Docker de PHP muito antigas (5.x) podem não ter build `arm64`. Se precisar rodar PHP legado nessa faixa, adicione `platform: linux/amd64` no serviço do `docker-compose.yml` (roda via emulação, mais lento mas funcional).
- **Raycast vs Alfred**: o script instala só o Raycast. Se preferir Alfred, troque no Brewfile — não recomendado instalar os dois juntos (conflito de atalhos globais).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment