mirror of
https://github.com/marcogll/mac_vntySet.git
synced 2026-01-13 13:25:15 +00:00
refactor: Improve setup script robustness, modularity, and Docker handling, and remove example zshrc.
This commit is contained in:
153
.zshrc.example
153
.zshrc.example
@@ -1,95 +1,28 @@
|
|||||||
# .zshrc.example
|
|
||||||
# Archivo de ejemplo para configurar Zsh + Oh My Zsh.
|
|
||||||
# Bien documentado para entender qué hace cada sección.
|
|
||||||
# Puedes copiarlo a ~/.zshrc y modificarlo según tus preferencias.
|
|
||||||
|
|
||||||
# ------------------------------------------------------------
|
|
||||||
# 1. PATH y variables básicas
|
|
||||||
# ------------------------------------------------------------
|
|
||||||
# Añade rutas personalizadas al PATH si usas Homebrew, Node, Python, etc.
|
|
||||||
export PATH="/opt/homebrew/bin:/opt/homebrew/sbin:$PATH"
|
|
||||||
export PATH="$HOME/.local/bin:$PATH"
|
|
||||||
|
|
||||||
# ------------------------------------------------------------
|
|
||||||
# 2. Oh My Zsh: tema y plugins
|
|
||||||
# ------------------------------------------------------------
|
|
||||||
# Tema visual del prompt. "powerlevel10k" es rápido y bonito.
|
|
||||||
ZSH_THEME="powerlevel10k/powerlevel10k"
|
|
||||||
|
|
||||||
# Lista de plugins que se cargarán al iniciar Zsh.
|
|
||||||
# Se recomienda no abusar de plugins para evitar lentitud.
|
|
||||||
plugins=(
|
|
||||||
git # shortcuts de git
|
|
||||||
sudo # permite repetir comandos con sudo (!!)
|
|
||||||
history # historial mejorado
|
|
||||||
colorize # colorear salida de comandos
|
|
||||||
docker # autocompletado para Docker
|
|
||||||
docker-compose # autocompletado para Docker Compose
|
|
||||||
npm # utilidades para Node
|
|
||||||
node # autocompletado Node.js
|
|
||||||
python # autocompletado Python
|
|
||||||
pip # autocompletado pip
|
|
||||||
golang # autocompletado Go
|
|
||||||
copypath # copiar rutas al portapapeles
|
|
||||||
copyfile # copiar archivos al portapapeles
|
|
||||||
)
|
|
||||||
|
|
||||||
# Carga Oh My Zsh
|
|
||||||
export ZSH="$HOME/.oh-my-zsh"
|
|
||||||
source $ZSH/oh-my-zsh.sh
|
|
||||||
|
|
||||||
# ------------------------------------------------------------
|
|
||||||
# 3. Configuraciones de historial
|
|
||||||
# ------------------------------------------------------------
|
|
||||||
HISTSIZE=5000 # tamaño en memoria
|
|
||||||
SAVEHIST=5000 # tamaño en disco
|
|
||||||
HISTFILE=~/.zsh_history # archivo donde se guarda
|
|
||||||
setopt SHARE_HISTORY # compartir historial entre sesiones
|
|
||||||
setopt HIST_IGNORE_DUPS # no guardar duplicados
|
|
||||||
setopt HIST_IGNORE_SPACE # no guardar comandos que comiencen con espacio
|
|
||||||
|
|
||||||
# ------------------------------------------------------------
|
|
||||||
# 4. Alias útiles
|
|
||||||
# ------------------------------------------------------------
|
|
||||||
alias ll="ls -lah"
|
|
||||||
alias gs="git status"
|
|
||||||
alias gl="git log --oneline --graph --decorate"
|
|
||||||
alias please="sudo !!" # magia pura ;)
|
|
||||||
|
|
||||||
# ------------------------------------------------------------
|
|
||||||
# 5. Mejoras de terminal
|
|
||||||
# ------------------------------------------------------------
|
|
||||||
# Colores más bonitos en 'ls'
|
|
||||||
export CLICOLOR=1
|
|
||||||
export LSCOLORS="GxFxCxDxBxegedabagacad"
|
|
||||||
|
|
||||||
# Editor de texto por defecto
|
|
||||||
export EDITOR="nano"
|
|
||||||
|
|
||||||
# ------------------------------------------------------------
|
|
||||||
# 6. Powerlevel10k (si está instalado)
|
|
||||||
# ------------------------------------------------------------
|
|
||||||
# Este archivo se genera automáticamente cuando configuras p10k.
|
|
||||||
# Si no existe, puedes generarlo ejecutando: p10k configure
|
|
||||||
[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh
|
|
||||||
# ~/.zshrc.example — Configuración adaptada para Vanity Shell en macOS
|
|
||||||
# ---------------------------------------------------------------
|
# ---------------------------------------------------------------
|
||||||
# Archivo totalmente documentado para uso dentro del entorno Vanity Shell.
|
# Vanity Shell — Configuración base para Zsh en macOS
|
||||||
# Este archivo será copiado a ~/.zshrc por vanity_setup.sh.
|
# ---------------------------------------------------------------
|
||||||
# Incluye: Oh My Zsh, Oh My Posh, plugins, historial, alias y funciones.
|
# Incluye Oh My Zsh, Oh My Posh, historial afinado y alias útiles.
|
||||||
|
# Este archivo es copiado automáticamente a ~/.zshrc por vanity_setup.sh.
|
||||||
|
|
||||||
# ---------------------------------------------------------------
|
# ---------------------------------------------------------------
|
||||||
# PATH — rutas básicas del sistema
|
# PATH — añade rutas clave antes del resto del sistema
|
||||||
# ---------------------------------------------------------------
|
# ---------------------------------------------------------------
|
||||||
export PATH="$HOME/bin:/usr/local/bin:/opt/homebrew/bin:$PATH"
|
if [ -d /opt/homebrew/bin ]; then
|
||||||
|
export PATH="/opt/homebrew/bin:/opt/homebrew/sbin:$PATH"
|
||||||
|
fi
|
||||||
|
if [ -d "$HOME/.local/bin" ]; then
|
||||||
|
export PATH="$HOME/.local/bin:$PATH"
|
||||||
|
fi
|
||||||
|
if [ -d "$HOME/bin" ]; then
|
||||||
|
export PATH="$HOME/bin:$PATH"
|
||||||
|
fi
|
||||||
|
|
||||||
# ---------------------------------------------------------------
|
# ---------------------------------------------------------------
|
||||||
# Oh My Zsh — Framework principal
|
# Oh My Zsh — Framework principal + plugins
|
||||||
# ---------------------------------------------------------------
|
# ---------------------------------------------------------------
|
||||||
export ZSH="$HOME/.oh-my-zsh"
|
export ZSH="$HOME/.oh-my-zsh"
|
||||||
ZSH_THEME="robbyrussell"
|
ZSH_THEME="robbyrussell" # el prompt real lo gestiona Oh My Posh
|
||||||
|
|
||||||
# Lista de plugins para mejorar la experiencia de ZSH.
|
|
||||||
plugins=(
|
plugins=(
|
||||||
git sudo history colorize
|
git sudo history colorize
|
||||||
docker docker-compose
|
docker docker-compose
|
||||||
@@ -103,38 +36,68 @@ plugins=(
|
|||||||
source $ZSH/oh-my-zsh.sh
|
source $ZSH/oh-my-zsh.sh
|
||||||
|
|
||||||
# ---------------------------------------------------------------
|
# ---------------------------------------------------------------
|
||||||
# Oh My Posh — Prompt con tema Catppuccin
|
# Oh My Posh — Prompt moderno (tema Catppuccin)
|
||||||
# ---------------------------------------------------------------
|
# ---------------------------------------------------------------
|
||||||
eval "$(oh-my-posh init zsh --config ~/.poshthemes/catppuccin.omp.json)"
|
if command -v oh-my-posh >/dev/null 2>&1; then
|
||||||
|
eval "$(oh-my-posh init zsh --config ~/.poshthemes/catppuccin.omp.json)"
|
||||||
|
fi
|
||||||
|
|
||||||
# ---------------------------------------------------------------
|
# ---------------------------------------------------------------
|
||||||
# Historial — configuración avanzada
|
# Historial y opciones de shell
|
||||||
# ---------------------------------------------------------------
|
# ---------------------------------------------------------------
|
||||||
|
HISTFILE=~/.zsh_history
|
||||||
HISTSIZE=50000
|
HISTSIZE=50000
|
||||||
SAVEHIST=50000
|
SAVEHIST=50000
|
||||||
HISTFILE=~/.zsh_history
|
setopt SHARE_HISTORY
|
||||||
setopt HIST_IGNORE_SPACE
|
setopt HIST_IGNORE_SPACE
|
||||||
setopt HIST_IGNORE_DUPS
|
setopt HIST_IGNORE_DUPS
|
||||||
setopt HIST_VERIFY
|
setopt HIST_VERIFY
|
||||||
|
|
||||||
# ---------------------------------------------------------------
|
|
||||||
# Corrección y calidad de vida
|
|
||||||
# ---------------------------------------------------------------
|
|
||||||
setopt AUTO_CD
|
setopt AUTO_CD
|
||||||
setopt CORRECT
|
setopt CORRECT
|
||||||
setopt COMPLETE_ALIASES
|
setopt COMPLETE_ALIASES
|
||||||
|
|
||||||
# ---------------------------------------------------------------
|
# ---------------------------------------------------------------
|
||||||
# Alias útiles — Comandos abreviados para velocidad
|
# Preferencias básicas
|
||||||
|
# ---------------------------------------------------------------
|
||||||
|
export CLICOLOR=1
|
||||||
|
export LSCOLORS="GxFxCxDxBxegedabagacad"
|
||||||
|
export EDITOR="nano"
|
||||||
|
|
||||||
|
# ---------------------------------------------------------------
|
||||||
|
# Alias — accesos rápidos de uso frecuente
|
||||||
# ---------------------------------------------------------------
|
# ---------------------------------------------------------------
|
||||||
alias ll="ls -lah"
|
alias ll="ls -lah"
|
||||||
alias gs="git status"
|
alias gs="git status -sb"
|
||||||
|
alias gl="git log --oneline --graph --decorate"
|
||||||
alias gc="git commit"
|
alias gc="git commit"
|
||||||
alias gp="git push"
|
alias gp="git push"
|
||||||
alias d="docker"
|
alias d="docker"
|
||||||
alias dc="docker compose"
|
alias dc="docker compose"
|
||||||
|
alias reload-zsh="source ~/.zshrc"
|
||||||
|
alias portainer="open https://localhost:9443"
|
||||||
|
alias ytv='yt-dlp -P "$HOME/videos/youtube"'
|
||||||
|
alias ytm='yt-dlp -x --audio-format mp3 --audio-quality 0 -o "%(title)s.%(ext)s" -P "$HOME/musica/youtube"'
|
||||||
|
|
||||||
# ---------------------------------------------------------------
|
# ---------------------------------------------------------------
|
||||||
# Docker + Portainer
|
# Integraciones opcionales
|
||||||
# ---------------------------------------------------------------
|
# ---------------------------------------------------------------
|
||||||
alias portainer="open http://localhost:9000"
|
if command -v direnv >/dev/null 2>&1; then
|
||||||
|
eval "$(direnv hook zsh)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# ---------------------------------------------------------------
|
||||||
|
# Ayuda rápida de Vanity Shell
|
||||||
|
# ---------------------------------------------------------------
|
||||||
|
help() {
|
||||||
|
cat <<'EOF'
|
||||||
|
Vanity Shell — comandos rápidos:
|
||||||
|
ytv <url> -> Descarga el video completo en ~/videos/youtube
|
||||||
|
ytm <url> -> Descarga solo el audio (mp3) en ~/musica/youtube
|
||||||
|
|
||||||
|
Ejemplos:
|
||||||
|
ytv https://youtu.be/videoID
|
||||||
|
ytm https://youtu.be/trackID
|
||||||
|
|
||||||
|
Recuerda que ambos comandos requieren yt-dlp/ffmpeg instalados (el setup ya los incluye).
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|||||||
83
readme.md
83
readme.md
@@ -1,19 +1,82 @@
|
|||||||
# VanityOS Shell — macOS Developer Setup 🚀
|
# VanityOS Shell — macOS Developer Setup 🚀
|
||||||
|
|
||||||
VanityOS Shell es el instalador oficial para preparar un entorno de desarrollo en macOS con:
|
Automatiza en pocos minutos un entorno de desarrollo moderno para macOS. VanityOS Shell instala Zsh optimizado, Oh My Posh, utilidades CLI esenciales, Docker Desktop con Portainer y Lazydocker, dejando tu `.zshrc` listo para trabajar.
|
||||||
|
|
||||||
- ZSH optimizado (Oh My Zsh + Oh My Posh)
|
|
||||||
- Plugins profesionales de terminal
|
|
||||||
- Node, Python, Git, y herramientas CLI esenciales
|
|
||||||
- Docker Desktop + Portainer
|
|
||||||
- Lazydocker
|
|
||||||
- Configuración `.zshrc` lista para usarse
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 📦 Instalación
|
## ✨ Qué incluye
|
||||||
|
- Homebrew configurado para Apple Silicon o Intel.
|
||||||
|
- Zsh + Oh My Zsh con plugins (`zsh-autosuggestions`, `zsh-syntax-highlighting`, `zsh-completions`).
|
||||||
|
- Oh My Posh (tema Catppuccin) + fuente Meslo Nerd Font.
|
||||||
|
- Node.js, Python, Git, direnv y herramientas base de terminal.
|
||||||
|
- yt-dlp + ffmpeg para descargas directas desde YouTube (video y audio).
|
||||||
|
- Docker Desktop, Lazydocker y despliegue automático de Portainer CE.
|
||||||
|
- Archivo `.zshrc` documentado para seguir personalizando tu shell.
|
||||||
|
|
||||||
Ejecuta este comando en tu terminal:
|
## ✅ Requisitos previos
|
||||||
|
- macOS 12+ (Intel o Apple Silicon).
|
||||||
|
- Conexión estable a internet y espacio libre (~5 GB para Docker).
|
||||||
|
- Se recomienda instalar las Xcode Command Line Tools antes de iniciar:
|
||||||
|
```bash
|
||||||
|
xcode-select --install
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🚀 Instalación rápida
|
||||||
|
Ejecuta el instalador directamente desde la terminal (usa bash, no zsh):
|
||||||
```bash
|
```bash
|
||||||
curl -fsSL https://raw.githubusercontent.com/marcogll/mac_vntySet/main/vanity_setup.sh | bash
|
curl -fsSL https://raw.githubusercontent.com/marcogll/mac_vntySet/main/vanity_setup.sh | bash
|
||||||
|
```
|
||||||
|
El script muestra un menú para elegir qué componentes instalar.
|
||||||
|
|
||||||
|
## 🧩 Opciones del menú
|
||||||
|
| Opción | Descripción | Incluye |
|
||||||
|
|--------|-------------|---------|
|
||||||
|
| `A` | Instalación completa (recomendada). | Homebrew + stack Zsh + Docker/Portainer/Lazydocker. |
|
||||||
|
| `C` | Solo configura la terminal. | Homebrew + Zsh, Oh My Zsh, Oh My Posh, utilidades CLI. |
|
||||||
|
| `D` | Solo herramientas de contenedores. | Homebrew + Docker Desktop, Portainer, Lazydocker. |
|
||||||
|
| `Q` | Salir. | — |
|
||||||
|
|
||||||
|
## 🔧 Detalles de la configuración Zsh
|
||||||
|
- Copia `~/.zshrc` desde `.zshrc.example` (incluye comentarios en español).
|
||||||
|
- Instala los plugins necesarios y refresca sus repositorios si ya existen.
|
||||||
|
- Coloca el tema Catppuccin en `~/.poshthemes` y activa Oh My Posh automáticamente.
|
||||||
|
- Copia `source ~/.zshrc` al portapapeles para que puedas recargar la shell al finalizar.
|
||||||
|
- Genera los directorios `~/videos/youtube` y `~/musica/youtube` y define alias listos para descargar con `ytv <url>` (video completo) y `ytm <url>` (solo audio MP3).
|
||||||
|
- Añade un comando `help` dentro de Zsh que describe el uso de estos alias.
|
||||||
|
|
||||||
|
## 🐳 Stack Docker + Portainer
|
||||||
|
1. Instala Docker Desktop via Homebrew Cask.
|
||||||
|
2. Inicia la app automáticamente y espera a que el daemon esté listo.
|
||||||
|
3. Instala Lazydocker (`brew install lazydocker`).
|
||||||
|
4. Lanza Portainer CE con los puertos `8000` y `9443`. Acceso: `https://localhost:9443`.
|
||||||
|
|
||||||
|
> Si Docker Desktop aún no ha terminado de iniciar, el script dejará Portainer pendiente y te indicará que abras la app manualmente y ejecutes de nuevo la opción `D`.
|
||||||
|
|
||||||
|
## ✅ Verificación rápida
|
||||||
|
- Recargar Zsh: `source ~/.zshrc`
|
||||||
|
- Comprobar Oh My Posh: el prompt debe mostrar colores y símbolos; si no, ejecuta `oh-my-posh init zsh --config ~/.poshthemes/catppuccin.omp.json`.
|
||||||
|
- Verificar Docker: `docker info`
|
||||||
|
- Confirmar Portainer: abre `https://localhost:9443` en el navegador.
|
||||||
|
- Lanzar Lazydocker: `lazydocker`
|
||||||
|
- Descargar un video de prueba: `ytv https://youtu.be/<ID>`
|
||||||
|
- Descargar solo audio: `ytm https://youtu.be/<ID>`
|
||||||
|
- Ver ayuda rápida: ejecuta `help`
|
||||||
|
|
||||||
|
## 🧰 Personalización
|
||||||
|
- Edita `~/.zshrc` para añadir alias o funciones propios; el archivo viene por secciones comentadas.
|
||||||
|
- Cambia el tema de Oh My Posh apuntando a otro `.omp.json` (guárdalo en `~/.poshthemes`).
|
||||||
|
- Añade paquetes con `brew install <formula>`; el shell ya tiene Homebrew disponible.
|
||||||
|
|
||||||
|
## ❗️ Solución de problemas
|
||||||
|
- **“command not found: brew”**: ejecuta `eval "$(/opt/homebrew/bin/brew shellenv)"` (o `/usr/local/bin/brew`) y vuelve a correr la opción deseada.
|
||||||
|
- **Docker no arranca**: abre manualmente Docker Desktop desde Launchpad y espera a que el icono indique “Running” antes de reintentar la opción `D`.
|
||||||
|
- **Oh My Posh sin fuente correcta**: instala Meslo manualmente desde `~/Library/Fonts` o selecciona *Meslo LG S DZ Nerd Font* en tu terminal.
|
||||||
|
- **Conflictos con un `.zshrc` previo**: el instalador hace backup implícito sobrescribiendo `~/.zshrc`. Asegúrate de versionar tu archivo antes si necesitas conservarlo.
|
||||||
|
|
||||||
|
## 🧽 Desinstalación rápida
|
||||||
|
- Elimina Portainer: `docker stop portainer && docker rm portainer && docker volume rm portainer_data`.
|
||||||
|
- Borra la config Zsh (opcional): `rm -rf ~/.oh-my-zsh ~/.poshthemes ~/.zshrc`.
|
||||||
|
- Desinstala apps con Homebrew: `brew uninstall --cask docker` o `brew uninstall lazydocker oh-my-posh`.
|
||||||
|
|
||||||
|
## 📄 Licencia
|
||||||
|
Distribuido bajo la licencia MIT. Consulta `LICENSE` para más detalles.
|
||||||
|
|||||||
201
vanity_setup.sh
201
vanity_setup.sh
@@ -1,84 +1,142 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
set -e
|
set -euo pipefail
|
||||||
|
|
||||||
clear
|
readonly POSH_THEME_URL="https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/catppuccin.omp.json"
|
||||||
echo ""
|
readonly ZSHRC_URL="https://raw.githubusercontent.com/marcogll/mac_vntySet/main/.zshrc.example"
|
||||||
echo "=============================================="
|
readonly POSH_THEME_PATH="$HOME/.poshthemes/catppuccin.omp.json"
|
||||||
echo " V A N I T Y S H E L L"
|
|
||||||
echo " macOS Development Installer"
|
|
||||||
echo "=============================================="
|
|
||||||
echo ""
|
|
||||||
|
|
||||||
echo "Selecciona una opción:"
|
if [[ "$(uname -s)" != "Darwin" ]]; then
|
||||||
echo " A) Instalar TODO (recomendado)"
|
echo "Este instalador solo funciona en macOS." >&2
|
||||||
echo " C) Instalar solo configuración ZSH"
|
exit 1
|
||||||
echo " D) Instalar Docker + Portainer + Lazydocker"
|
fi
|
||||||
echo " Q) Salir"
|
|
||||||
echo ""
|
|
||||||
read -p "Opción [A/C/D/Q]: " choice
|
|
||||||
choice=${choice:-A}
|
|
||||||
|
|
||||||
|
trap 'echo -e "\nSe produjo un error. Revisa los mensajes anteriores para más detalles." >&2' ERR
|
||||||
|
|
||||||
|
BREW_BIN=""
|
||||||
|
|
||||||
|
ensure_brew_shellenv() {
|
||||||
|
if command -v brew >/dev/null 2>&1; then
|
||||||
|
BREW_BIN=$(command -v brew)
|
||||||
|
eval "$("$BREW_BIN" shellenv)"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
for candidate in /opt/homebrew/bin/brew /usr/local/bin/brew; do
|
||||||
|
if [ -x "$candidate" ]; then
|
||||||
|
BREW_BIN="$candidate"
|
||||||
|
eval "$("$BREW_BIN" shellenv)"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
install_homebrew() {
|
install_homebrew() {
|
||||||
if ! command -v brew >/dev/null 2>&1; then
|
if [ -z "$BREW_BIN" ] && [ ! -x /opt/homebrew/bin/brew ] && [ ! -x /usr/local/bin/brew ]; then
|
||||||
echo "Instalando Homebrew…"
|
echo "Instalando Homebrew…"
|
||||||
NONINTERACTIVE=1 /bin/bash -c \
|
NONINTERACTIVE=1 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
||||||
"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
fi
|
||||||
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile
|
|
||||||
eval "$(/opt/homebrew/bin/brew shellenv)"
|
ensure_brew_shellenv
|
||||||
else
|
|
||||||
echo "Homebrew ya está instalado."
|
if [ -n "$BREW_BIN" ]; then
|
||||||
|
local shell_line="eval \"\$($BREW_BIN shellenv)\""
|
||||||
|
if ! grep -qsF "$shell_line" "$HOME/.zprofile" 2>/dev/null; then
|
||||||
|
printf '%s\n' "$shell_line" >> "$HOME/.zprofile"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
brew update
|
brew update
|
||||||
}
|
}
|
||||||
|
|
||||||
install_zsh_config() {
|
install_cli_dependencies() {
|
||||||
echo "Instalando ZSH base…"
|
echo "Instalando herramientas base de desarrollo…"
|
||||||
brew install zsh curl wget git yq jq xclip node python
|
brew install zsh curl wget git jq yq node python go direnv yt-dlp ffmpeg
|
||||||
|
|
||||||
echo "Instalando Oh My Zsh…"
|
echo "Instalando Oh My Posh y fuentes Nerd Font…"
|
||||||
|
brew tap homebrew/cask-fonts >/dev/null 2>&1 || true
|
||||||
|
brew install --cask font-meslo-lg-nerd-font
|
||||||
|
brew install jandedobbeleer/oh-my-posh/oh-my-posh
|
||||||
|
}
|
||||||
|
|
||||||
|
setup_media_dirs() {
|
||||||
|
mkdir -p "$HOME/videos/youtube" "$HOME/musica/youtube"
|
||||||
|
}
|
||||||
|
|
||||||
|
install_oh_my_zsh() {
|
||||||
|
echo "Instalando Oh My Zsh y plugins…"
|
||||||
if [ ! -d "$HOME/.oh-my-zsh" ]; then
|
if [ ! -d "$HOME/.oh-my-zsh" ]; then
|
||||||
RUNZSH=no CHSH=no KEEP_ZSHRC=yes \
|
RUNZSH=no CHSH=no KEEP_ZSHRC=yes \
|
||||||
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
|
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Instalando plugins…"
|
mkdir -p "$HOME/.oh-my-zsh/custom/plugins"
|
||||||
mkdir -p ~/.oh-my-zsh/custom/plugins
|
|
||||||
|
|
||||||
repos=(
|
local repos=(
|
||||||
"zsh-users/zsh-autosuggestions"
|
"zsh-users/zsh-autosuggestions"
|
||||||
"zsh-users/zsh-syntax-highlighting"
|
"zsh-users/zsh-syntax-highlighting"
|
||||||
"zsh-users/zsh-completions"
|
"zsh-users/zsh-completions"
|
||||||
)
|
)
|
||||||
|
|
||||||
for r in "${repos[@]}"; do
|
for repo in "${repos[@]}"; do
|
||||||
folder=$(basename "$r")
|
local destination="$HOME/.oh-my-zsh/custom/plugins/$(basename "$repo")"
|
||||||
if [ ! -d "$HOME/.oh-my-zsh/custom/plugins/$folder" ]; then
|
if [ -d "$destination/.git" ]; then
|
||||||
git clone https://github.com/$r ~/.oh-my-zsh/custom/plugins/$folder
|
git -C "$destination" pull --ff-only >/dev/null 2>&1 || true
|
||||||
|
else
|
||||||
|
git clone "https://github.com/${repo}.git" "$destination"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
install_zsh_config() {
|
||||||
|
install_cli_dependencies
|
||||||
|
install_oh_my_zsh
|
||||||
|
setup_media_dirs
|
||||||
|
|
||||||
|
echo "Configurando Oh My Posh…"
|
||||||
|
mkdir -p "$HOME/.poshthemes"
|
||||||
|
curl -fsSL "$POSH_THEME_URL" -o "$POSH_THEME_PATH"
|
||||||
|
|
||||||
|
echo "Descargando .zshrc de Vanity Shell…"
|
||||||
|
if ! curl -fsSL "$ZSHRC_URL" -o "$HOME/.zshrc"; then
|
||||||
|
echo "No se pudo descargar la configuración de ZSH." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if command -v pbcopy >/dev/null 2>&1; then
|
||||||
|
echo "source ~/.zshrc" | pbcopy
|
||||||
|
echo "El comando 'source ~/.zshrc' fue copiado al portapapeles."
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Configuración de ZSH instalada correctamente."
|
||||||
|
}
|
||||||
|
|
||||||
|
ensure_docker_daemon() {
|
||||||
|
if ! command -v docker >/dev/null 2>&1; then
|
||||||
|
echo "El CLI de Docker no está disponible todavía." >&2
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if docker info >/dev/null 2>&1; then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if command -v open >/dev/null 2>&1; then
|
||||||
|
echo "Iniciando Docker Desktop…"
|
||||||
|
open -g -a Docker >/dev/null 2>&1 || true
|
||||||
|
else
|
||||||
|
echo "Abre Docker Desktop manualmente para continuar." >&2
|
||||||
|
fi
|
||||||
|
|
||||||
|
for _ in {1..20}; do
|
||||||
|
sleep 6
|
||||||
|
if docker info >/dev/null 2>&1; then
|
||||||
|
return 0
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
echo "Instalando Oh My Posh…"
|
echo "Docker Desktop no está listo. Abre la aplicación y vuelve a ejecutar la opción D." >&2
|
||||||
brew install jandedobbeleer/oh-my-posh/oh-my-posh
|
return 1
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
echo "Descargando tu .zshrc.example…"
|
|
||||||
curl -fsSL https://raw.githubusercontent.com/marcogll/mac_vntySet/main/.zshrc.example \
|
|
||||||
-o ~/.zshrc
|
|
||||||
|
|
||||||
echo "source ~/.zshrc" | pbcopy
|
|
||||||
echo ""
|
|
||||||
echo "Tu configuración ZSH está instalada."
|
|
||||||
echo "El comando 'source ~/.zshrc' ya está copiado al portapapeles."
|
|
||||||
echo ""
|
|
||||||
}
|
}
|
||||||
|
|
||||||
install_docker_stack() {
|
install_docker_stack() {
|
||||||
@@ -88,8 +146,13 @@ install_docker_stack() {
|
|||||||
echo "Instalando Lazydocker…"
|
echo "Instalando Lazydocker…"
|
||||||
brew install lazydocker
|
brew install lazydocker
|
||||||
|
|
||||||
echo "Instalando Portainer…"
|
if ! ensure_docker_daemon; then
|
||||||
docker volume create portainer_data || true
|
echo "Se omitió Portainer porque Docker no está operativo."
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Desplegando Portainer…"
|
||||||
|
docker volume create portainer_data >/dev/null 2>&1 || true
|
||||||
docker stop portainer >/dev/null 2>&1 || true
|
docker stop portainer >/dev/null 2>&1 || true
|
||||||
docker rm portainer >/dev/null 2>&1 || true
|
docker rm portainer >/dev/null 2>&1 || true
|
||||||
|
|
||||||
@@ -99,11 +162,19 @@ install_docker_stack() {
|
|||||||
--restart=always \
|
--restart=always \
|
||||||
-v /var/run/docker.sock:/var/run/docker.sock \
|
-v /var/run/docker.sock:/var/run/docker.sock \
|
||||||
-v portainer_data:/data \
|
-v portainer_data:/data \
|
||||||
portainer/portainer-ce:latest
|
portainer/portainer-ce:latest >/dev/null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
main_menu() {
|
||||||
case "$choice" in
|
echo "Selecciona una opción:"
|
||||||
|
echo " A) Instalar TODO (recomendado)"
|
||||||
|
echo " C) Instalar solo configuración ZSH"
|
||||||
|
echo " D) Instalar Docker + Portainer + Lazydocker"
|
||||||
|
echo " Q) Salir"
|
||||||
|
echo ""
|
||||||
|
read -r -p "Opción [A/C/D/Q]: " choice
|
||||||
|
echo ""
|
||||||
|
case "${choice:-A}" in
|
||||||
A|a)
|
A|a)
|
||||||
install_homebrew
|
install_homebrew
|
||||||
install_zsh_config
|
install_zsh_config
|
||||||
@@ -122,13 +193,23 @@ case "$choice" in
|
|||||||
exit 0
|
exit 0
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo "Opción inválida."
|
echo "Opción inválida." >&2
|
||||||
exit 1
|
exit 1
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
clear
|
||||||
|
cat <<'BANNER'
|
||||||
|
==============================================
|
||||||
|
V A N I T Y S H E L L
|
||||||
|
macOS Development Installer
|
||||||
|
==============================================
|
||||||
|
BANNER
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
|
main_menu
|
||||||
|
|
||||||
echo "=============================================="
|
echo "=============================================="
|
||||||
echo " Instalación completada."
|
echo " Instalación completada."
|
||||||
echo "=============================================="
|
echo "=============================================="
|
||||||
|
|||||||
Reference in New Issue
Block a user