#!/bin/bash set -e # Verifica se é macOS if [[ "$OSTYPE" != "darwin"* ]]; then echo "❌ Este script é destinado apenas ao macOS." exit 1 fi # Instala Homebrew se não existir if ! command -v brew &>/dev/null; then echo "📦 Instalando Homebrew..." NONINTERACTIVE=1 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" # Configura brew no PATH (Apple Silicon e Intel) if [[ -d /opt/homebrew ]]; then echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> "$HOME/.zprofile" eval "$(/opt/homebrew/bin/brew shellenv)" else echo 'eval "$(/usr/local/bin/brew shellenv)"' >> "$HOME/.zprofile" eval "$(/usr/local/bin/brew shellenv)" fi else echo "✅ Homebrew já instalado" fi # Instala pacotes básicos echo "📦 Instalando zsh, git e curl..." brew install zsh git curl # Instala Oh My Zsh se não existir if [ ! -d "$HOME/.oh-my-zsh" ]; then echo "🎉 Instalando Oh My Zsh..." export RUNZSH=no sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" else echo "✅ Oh My Zsh já instalado" fi # Instala Powerlevel10k if [ ! -d "$HOME/.oh-my-zsh/custom/themes/powerlevel10k" ]; then echo "✨ Instalando Powerlevel10k..." git clone --depth=1 https://github.com/romkatv/powerlevel10k.git \ ~/.oh-my-zsh/custom/themes/powerlevel10k else echo "✅ Powerlevel10k já instalado" fi # Instala autosuggestions if [ ! -d "$HOME/.oh-my-zsh/custom/plugins/zsh-autosuggestions" ]; then echo "💡 Instalando zsh-autosuggestions..." git clone https://github.com/zsh-users/zsh-autosuggestions \ ~/.oh-my-zsh/custom/plugins/zsh-autosuggestions else echo "✅ zsh-autosuggestions já instalado" fi # Instala syntax-highlighting if [ ! -d "$HOME/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting" ]; then echo "🎨 Instalando zsh-syntax-highlighting..." git clone https://github.com/zsh-users/zsh-syntax-highlighting \ ~/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting else echo "✅ zsh-syntax-highlighting já instalado" fi # Atualiza ~/.zshrc echo "⚙️ Configurando ~/.zshrc..." # Define tema sed -i 's/^ZSH_THEME=.*/ZSH_THEME="powerlevel10k\/powerlevel10k"/' ~/.zshrc || true # Atualiza plugins (substitui ou adiciona) if grep -q "^plugins=" ~/.zshrc; then sed -i 's/^plugins=.*/plugins=(git zsh-autosuggestions zsh-syntax-highlighting)/' ~/.zshrc else echo 'plugins=(git zsh-autosuggestions zsh-syntax-highlighting)' >> ~/.zshrc fi # Torna zsh padrão if [ "$SHELL" != "$(which zsh)" ]; then echo "🖥️ Definindo zsh como shell padrão..." chsh -s $(which zsh) fi # 📥 Coleta informações read -p "👤 Nome do usuário Git: " git_name read -p "📧 Email do usuário Git: " git_email read -p "🔐 SSH signing key (ex: ssh-ed25519 AAAA...): " git_signingkey read -p "🧩 Caminho do programa SSH (ex: /mnt/c/.../op-ssh-sign-wsl): " git_program mkdir -p ~/.ssh chmod 700 ~/.ssh # 🔐 Chaves SSH echo -n "🔐 Deseja adicionar suas chaves SSH pública e privada? [Y/n] " read -r resposta resposta=${resposta:-y} resposta=$(echo "$resposta" | tr '[:upper:]' '[:lower:]') if [ "$resposta" != "n" ]; then if [ -f ~/.ssh/id_ed25519 ]; then echo "⚠️ Chave privada ~/.ssh/id_ed25519 já existe. Pulando..." else echo "✍️ Cole a chave **privada** (termine com Ctrl+D):" cat > ~/.ssh/id_ed25519 chmod 600 ~/.ssh/id_ed25519 fi if [ -f ~/.ssh/id_ed25519.pub ]; then echo "⚠️ Chave pública ~/.ssh/id_ed25519.pub já existe. Pulando..." else echo -n "✍️ Cole a chave **pública** (uma linha): " read -r pubkey echo "$pubkey" > ~/.ssh/id_ed25519.pub chmod 644 ~/.ssh/id_ed25519.pub fi echo "✅ Chaves verificadas" else echo "⏭️ Processo ignorado" fi echo "🚀 Instalando: nvm, Node.js, npm, vercel, yalc, pnpm, yarn, eslint, prettier, ffmpeg..." # 📦 Instala NVM if [ ! -d "$HOME/.nvm" ]; then curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash fi export NVM_DIR="$HOME/.nvm" source "$NVM_DIR/nvm.sh" # 🧠 Atualiza ~/.zshrc com NVM se ainda não tiver if ! grep -q 'export NVM_DIR=' ~/.zshrc; then echo 'export NVM_DIR="$HOME/.nvm"' >> ~/.zshrc echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"' >> ~/.zshrc fi # 📌 Instala última LTS nvm install --lts >/dev/null nvm use --lts >/dev/null # ✅ Corepack if command -v corepack &>/dev/null; then corepack enable fi # 🎞️ ffmpeg if ! command -v ffmpeg &>/dev/null; then brew install ffmpeg else echo "✅ ffmpeg já instalado" fi # 📝 .gitconfig if [ -f ~/.gitconfig ]; then echo "⚠️ ~/.gitconfig já existe. Pulando..." else cat > ~/.gitconfig < ~/.vimrc <<'EOF' inoremap jj nnoremap j jzz nnoremap k kzz EOF echo "✅ .vimrc criado" fi # 🔄 Globais npm global_pkgs=(vercel yalc pnpm eslint prettier yarn) for pkg in "${global_pkgs[@]}"; do if ! command -v "$pkg" &>/dev/null; then echo "⬇️ Instalando $pkg..." npm install -g "$pkg" else echo "✅ $pkg já instalado" fi done echo "🎉 Ambiente de dev configurado com sucesso!" echo "✅ Instalação concluída. Abrindo o zsh..." exec zsh