¿Qué es GNU Stow?

GNU Stow es una herramienta para gestionar dotfiles usando enlaces simbólicos (symlinks). Organizas tus configuraciones en carpetas y Stow las enlaza automáticamente en sus ubicaciones correspondientes.

Por ejemplo:

  • Tienes ~/.dots/hypr/ con tus configuraciones de Hyperland.
  • Stow crea un symlink desde ~/.dots/hypr/ a ~/.config/hypr.

Ejemplo de configuración con Hyperland, Fish y Bash

Supongamos que quieres respaldar las configuraciones de:

  • Hyperland (~/.config/hypr/).
  • Fish (~/.config/fish/).
  • Bash (~/.bashrc y ~/.bash_profile).
  • Otros archivos como Waybar (~/.config/waybar).

1. Instala GNU Stow

Primero, asegúrate de tener instalado GNU Stow:

sudo pacman -S stow

2. Crea una estructura de repositorio para tus dotfiles

  1. Crea un directorio para tus dotfiles (si aún no lo tienes):

    mkdir ~/.dots
    cd ~/.dots
    
  2. Dentro de ~/.dots, organiza tus configuraciones en carpetas. Por ejemplo:

    mkdir -p hypr fish bash waybar
    

    Cada carpeta debe contener los archivos exactamente como se estructuran en tu sistema.


3. Mueve tus configuraciones al repositorio

Mueve las configuraciones relevantes a las carpetas correspondientes en ~/.dots:

mv ~/.config/hypr ~/.dots/hypr
mv ~/.config/fish ~/.dots/fish
mv ~/.bashrc ~/.dots/bash/.bashrc
mv ~/.bash_profile ~/.dots/bash/.bash_profile
mv ~/.config/waybar ~/.dots/waybar

Ahora usa Stow para crear los symlinks en sus ubicaciones originales:

  1. Ve al directorio ~/.dots:

    cd ~/.dots
    
  2. Usa Stow para cada configuración:

    stow hypr
    stow fish
    stow bash
    stow waybar
    

    Esto creará automáticamente los symlinks en los lugares correctos:

    • ~/.config/hypr/~/.dots/hypr/
    • ~/.config/fish/~/.dots/fish/
    • ~/.bashrc~/.dots/bash/.bashrc
    • ~/.config/waybar/~/.dots/waybar/

5. Estructura de carpetas resultante

Tu repositorio ~/.dots debería verse así:

~/.dots/
├── hypr/
│   ├── config.conf
│   ├── autostart.sh
│   └── wallpapers/
├── fish/
│   ├── config.fish
│   └── functions/
├── bash/
│   ├── .bashrc
│   └── .bash_profile
└── waybar/
    ├── config
    └── style.css

6. Respaldar en GitHub

Sube tu configuración a un repositorio en GitHub:

  1. Inicializa el repositorio:

    git init
    git remote add origin git@github.com:tu_usuario/dots.git
    
  2. Añade y sube los archivos:

    git add .
    git commit -m "Configuraciones iniciales"
    git push -u origin main
    

7. Restaurar en otro sistema

Para restaurar tus configuraciones en un nuevo sistema:

  1. Clona tu repositorio:

    git clone git@github.com:tu_usuario/dots.git ~/.dots
    
  2. Usa Stow para restaurar las configuraciones:

    cd ~/.dots
    stow hypr
    stow fish
    stow bash
    stow waybar
    

Ventajas de este enfoque

  1. Portabilidad: Fácil de clonar y restaurar en cualquier sistema.
  2. Organización: Cada configuración está en su propia carpeta.
  3. Control: Puedes habilitar/deshabilitar configuraciones específicas con stow y stow -D (desinstalar).