refactor: externalize dotfiles to mg_dotfiles and cleanup local configs

This commit is contained in:
Marco Gallegos
2026-01-09 09:49:32 -06:00
parent 71679a6f15
commit 1e9949e887
105 changed files with 99 additions and 1013 deletions

View File

@@ -13,6 +13,9 @@ CYAN='\033[0;36m'
NC='\033[0m' # No Color
BOLD='\033[1m'
# Directorio de dotfiles personales
DOTFILES_DIR="${HOME}/Work/code/mg_dotfiles"
# Funciones de logging
_maybe_clear_spinner() {
if declare -F spinner_clear_line >/dev/null; then

View File

@@ -12,19 +12,19 @@ source "${SCRIPT_DIR}/icon_manager.sh"
run_module_main() {
log_step "Instalación de Configuración de Hyprland"
# --- 1. Copiar archivos de configuración ---
# La configuración de Hyprland debe estar en una carpeta 'hypr_config' en la raíz del repo
local source_dir="${SCRIPT_DIR}/../hypr_config"
# --- 1. Determinar origen de configuración ---
# Usar mg_dotfiles
local source_dir="${DOTFILES_DIR}/omarchy/hypr"
local dest_dir="$HOME/.config/hypr"
if [[ ! -d "$source_dir" ]]; then
log_error "No se encontró el directorio de configuración 'hypr_config' en la raíz del repositorio."
log_info "Asegúrate de que la carpeta con tu configuración se llame 'hypr_config'."
log_error "No se encontró la configuración en '${source_dir}'."
log_info "Asegúrate de tener clonado el repositorio 'mg_dotfiles' en la ruta esperada."
return 1
fi
# Crear copia de seguridad si ya existe una configuración
if [[ -d "$dest_dir" ]]; then
if [[ -d "$dest_dir" ]] && [[ ! -L "$dest_dir" ]]; then
local backup_dir="${dest_dir}.bak_$(date +%F_%T)"
log_warning "Configuración de Hyprland existente encontrada."
log_info "Creando copia de seguridad en: ${backup_dir}"
@@ -36,9 +36,15 @@ run_module_main() {
fi
fi
log_info "Copiando la configuración de Hyprland a ${dest_dir}..."
# Usamos rsync para una copia eficiente
rsync -a --info=progress2 "$source_dir/" "$dest_dir/"
log_info "Configurando Hyprland desde ${source_dir}..."
if [[ "$source_dir" == "${DOTFILES_DIR}/omarchy/hypr" ]]; then
log_info "Creando enlace simbólico a tus dotfiles personales..."
ln -sfn "$source_dir" "$dest_dir"
else
log_info "Copiando configuración local (rsync)..."
mkdir -p "$dest_dir"
rsync -a --info=progress2 "$source_dir/" "$dest_dir/"
fi
# --- 2. Establecer el tema de iconos por defecto ---
log_info "Estableciendo el tema de iconos por defecto (Tela Nord)..."

View File

@@ -144,44 +144,37 @@ install_zsh() {
ensure_omz_plugin "zsh-autosuggestions" "https://github.com/zsh-users/zsh-autosuggestions.git"
ensure_omz_plugin "zsh-syntax-highlighting" "https://github.com/zsh-users/zsh-syntax-highlighting.git"
# --- 3. Descargar y configurar el .zshrc personalizado ---
log_info "Actualizando configuración .zshrc..."
local repo_zshrc_path="${SCRIPT_DIR_ROOT}/.zshrc"
local tmp_download="${target_home}/.zshrc.omarchy-tmp"
local source_file=""
if zsh_download_with_timeout "${REPO_BASE}/.zshrc" "$tmp_download" && [[ -s "$tmp_download" ]]; then
source_file="$tmp_download"
log_success "Configuración .zshrc descargada desde el repositorio remoto."
else
rm -f "$tmp_download"
if [[ -f "$repo_zshrc_path" ]]; then
log_warning "No se pudo descargar .zshrc. Usando la copia local del repositorio."
source_file="$repo_zshrc_path"
else
log_error "No se pudo obtener la configuración .zshrc (sin red y sin copia local)."
return 1
fi
# --- 3. Enlazar configuración .zshrc ---
log_info "Configurando .zshrc..."
local repo_zshrc_path="${DOTFILES_DIR}/zsh/.zshrc"
local repo_help_path="${DOTFILES_DIR}/zsh/.zshrc.help"
local repo_funcs_path="${DOTFILES_DIR}/zsh/.zsh_functions"
if [[ ! -f "$repo_zshrc_path" ]]; then
log_error "No se encontró .zshrc en '${repo_zshrc_path}'."
return 1
fi
# Crear copia de seguridad antes de sobrescribir
backup_file "${target_home}/.zshrc" || { rm -f "$tmp_download"; return 1; }
# Crear copia de seguridad antes de proceder
backup_file "${target_home}/.zshrc" || return 1
if [[ "$source_file" == "$tmp_download" ]]; then
if mv "$tmp_download" "${target_home}/.zshrc"; then
log_success "Archivo .zshrc actualizado."
else
rm -f "$tmp_download"
log_error "No se pudo mover el archivo .zshrc descargado."
return 1
fi
else
if cp "$source_file" "${target_home}/.zshrc"; then
log_success "Archivo .zshrc actualizado desde la copia local."
else
log_error "No se pudo copiar la configuración .zshrc local."
return 1
fi
log_success "Enlazando .zshrc desde mg_dotfiles..."
ln -sf "$repo_zshrc_path" "${target_home}/.zshrc"
# Enlazar también el archivo de ayuda si existe
if [[ -f "$repo_help_path" ]]; then
ln -sf "$repo_help_path" "${target_home}/.zshrc.help"
fi
# Enlazar funciones si el directorio existe
if [[ -d "$repo_funcs_path" ]]; then
mkdir -p "${target_home}/.zsh_functions"
for func_file in "$repo_funcs_path"/*.zsh; do
if [[ -f "$func_file" ]]; then
ln -sf "$func_file" "${target_home}/.zsh_functions/$(basename "$func_file")"
fi
done
log_success "Funciones de Zsh enlazadas."
fi
# --- 4. Descargar el tema de Oh My Posh ---