Dotfiles sincronizados
🔁 Por qué sincronizar tus dotfiles Link to heading
Mantener tus archivos de configuración (alias, .vimrc, .bashrc, .gitconfig, etc.) sincronizados entre tus equipos es una práctica poderosa en el entorno DevOps / SysAdmin:
- Te permite clonar tu configuración en una máquina nueva en minutos.
- Evita divergencias en equipos.
- Tiene respaldo en control de versiones (historial, rollback).
- Facilita colaboración (por ejemplo, compartir una configuración base con colegas).
Pero no todo es tan trivial: hay detalles como manejar secretos, diferencias por sistema operativo, permisos especiales y flujos seguros.
Herramientas comunes y elección Link to heading
Antes de sumergirnos, algunas herramientas populares:
| Herramienta / enfoque | Pros | Contras |
|---|---|---|
| Scripts caseros + symlinks | Simple, control total | Difícil de mantener a medida que crece |
| GNU Stow | Manejo modular con symlinks | Sin soporte para plantillas ni secretos |
yadm, rcm |
Foco en dotfiles, algunas funciones extra | Menos extensibles que herramientas dedicadas |
| Chezmoi | Plantillas, gestión de secretos, enfoque declarativo | Curva de aprendizaje inicial, requiere seguir ciertas convenciones |
Recomiendo usar
Chezmoicomo base, por su balance entre poder y usabilidad.
Paso a paso con Chezmoi Link to heading
1. Instalación Link to heading
La forma recomendada de instalar es:
sh -c "$(curl -fsLS get.chezmoi.io)"
2. Inicializar tu dotfiles localmente Link to heading
chezmoi init
Esto crea el repositorio fuente en ~/.local/share/chezmoi.
Luego agregás tus archivos:
chezmoi add ~/.zshrc
chezmoi add ~/.vimrc
Y podés editar con:
chezmoi edit ~/.zshrc
3. Commit y enlazar repositorio remoto Link to heading
Dentro del directorio fuente:
chezmoi cd
git init
git remote add origin <url_de_tu_repo>
git add .
git commit -m "Inicial dotfiles"
git push -u origin main
Así tu configuración queda versionada y disponible para otras máquinas.
4. Aplicar en otra máquina Link to heading
En el nuevo equipo:
chezmoi init --apply <tu_repo.git>
Luego:
chezmoi diff # para ver qué cambiaría
chezmoi apply # para aplicar los cambios
Y cuando actualices tu repositorio remoto:
chezmoi update
Todo esto está documentado en la guía rápida oficial.
Ajustes avanzados y buenas prácticas Link to heading
Manejar secretos Link to heading
No conviene subir contraseñas, llaves privadas o credenciales en texto plano. Chezmoi permite integración con administradores de contraseñas como 1Password, Bitwarden, LastPass, pass y KeePassXC o cifrado de archivos dentro del repositorio.
Plantillas y condicionales Link to heading
Podés usar plantillas (Go templates) para que una sola configuración adapte valores según la máquina (hostname, sistema operativo, variables).
Ignorar archivos Link to heading
Definí .chezmoiignore para excluir archivos del despliegue. También podés definir si un archivo se debe aplicar como symlink (enlace simbólico) o como una copia física en el sistema de archivos.
Rutina de edición segura Link to heading
En lugar de modificar directamente ~/.zshrc, usá:
chezmoi edit ~/.zshrc
o editá el archivo fuente y luego chezmoi apply. Esto evita inconsistencias.
⚠️ Tip: podés automatizar commit + push tras aplicar cambios configurándolo en chezmoi (ver documentación oficial).
Riesgos comunes Link to heading
-
Si no revisás con diff, podés sobrescribir configuraciones locales importantes.
-
No usar plantillas puede provocar que un archivo de una máquina sobrescriba otro con diferencias irrelevantes.
-
Si querés gestionar secretos y no lo hacés correctamente, podés exponer información sensible.
Flujo mínimo recomendado Link to heading
-
chezmoi add
-
chezmoi cd → git commit → git push
-
En otras máquinas: chezmoi init –apply
-
Al modificar dotfiles: usar chezmoi edit, luego chezmoi apply → commit → push
-
Mantener siempre chezmoi diff antes de aplicar cambios
🎯 Conclusión Link to heading
Sincronizar tus dotfiles no es solo comodidad: es una práctica que aporta reproducibilidad, orden y seguridad si se hace bien. Aunque hay herramientas más simples, Chezmoi te da una gran ventaja para escalar tu configuración entre múltiples máquinas, sin duplicaciones ni riesgos innecesarios.
Este post sirve como introducción. En próximas entregas vamos a profundizar en:
-
Ejemplos de plantillas avanzadas
-
Integración con CI/CD o contenedores
-
Gestión de secretos (GPG, 1Password, Bitwarden)