Published on : 2026-04-08 09:20
       
       If you've ever tried to keep your development environment 
       consistent across multiple machines, you've probably felt the 
       pain: copying config files, forgetting tweaks, overwriting 
       something important, or ending up with subtle differences that 
       break your workflow.
       
       Here's a simple, elegant solution hiding in plain sight: GNU Stow.
       
       What is GNU Stow?
       ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
       GNU Stow is a symlink farm manager. That sounds fancy, but the 
       idea is straightforward:
       
        * you keep your configuration files in one organized directory
        * stow creates symbolic links from that directory into your ~
        * your system thinks the files are in ~
       
       This means no more manual copying. No more drift between machines.
       
       Why Use Stow?
       ‾‾‾‾‾‾‾‾‾‾‾‾‾
        * reproducibility: same setup everywhere
        * transparency: plain files, no magic formats
        * safety: easy to add/remove configs without overwriting
        * simplicity: one command to deploy everything
       
       Basic Setup
       ‾‾‾‾‾‾‾‾‾‾‾
       Start by creating a directory to store your dotfiles:
       
           mkdir -p ~/dotfiles
           cd ~/dotfiles
       
       Inside this directory, organize configs. I like to store my 
       dotfiles exactly as they are in my home folder:
       
           ├── .bash_profile
           ├── .bashrc
           ├── .config
           │   ├── alacritty
           │   ├── bookmarks
           │   ├── dunst
           │   ├── feh
           │   ├── kitty
           │   ├── mpd
           │   ├── ncmpcpp
           │   ├── scripts
           │   ├── tmux
           │   ├── todo
           │   ├── weechat
           │   ├── xdg-desktop-portal
           │   └── yazi
           ├── .vimrc
           ├── .xinitrc
           ├── .vimrc
           ├── .xinitrc
           └── README.md
       
       
 (IMG)  A screenshot of the files in my git dotfiles repository
       
       You can create your dotfiles from in any place on your drive. 
       I chose the home folder for simplicity and because, by default, 
       Stow creates symlinks one directory above where you run it 
       (usually your home directory if you're inside ~/dotfiles). 
       That's why everything ends up in ~.
       
       If you want to target a different location, you can use the
       
           stow -t ~ .
       
       Moving Existing Configs
       ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
       If you already have configs in place you can just move them to 
       your new dotfiles directory:
       
           mv ~/.bashrc ~/dotfiles/.bashrc
           cd ~/dotfiles
           stow .bashrc
       
       Repeat for other tools. After this, your system uses the 
       managed versions.
       
       Replicating on Another Machine
       ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
       This is where Stow shines. All you have to do is to clone your 
       dotfiles repository on another machine and run stow. Done! 
       Your environment is now identical.
       
       Unstowing (Clean Removal)
       ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
       Want to remove a file/app?
       
           stow -D .bashrc
       
       This removes the symlink without touching your source file.
       
       Want to stow or unstow all your dot files ? Easy as:
       
           # Stow
           cd ~/dotfiles
           stow -t ~ .
       
           #Unstow
           cd ~/dotfiles
           stow -D -t ~
       
       Tips for a Smooth Workflow
       ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
        * use Git to version your dotfiles directory
        * keep secrets (like tokens) out of the repo
        * test changes before stowing everything
        * use .stow-local-ignore to exclude files if needed
       
       GNU Stow hits a sweet spot between simplicity and power. It 
       doesn't try to reinvent configuration management - it just makes 
       your existing files easier to manage.
       
       Once you adopt it, setting up a new machine goes from a chore to 
       a single command:
       
           stow -t ~ .
       
       And that's the kind of automation that actually sticks.
       
       Oh, and remember to install stow first!
       
           #Arch
           sudo pacman -S stow
           
           #Debian
           sudo apt install stow
       
 (DIR)  Back to my phlog