refactor: Improve setup script robustness, modularity, and Docker handling, and remove example zshrc.

This commit is contained in:
Marco Gallegos
2025-11-20 22:34:09 -06:00
parent 0113563541
commit a8e83206fd
3 changed files with 312 additions and 205 deletions

View File

@@ -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.
# Este archivo será copiado a ~/.zshrc por vanity_setup.sh.
# Incluye: Oh My Zsh, Oh My Posh, plugins, historial, alias y funciones.
# Vanity Shell — Configuración base para Zsh en macOS
# ---------------------------------------------------------------
# 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"
ZSH_THEME="robbyrussell"
ZSH_THEME="robbyrussell" # el prompt real lo gestiona Oh My Posh
# Lista de plugins para mejorar la experiencia de ZSH.
plugins=(
git sudo history colorize
docker docker-compose
@@ -103,38 +36,68 @@ plugins=(
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
SAVEHIST=50000
HISTFILE=~/.zsh_history
setopt SHARE_HISTORY
setopt HIST_IGNORE_SPACE
setopt HIST_IGNORE_DUPS
setopt HIST_VERIFY
# ---------------------------------------------------------------
# Corrección y calidad de vida
# ---------------------------------------------------------------
setopt AUTO_CD
setopt CORRECT
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 gs="git status"
alias gs="git status -sb"
alias gl="git log --oneline --graph --decorate"
alias gc="git commit"
alias gp="git push"
alias d="docker"
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
}