From 532dfe4762c1f374848b096ce06929ebf73e3fe7 Mon Sep 17 00:00:00 2001 From: Marco Gallegos Date: Wed, 19 Nov 2025 19:22:22 -0600 Subject: [PATCH] Update vanity_setup.sh --- vanity_setup.sh | 246 ++++++++++++++++++++++++++++++------------------ 1 file changed, 153 insertions(+), 93 deletions(-) diff --git a/vanity_setup.sh b/vanity_setup.sh index 52a09e7..230e8ac 100644 --- a/vanity_setup.sh +++ b/vanity_setup.sh @@ -1,115 +1,175 @@ #!/usr/bin/env bash set -e -# ──────────────────────────────────────────────── -# ASCII ART VANITY OS SHELL -# ──────────────────────────────────────────────── -printf "\n" -printf "██╗ ██╗ █████╗ ███╗ ██╗██╗███╗ ██╗██╗ ██╗ ██████╗ ███████╗\n" -printf "██║ ██║██╔══██╗████╗ ██║██║████╗ ██║██║ ██║ ██╔════╝ ██╔════╝\n" -printf "██║ ██║███████║██╔██╗ ██║██║██╔██╗ ██║██║ ██║ ██║ ███╗█████╗ \n" -printf "╚██╗ ██╔╝██╔══██║██║╚██╗██║██║██║╚██╗██║██║ ██║ ██║ ██║██╔══╝ \n" -printf " ╚████╔╝ ██║ ██║██║ ╚████║██║██║ ╚████║╚██████╔╝ ╚██████╔╝███████╗\n" -printf " ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═══╝╚═╝╚═╝ ╚═══╝ ╚═════╝ ╚═════╝ ╚══════╝\n" -printf " Vanity OS Shell Installer (macOS)\n\n" +# ============================================== +# HEADER +# ============================================== +header() { + echo "" + echo "==============================================" + echo " V A N I T Y S H E L L" + echo " macOS Development Installer" + echo "==============================================" + echo "" +} -# ──────────────────────────────────────────────── -# Homebrew -# ──────────────────────────────────────────────── -if ! command -v brew >/dev/null 2>&1; then - echo "Instalando Homebrew…" - NONINTERACTIVE=1 /bin/bash -c \ +# ============================================== +# PROGRESO VISUAL +# ============================================== +progress() { + local task="$1" + echo "→ $task" + for i in 10 25 40 55 70 85 100; do + printf " [%3s%%]\r" "$i" + sleep 0.06 + done + printf " [100%%] ✓ Completado\n\n" +} + +# ============================================== +# INSTALACIÓN REAL +# ============================================== +install_everything() { + + # ------------------------------------------------ + # Homebrew + # ------------------------------------------------ + progress "Instalando Homebrew" + if ! command -v brew >/dev/null 2>&1; then + NONINTERACTIVE=1 /bin/bash -c \ "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" - echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile - eval "$(/opt/homebrew/bin/brew shellenv)" -else - echo "Homebrew ya está instalado." -fi + echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile + eval "$(/opt/homebrew/bin/brew shellenv)" + fi -echo "Actualizando Homebrew…" -brew update + brew update -# ──────────────────────────────────────────────── -# Instalando paquetes base -# ──────────────────────────────────────────────── -brew install zsh curl wget git xclip yq jq + # ------------------------------------------------ + # Paquetes base + # ------------------------------------------------ + progress "Instalando paquetes base" + brew install zsh curl wget git xclip yq jq -# ──────────────────────────────────────────────── -# Oh My Zsh -# ──────────────────────────────────────────────── -if [ ! -d "$HOME/.oh-my-zsh" ]; then - echo "Instalando Oh My Zsh…" - RUNZSH=no CHSH=no KEEP_ZSHRC=yes \ - sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" -fi + # ------------------------------------------------ + # Oh My Zsh + # ------------------------------------------------ + progress "Instalando Oh My Zsh" + if [ ! -d "$HOME/.oh-my-zsh" ]; then + RUNZSH=no CHSH=no KEEP_ZSHRC=yes \ + sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" + fi -# ──────────────────────────────────────────────── -# Plugins de ZSH -# ──────────────────────────────────────────────── -mkdir -p ~/.oh-my-zsh/custom/plugins + # ------------------------------------------------ + # Plugins ZSH + # ------------------------------------------------ + progress "Instalando plugins ZSH" + mkdir -p ~/.oh-my-zsh/custom/plugins -repos=( - "zsh-users/zsh-autosuggestions" - "zsh-users/zsh-syntax-highlighting" - "zsh-users/zsh-completions" -) + repos=( + "zsh-users/zsh-autosuggestions" + "zsh-users/zsh-syntax-highlighting" + "zsh-users/zsh-completions" + ) -for r in "${repos[@]}"; do - folder=$(basename "$r") - if [ ! -d "$HOME/.oh-my-zsh/custom/plugins/$folder" ]; then + for r in "${repos[@]}"; do + folder=$(basename "$r") + [ ! -d "$HOME/.oh-my-zsh/custom/plugins/$folder" ] && \ git clone https://github.com/$r ~/.oh-my-zsh/custom/plugins/$folder - fi -done + done -# ──────────────────────────────────────────────── -# Instalación Oh My Posh + tema + fuentes -# ──────────────────────────────────────────────── -brew install jandedobbeleer/oh-my-posh/oh-my-posh + # ------------------------------------------------ + # Oh My Posh + tema + fuente + # ------------------------------------------------ + progress "Instalando Oh My Posh y tema Catppuccin" + brew install jandedobbeleer/oh-my-posh/oh-my-posh + mkdir -p ~/.poshthemes + curl -fsSL \ + https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/catppuccin.omp.json \ + -o ~/.poshthemes/catppuccin.omp.json -mkdir -p ~/.poshthemes -curl -fsSL \ - https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/catppuccin.omp.json \ - -o ~/.poshthemes/catppuccin.omp.json + oh-my-posh font install meslo -# fuente recomendada -oh-my-posh font install meslo + # ------------------------------------------------ + # Descargar tu archivo .zshrc + # ------------------------------------------------ + progress "Descargando archivo .zshrc VanityOS" + curl -fsSL \ + https://raw.githubusercontent.com/marcogll/mac_vntySet/refs/heads/main/.zshrc.example \ + -o ~/.zshrc -# ──────────────────────────────────────────────── -# Descargar tu .zshrc.example -# ──────────────────────────────────────────────── -echo "Descargando .zshrc.example…" -curl -fsSL https://raw.githubusercontent.com/marcogll/mac_vntySet/refs/heads/main/.zshrc.example \ - -o ~/.zshrc + # ------------------------------------------------ + # Python, Node, yt-dlp, Docker, LazyDocker + # ------------------------------------------------ + progress "Instalando Python, Node, yt-dlp y LazyDocker" + brew install python node yt-dlp lazydocker -# ──────────────────────────────────────────────── -# Python, Node, Docker, Lazydocker -# ──────────────────────────────────────────────── -brew install python node lazydocker + # ------------------------------------------------ + # Docker Desktop + # ------------------------------------------------ + progress "Instalando Docker Desktop (CLI + Compose)" + brew install --cask docker -# Docker Desktop CLI + Compose -brew install --cask docker + # ------------------------------------------------ + # Portainer (Docker) + # ------------------------------------------------ + progress "Configurando Portainer CE" + docker volume create portainer_data || true + docker stop portainer >/dev/null 2>&1 || true + docker rm portainer >/dev/null 2>&1 || true -# ──────────────────────────────────────────────── -# Portainer (docker) -# ──────────────────────────────────────────────── -docker volume create portainer_data || true -docker stop portainer >/dev/null 2>&1 || true -docker rm portainer >/dev/null 2>&1 || true + docker run -d \ + -p 8000:8000 -p 9443:9443 \ + --name=portainer \ + --restart=always \ + -v /var/run/docker.sock:/var/run/docker.sock \ + -v portainer_data:/data \ + portainer/portainer-ce:latest -docker run -d \ - -p 8000:8000 -p 9443:9443 \ - --name=portainer \ - --restart=always \ - -v /var/run/docker.sock:/var/run/docker.sock \ - -v portainer_data:/data \ - portainer/portainer-ce:latest + # ------------------------------------------------ + # Copiar "source ~/.zshrc" al portapapeles + # ------------------------------------------------ + echo "source ~/.zshrc" | pbcopy + echo "" + echo "La configuración está lista." + echo "Pega en tu terminal:" + echo "" + echo " source ~/.zshrc" + echo "" + echo "(Ya está copiado en tu portapapeles)" +} -# ──────────────────────────────────────────────── -# Copiar "source ~/.zshrc" al portapapeles -# ──────────────────────────────────────────────── -echo "source ~/.zshrc" | pbcopy +# ============================================== +# MENU +# ============================================== +menu() { + header -printf "\nListo.\n" -printf "Pega y ejecuta en tu terminal para activar la configuración:\n" -printf "\n source ~/.zshrc\n\n" -printf "(Ya lo tienes en el portapapeles, solo pega con Cmd+V)\n\n" + echo "Selecciona una opción (ENTER = A):" + echo "" + echo " A) Instalar TODO (recomendado)" + echo " 1) Instalar Homebrew" + echo " 2) Instalar ZSH + plugins" + echo " 3) Instalar Oh My Posh + tema" + echo " 4) Instalar Python + Node" + echo " 5) Instalar Docker + Portainer + LazyDocker" + echo " 6) Instalar yt-dlp + aliases" + echo " 0) Salir" + echo "" + + read -rp "Opción [A]: " opt + opt="${opt:-A}" + + echo "" + + case "$opt" in + A|a) install_everything ;; + 0) echo "Saliendo…"; exit 0 ;; + *) + echo "Modo individual aún no habilitado." + sleep 1 + menu + ;; + esac +} + +menu