- QML 89.3%
- Lua 4.6%
- Shell 2.5%
- SCSS 2%
- Go 1%
- Other 0.6%
| common | add notifications to quickshell panel | |
| debian | update niri for debian and quickshell | |
| gentoo | add to quickshell other distros installed | |
| void | changes to quickshell | |
| .gitignore | fix quickshell | |
| README.md | modularize the configs for different distros | |
GNU Stow dotfiles
This repository stores dotfiles and config directories for GNU Stow using a modular structure.
Structure
The repository is organized into:
common/- Shared configurations used across all distributionsvoid/- Void Linux-specific configurationsdebian/- Debian-specific configurationsgentoo/- Gentoo-specific configurations
This allows you to maintain distro-specific configs (like fastfetch and niri) while sharing common configs across all systems.
Usage
Stowing common packages
From the root of this repository, stow common packages into your home config directory:
stow -t "$HOME/.config" -d common nvim
stow -t "$HOME/.config" -d common ghostty
stow -t "$HOME/.config" -d common mako
For dotfiles that belong in your home directory:
stow -t "$HOME" -d common zsh
Stowing distro-specific packages
Stow packages from your distribution's directory:
For Void Linux:
stow -t "$HOME/.config" -d void fastfetch
stow -t "$HOME/.config" -d void niri
For Debian:
stow -t "$HOME/.config" -d debian fastfetch
stow -t "$HOME/.config" -d debian niri
For Gentoo:
stow -t "$HOME/.config" -d gentoo fastfetch
stow -t "$HOME/.config" -d gentoo niri
Stowing everything at once
You can stow multiple packages in one command:
# Common packages
stow -t "$HOME/.config" -d common nvim ghostty mako wallust wofi eww
# Distro-specific (example for Void)
stow -t "$HOME/.config" -d void fastfetch niri
Recreating on a new install
-
Clone this repository into a location you want to keep your dotfiles in:
git clone <your-repo-url> ~/Projects/gnu-stow cd ~/Projects/gnu-stow -
Make sure GNU Stow is installed on the new machine.
-
Stow common packages first:
stow -t "$HOME/.config" -d common nvim ghostty mako wallust wofi stow -t "$HOME" -d common zsh -
Then stow your distro-specific packages (replace
voidwith your distro):stow -t "$HOME/.config" -d void fastfetch niri
Daily workflow
-
Editing an already stowed file usually does not require any extra Stow command.
-
If you add a new file, move files around, or change a package layout, run
stow -Rfor that package. -
Examples:
# Restow a common package stow -t "$HOME/.config" -d common -R mako # Restow a distro-specific package stow -t "$HOME/.config" -d void -R fastfetch
Repository layout
The repository uses a modular structure with separate directories for common and distro-specific packages:
common/ # Shared configs used everywhere
├── nvim/
├── ghostty/
├── mako/
└── ...
void/ # Void Linux specific
├── fastfetch/
└── niri/
debian/ # Debian specific
├── fastfetch/
└── niri/
gentoo/ # Gentoo specific
├── fastfetch/
└── niri/
Each package folder contains its internal structure matching the target you stow into. For example, common/nvim/nvim/ will be stowed to ~/.config/nvim/.
Adding new packages
For common packages (used across all distros):
- Add to the
common/directory - Example:
common/newapp/newapp/config.conf
For distro-specific packages:
- Add to the appropriate distro directory
- Example:
void/newapp/newapp/config.conf
If a package needs different configurations per distro, create it in each distro directory instead of common.