feat: Add automatic terminal font configuration and switch Docker setup from Colima to Docker Desktop.

This commit is contained in:
Marco Gallegos
2025-11-20 23:11:37 -06:00
parent f7b7a98558
commit 81e3f6de1e
3 changed files with 60 additions and 42 deletions

View File

@@ -146,7 +146,6 @@ alias dps='docker ps -a'
alias di='docker images' alias di='docker images'
alias dex='docker exec -it' alias dex='docker exec -it'
alias dlog='docker logs -f' alias dlog='docker logs -f'
alias colima-start='colima start --cpu 4 --memory 8 --disk 60'
# --- NPM ------------------------------------------------------------------ # --- NPM ------------------------------------------------------------------
alias nrs='npm run start' alias nrs='npm run start'
@@ -269,7 +268,6 @@ fi
vanity_help() { vanity_help() {
cat <<EOF cat <<EOF
Comandos claves: Comandos claves:
colima-start - Arranca el daemon Docker (sin Desktop)
ytv / ytm / ytls - Descargas con yt-dlp ytv / ytm / ytls - Descargas con yt-dlp
venv create/on/off - Manejo rapido de entornos Python venv create/on/off - Manejo rapido de entornos Python
mkcd / extract / killport / serve - Utilidades basicas mkcd / extract / killport / serve - Utilidades basicas

View File

@@ -1,6 +1,6 @@
# VanityOS Shell — macOS Developer Setup 🚀 # VanityOS Shell — macOS Developer Setup 🚀
Automatiza en pocos minutos un entorno de desarrollo moderno para macOS. VanityOS Shell instala Zsh optimizado, Oh My Posh, utilidades CLI esenciales, Docker CLI (sin Desktop) con Colima, Portainer y Lazydocker, dejando tu `.zshrc` listo para trabajar. Automatiza en pocos minutos un entorno de desarrollo moderno para macOS. VanityOS Shell instala Zsh optimizado, Oh My Posh, utilidades CLI esenciales, Docker CLI (requiere daemon externo) con Portainer y Lazydocker, dejando tu `.zshrc` listo para trabajar.
--- ---
@@ -10,7 +10,8 @@ Automatiza en pocos minutos un entorno de desarrollo moderno para macOS. VanityO
- Oh My Posh (tema Catppuccin) + fuente Meslo Nerd Font. - Oh My Posh (tema Catppuccin) + fuente Meslo Nerd Font.
- Node.js, Python, Git, direnv y herramientas base de terminal. - Node.js, Python, Git, direnv y herramientas base de terminal.
- yt-dlp + ffmpeg para descargas directas desde YouTube (video y audio). - yt-dlp + ffmpeg para descargas directas desde YouTube (video y audio).
- Docker CLI, Colima, Lazydocker y despliegue automático de Portainer CE. - Docker CLI, Lazydocker y despliegue automático de Portainer CE (con Docker Desktop preinstalado y arrancado).
- Ajusta automáticamente la fuente de la app Terminal a Meslo Nerd Font para que Oh My Posh muestre los iconos correctamente.
- Archivo `.zshrc` documentado para seguir personalizando tu shell. - Archivo `.zshrc` documentado para seguir personalizando tu shell.
## ✅ Requisitos previos ## ✅ Requisitos previos
@@ -31,9 +32,9 @@ El script muestra un menú para elegir qué componentes instalar.
## 🧩 Opciones del menú ## 🧩 Opciones del menú
| Opción | Descripción | Incluye | | Opción | Descripción | Incluye |
|--------|-------------|---------| |--------|-------------|---------|
| `A` | Instalación completa (recomendada). | Homebrew + stack Zsh + Docker CLI/Colima/Portainer/Lazydocker. | | `A` | Instalación completa (recomendada). | Homebrew + stack Zsh + Docker CLI/Portainer/Lazydocker. |
| `C` | Solo configura la terminal. | Homebrew + Zsh, Oh My Zsh, Oh My Posh, utilidades CLI. | | `C` | Solo configura la terminal. | Homebrew + Zsh, Oh My Zsh, Oh My Posh, utilidades CLI. |
| `D` | Solo herramientas de contenedores. | Homebrew + Docker CLI, Colima, Portainer, Lazydocker. | | `D` | Solo herramientas de contenedores. | Homebrew + Docker CLI, Portainer, Lazydocker. |
| `Q` | Salir. | — | | `Q` | Salir. | — |
## 🔧 Detalles de la configuración Zsh ## 🔧 Detalles de la configuración Zsh
@@ -43,18 +44,19 @@ El script muestra un menú para elegir qué componentes instalar.
- Copia `source ~/.zshrc` al portapapeles para que puedas recargar la shell al finalizar. - 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). - 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. - Añade un comando `help` dentro de Zsh que describe el uso de estos alias.
- Cambia la fuente predeterminada de la app Terminal a *MesloLGS Nerd Font* (tamaño 14) para que los iconos de Oh My Posh se vean bien desde el primer arranque.
## 🐳 Stack Docker + Portainer (sin Desktop) ## 🐳 Stack Docker + Portainer
1. Instala el Docker CLI oficial (`brew install docker docker-buildx docker-compose`). 1. Instala el Docker CLI oficial (`brew install docker docker-buildx docker-compose`) y `lazydocker`.
2. Instala Colima, que levanta el daemon de Docker usando Hypervisor.framework. 2. Instala Docker Desktop vía Homebrew Cask y lo abre automáticamente.
3. Intenta iniciar Colima automáticamente con `colima start --cpu 4 --memory 8 --disk 60`. 3. Espera a que Docker Desktop termine de iniciar (el script consulta `docker info` hasta tener respuesta).
4. Instala Lazydocker (`brew install lazydocker`). 4. Cuando el daemon está listo, despliega Portainer CE publicando `8000` y `9443` (`https://localhost:9443`).
5. Despliega Portainer CE con los puertos `8000` y `9443`. Acceso: `https://localhost:9443`.
> Si Colima no logra iniciar (por ejemplo, porque falta el permiso de virtualización), el script salta Portainer y te recuerda ejecutar `colima start` manualmente antes de volver a elegir la opción `D`. > Si Docker Desktop no termina de arrancar, el instalador lo indicará y deberás abrir la app manualmente antes de volver a elegir la opción `D`.
## ✅ Verificación rápida ## ✅ Verificación rápida
- Recargar Zsh: `source ~/.zshrc` - Recargar Zsh: `source ~/.zshrc`
- Cierra y vuelve a abrir Terminal: la fuente debe ser MesloLGS Nerd Font con los iconos correctos en el prompt.
- 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`. - 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` - Verificar Docker: `docker info`
- Confirmar Portainer: abre `https://localhost:9443` en el navegador. - Confirmar Portainer: abre `https://localhost:9443` en el navegador.
@@ -70,14 +72,14 @@ El script muestra un menú para elegir qué componentes instalar.
## ❗️ Solución de problemas ## ❗️ 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. - **“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**: ejecuta `colima start` (o `colima status` para verificar) y vuelve a lanzar la opción `D` cuando `docker info` funcione. - **Docker no arranca**: abre Docker Desktop y espera a que muestre “Running”; luego ejecuta `docker info` y repite 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. - **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. - **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 ## 🧽 Desinstalación rápida
- Elimina Portainer: `docker stop portainer && docker rm portainer && docker volume rm portainer_data`. - 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`. - Borra la config Zsh (opcional): `rm -rf ~/.oh-my-zsh ~/.poshthemes ~/.zshrc`.
- Desinstala apps con Homebrew: `brew uninstall docker colima lazydocker oh-my-posh`. - Desinstala apps con Homebrew: `brew uninstall docker docker-buildx docker-compose lazydocker oh-my-posh` y `brew uninstall --cask docker`.
## 📄 Licencia ## 📄 Licencia
Distribuido bajo la licencia MIT. Consulta `LICENSE` para más detalles. Distribuido bajo la licencia MIT. Consulta `LICENSE` para más detalles.

View File

@@ -77,6 +77,25 @@ setup_media_dirs() {
mkdir -p "$HOME/videos/youtube" "$HOME/musica/youtube" mkdir -p "$HOME/videos/youtube" "$HOME/musica/youtube"
} }
configure_terminal_font() {
if ! command -v osascript >/dev/null 2>&1; then
return
fi
local font_name="MesloLGS Nerd Font"
echo "Configurando Terminal para usar la fuente $font_name"
/usr/bin/osascript <<EOF >/dev/null 2>&1
tell application "Terminal"
try
set font name of default settings to "$font_name"
set font size of default settings to 14
set font name of startup settings to "$font_name"
set font size of startup settings to 14
end try
end tell
EOF
}
install_oh_my_zsh() { install_oh_my_zsh() {
echo "Instalando Oh My Zsh y plugins…" echo "Instalando Oh My Zsh y plugins…"
if [ ! -d "$HOME/.oh-my-zsh" ]; then if [ ! -d "$HOME/.oh-my-zsh" ]; then
@@ -106,6 +125,7 @@ install_zsh_config() {
install_cli_dependencies install_cli_dependencies
install_oh_my_zsh install_oh_my_zsh
setup_media_dirs setup_media_dirs
configure_terminal_font
echo "Configurando Oh My Posh…" echo "Configurando Oh My Posh…"
mkdir -p "$HOME/.poshthemes" mkdir -p "$HOME/.poshthemes"
@@ -136,43 +156,40 @@ ensure_docker_daemon() {
fi fi
echo "No se detectó un demonio de Docker en ejecución." >&2 echo "No se detectó un demonio de Docker en ejecución." >&2
echo "Asegúrate de tener un entorno Docker corriendo (Colima, OrbStack, Docker Desktop, etc)." >&2 echo "Asegúrate de que Docker Desktop, OrbStack u otro daemon remoto esté activo." >&2
return 1 return 1
} }
ensure_colima_daemon() { wait_for_docker_desktop() {
if ensure_docker_daemon; then local attempts=0
local max_attempts=40
local delay=5
echo "Esperando a que Docker Desktop termine de iniciar…"
while (( attempts < max_attempts )); do
if docker info >/dev/null 2>&1; then
echo "Docker Desktop está operativo."
return 0 return 0
fi fi
sleep "$delay"
attempts=$((attempts + 1))
done
if ! command -v colima >/dev/null 2>&1; then echo "Docker Desktop no respondió después de $((max_attempts * delay)) segundos." >&2
echo "Colima no está instalado; no se puede iniciar un daemon Docker automáticamente." >&2
return 1 return 1
fi
if colima status >/dev/null 2>&1; then
docker context use colima >/dev/null 2>&1 || true
else
echo "Iniciando daemon de Docker con Colima…"
if ! colima start --cpu 4 --memory 8 --disk 60; then
echo "No se pudo iniciar Colima automáticamente; ejecútalo manualmente con 'colima start'." >&2
return 1
fi
fi
sleep 2
docker context use colima >/dev/null 2>&1 || true
ensure_docker_daemon
return $?
} }
install_docker_stack() { install_docker_stack() {
echo "Instalando Docker CLI y utilidades…" echo "Instalando Docker CLI y utilidades…"
brew install docker docker-buildx docker-compose lazydocker colima brew install docker docker-buildx docker-compose lazydocker
brew install --cask docker
if ! ensure_colima_daemon; then echo "Abriendo Docker Desktop…"
echo "Se omitió Portainer porque no hay un daemon Docker en ejecución." >&2 open -gj -a Docker || open -a Docker || true
echo "Sugerencia: inicia Colima manualmente con 'colima start' y vuelve a ejecutar la opción D." >&2
if ! wait_for_docker_desktop; then
echo "Se omitió Portainer porque Docker Desktop no está listo." >&2
echo "Abre Docker Desktop manualmente y vuelve a ejecutar la opción D." >&2
return return
fi fi
@@ -234,8 +251,9 @@ BANNER
echo "" echo ""
main_menu main_menu
echo "==============================================" echo "=============================================="
echo " Instalación completada." echo " Instalación completada."
echo "==============================================" echo "=============================================="
echo "" echo ""
echo "Para aplicar la configuración ejecuta ahora:"
echo "source ~/.zshrc"