Este archivo mantiene las configuraciones sugeridas de algunas de las aplicaciones que usamos en Mikroways. La forma de instalar estos dotfiles es tan simple como ejecutar:
git clone https://github.com/Mikroways/dotfiles.git ~/.dotfiles-mw
~/.dotfiles-mw/script/installLuego de correr los comandos anteriores se configurarán algunos programas utilizados desde la consola como por ejemplo:
- zsh
- vim
- git
- tmux
Nota: si ya tenés archivos de configuración en tu home (
.gitconfig,.zshrc, etc.), el instalador los respalda automáticamente en./backup/antes de reemplazarlos con symlinks. Revisa el backup y migra manualmente lo que necesites (ver sección Personalizaciones de Mikroways y Usuario).
La idea es que cada integrante de Mikroways utilice este repositorio como punto de partida, pero personalice su ambiente como mejor le parezca, agregando nuevas configuraciones y proponiéndolas al repositorio raíz, compartiendo experiencias que nos hagan más eficientes en el día a día. Para ello se puede forkear este repositorio y cualquier contribución realizarla como un Pull Request.
Atención: el script
script/installcrea un symlink en el home del usuario para cada archivo del repo que no esté excluido explícitamente. Si agregás un archivo nuevo, revisáscript/installpara verificar que matchee alguna exclusión, o agregá una nueva. De lo contrario se va a copiar al home de todos los usuarios.
Las personalizaciones se pueden hacer en cascada de la siguiente forma:
- Primero se setean los valores por defecto en
.zshrc - Luego se personalizan los valores por defecto para Mikroways usando
.zshrc.mikroways - Finalmente, un usuario puede crear un archivo
.zshrc.userque idealmente conviene no versionarlo en este repositorio con las personalizaciones que desea sobreescribir - Respecto a los bundles de antigen, es posible aplicar personalizaciones con:
.zshrc.mikroways.antigen.bundlesy.zshrc.user.antigen.bundles
El archivo gitconfig.local contiene datos personales (nombre, email) y no
forma parte del repositorio. Debe crearse directamente en el home:
cp ~/.mikroways/dotfiles/gitconfig.local.sample ~/.gitconfig.localLuego editarlo con los datos reales:
[user]
name = Juan Perez
email = juan.perez@mikroways.netEl gitconfig del repo lo incluye automáticamente vía [include], por lo que
cualquier valor definido en ~/.gitconfig.local sobreescribe la configuración
compartida sin generar cambios en el repositorio.
Si manejás repos con identidades distintas (por ejemplo, repos personales con
un email distinto al de Mikroways), podés usar includeIf en
~/.gitconfig.local para aplicar config adicional según el contexto.
Cada archivo referenciado contiene solo los valores que difieren del default:
[user]
email = juan@personal.comHay dos enfoques:
-
Por carpeta (recomendado): si tenés una estructura de carpetas clara, por ejemplo
~/personal/para repos personales, podés usargitdirpara aplicar la config a cualquier repo ubicado dentro de esa carpeta:[includeIf "gitdir:~/personal/"] path = ~/.gitconfig.personal
-
Por URL del remote
Aplica la config a cualquier repo cuyo remote coincida con el patrón, sin importar dónde esté clonado. Hay que agregar un bloque por cada combinación de host y protocolo (SSH y HTTPS):
# Requiere git >= 2.36. # Organización en GitHub (SSH y HTTPS) [includeIf "hasconfig:remote.*.url:git@github.com:mi-org/**"] path = ~/.gitconfig.mi-org [includeIf "hasconfig:remote.*.url:https://github.com/mi-org/**"] path = ~/.gitconfig.mi-org # GitLab privado — en SSH el separador entre host y ruta es ":" en lugar de "/" [includeIf "hasconfig:remote.*.url:git@gitlab.empresa.com:**"] path = ~/.gitconfig.empresa [includeIf "hasconfig:remote.*.url:https://gitlab.empresa.com/**"] path = ~/.gitconfig.empresa
El gitconfig.local.sample incluye ambos ejemplos comentados.
- zshell autocomplete y configuraciones de ssh compartidas mediante mw-sshconfig-sync o simplemente usando el cliente de nextcloud.
- Conexión a las vpn de nuestros clientes usando mw-vpn. La idea es que cada usuario configure sus credenciales, pero ahorramos la forma de conectarte agnósticamente a cada cliente. Aún nos queda el autocomplete de este comando.
Al abrir una nueva terminal, se lanza en background un chequeo de actualizaciones
para todos los repositorios git bajo ~/.mikroways/. Si hay novedades, se
notifica al inicio de la próxima sesión de terminal.
- Una vez por día: el chequeo corre a lo sumo una vez diaria (controlado por
~/.mw-tools-upgrade.lock). - Solo ramas principales: los repositorios en una rama distinta a
mainomasterse reportan como advertencia pero no se actualizan automáticamente. - Sin cambios locales: si un repositorio tiene cambios sin commitear, se aborta la actualización y se avisa.
- Notificaciones diferidas: los avisos se muestran al abrir la siguiente
terminal, no mientras el chequeo corre en background. Hay dos tipos:
- Problemas (
.warn): cambios locales sin commitear, repo en rama no principal, errores de fetch/pull — persisten en cada terminal hasta que se resuelvan. - Actualizaciones (
.notify): repos actualizados correctamente — se muestran una sola vez y se eliminan automáticamente.
- Problemas (
| Comando | Descripción |
|---|---|
mw-tools-upgrade |
Chequea actualizaciones una vez por día (interactivo) |
mw-tools-upgrade -y |
Igual pero aplica automáticamente sin preguntar |
mw-tools-upgrade -v |
Muestra el output completo del fetch por repo |
mw-tools-force-upgrade |
Igual a mw-tools-upgrade pero ignora el lock diario — no hace falta borrar el lock manualmente |
mw-tools-force-upgrade -v |
Force + verbose |
| Archivo | Propósito |
|---|---|
~/.mw-tools-upgrade.lock |
Evita chequeos repetidos el mismo día |
~/.mw-tools-upgrade.warn |
Problemas que requieren acción (persiste hasta resolverlos) |
~/.mw-tools-upgrade.notify |
Notificación de repos actualizados (se elimina al mostrarse) |
~/.mw-tools-upgrade.log |
Log del último chequeo en background |
El comportamiento del sistema de updates está cubierto por test-updates.sh:
zsh test-updates.sh # corre todos los tests
zsh test-updates.sh -v # verbose: muestra estado de archivos y log en cada testDejamos algunos tips sobre vim que hemos configurado con estos dotfiles