web stats
Featured image of post Gestión de dotfiles con stow

Gestión de dotfiles con stow

Podemos gestionar nuestros dotfiles de manera muy cómoda y sencilla ayudándonos de la herramienta stow.

Antes de nada, conviene aclarar lo que entendemos por dotfiles. Se trata de los ficheros y directorios que encontramos en los sistemas Linux, los cuales mantienen la configuración a nivel de usuario de las aplicaciones. Estos ficheros suelen estar ocultos (con un . al inicio de su nombre), de ahí el hombre de “dot"files.

Es habitual subir estos ficheros a un repositorio de manera que si cambiamos de sistema, sea muy sencillo poder recuperar estos ficheros, y por consiguiente nuestra configuración de las aplicaciones.

Una manera muy cómoda de gestionar estos “backups”, es clonar nuestro repo en la máquina, y crear enlaces simbólicos directamente a los ficheros de los que queramos realizar la copia.

Vamos a ver como realizar este proceso desde cero, aprovechando la herramienta stow, la cual nos facilitará la gestion de nuestros enlaces simbólicos.

Crear repositorio para nuestros dotfiles

Lo primero es crear un repositorio (público o privado) donde alojaremos nuestros dotfiles. Personalmente, recomiendo Gitlab por encima de Github u otros servicios similares, por características y funcionalidades ofrecidas de manera gratuita.

Creamos el repo y lo inicializamos con un Readme.md para hacer todo más sencillo.

Una vez creado nuestro repo, vamos a nuestra máquina y nos lo clonamos, Pero antes vamos a establecer algunas configuracones de git que nos ahorrarán tiempo. Tan solo tenemos que sustituir los campos por nuestros datos reales:

1
2
3
4
5
git config --global credential.helper store

git config --global user.name "<NUESTRO_USERNAME>"
git config --global user.name "<NUESTRO NOMBRE COMPLETO>"
git config --global user.email "<NUESTRO EMAIL>"

Ahroa sí, ya podemos clonar el repo indicando nuestro usuario y/o ruta del repositorio creado

1
2
cd ~
git clone https://gitlab.com/<USERNAME>/dotfiles.git

Instalar GNU Stow

GNU Stow es una herramienta muy sencilla, basada en Perl, que nos va a facilitar la vida muchísimo a la hora de gestionar los enlaces simbólicos. Se encuentra directamente en los repositorios de la práctica totalidad de distribuciones, así que su instalación es tan sencilla como:

Ubuntu y basadas en Debian:

1
sudo apt install stow

Fedora y basadas en RedHat

1
sudo dnf install stow

Basadas en Arch

1
sudo pacman -Suy stow

Ejemplo práctico

Pongamos por ejemplo que queremos resguardar nuestras personalizaciones de Terminator, y la configuración que hemos aplicado para esta app a nivel de GTK.

Para ello entramos dentro de nuestra carpeta de dotfiles, y creamos aquí la estructura de ficheros que deseamos salvaguardar. Lo más habitual es crear una carpeta por aplicación, y dentro de ella replicamos la estructura a guardar tomando nuestro home como referencia. En este caso, vamos a guardar tambien todos los plugins y configuraciones que hemos añadido a nuestro terminator

1
2
3
4
5
6
7
8
9
cd ~/dotfiles/
mkdir terminator

mkdir -p .config/terminator
mkdir -p .config/plugins
mkdir -p .config/gtk-3-0

touch .config/gtk-3-0/gtk.css
touch .config/terminator/config

Con esto, hemos generado una estructura dentro de nuestra carpeta de dotfiles, tal que así:

1
2
3
4
5
6
7
terminator/
└── .config
    ├── gtk-3.0
    │   └── gtk.css
    └── terminator
        ├── config
        └── plugins

Ahora vamos a indicar a stow cuales son los ficheros y directorios que vamos a utilizar

1
2
cd ~/dotfiles
stow --adopt -nv terminator

el parámetro -nv le indica que muestre los cambios en modo verbose, pero sin aplicar ningún tipo de cambio. Si vemos que es correcto, podemos omitir el -n

1
stow --adopt -v terminator

con esto, podemos verificar que ha copiado los ficheros originales dentro de nuestra carpeta de dotfiles, y los ha sustituido por enlaces simbólicos a nuestro repositorio.

Con esto, cualquier cambio de configuración que realicemos, realmente se está haciendo sobre los ficheros de nuestro repositorio. Tan solo debemos realizar un commit y un push desde nuestro repositorio para que los ficheros estén a salvo en Git

Recuperar dotfiles

En caso de que hayamos instalado un nuevo sistema, y lo que queramos sea recuperar nuestro ficheros de configuración, el proceso sería muy similar.

  • Instalamos stow
  • Clonamos nuestro repositorio dentro de nuestro home
  • Indicamos a stow que cree los enlaces simbólicos necesarios. Lo lanzamos dentro del root de nuestra carpeta dotfiles
1
2
cd ~/dotfiles
stow -v terminator

Espero que esto os sea de ayuda. Personalmente, es algo que tengo siempre presente en cualquier sistema Linux que utilizo.

Algunas ideas para aplicar en nuestros “dotfiles”, son por ejemplo:

  • Terminator -> Emulador de terminal con soporte de tiling y plugins
  • .bashrc - Configuración de shell Bash
  • .zshrc - Configuración de shell Zsh
  • Oh-my-zsh
  • Configuraciones de Powerlevel10k
  • Ficheros de alias utilizados en bash o zsh
  • Configuraciones personalizadas de gtk
  • Fuentes o temas de gnome instalados para nuestro usuario.
  • Y un largo etc.
comments powered by Disqus
Creado con Hugo-Extended & theme Stack