Managing Dotfiles with Stow and Git


Exploring Dotfiles, Stow, and Git on Arch Linux with Hyprland

As a long-time Linux user and Arch enthusiast, customizing my setup has always been an ongoing process. From managing dotfiles to configuring Hyprland, I’ve refined my workflow over time to ensure flexibility and maintainability. In this post, I’ll go over how I organize my dotfiles using GNU Stow and Git, making it easy to version, share, and deploy configurations across different systems.


The Challenge of Managing Dotfiles

If you’ve used Linux for a while, you know how quickly dotfiles accumulate. Whether it’s Neovim configs, shell settings, or Hyprland keybindings, keeping everything structured and version-controlled is crucial. Initially, I managed my configurations manually, backing them up sporadically or syncing them between machines using rsync or cloud storage. But this quickly became a hassle.

That’s when I discovered GNU Stow—a simple yet powerful tool for managing dotfiles in a modular and structured way.


Organizing Dotfiles with Stow

Instead of symlinking files manually or writing custom scripts, Stow automates the process of linking configuration files from a centralized repository to their appropriate locations in $HOME. My current dotfiles structure looks like this:

~/dotfiles
 ├── btop
 ├── ghostty
 ├── hypr
 ├── hyprpanel
 ├── kitty
 ├── lazygit
 ├── neofetch
 ├── nvim
 ├── README.md
 ├── rofi
 ├── sesh
 ├── stow.sh
 ├── tmux
 ├── wallpapers
 ├── waybar
 ├── wezterm
 ├── xdg-desktop-portal
 └── zsh