This repository contains configuration files (dotfiles) managed with GNU
Stow. Each subdirectory represents a Stow
package whose contents mirror the target paths. The manage.sh script handles
installing, updating, and removing the packages.
bash/,bin/,git/,kitty/,nvim/,ssh/, andtmux/– Stow packages; each mirrors the target path layout under$HOME.manage.sh– orchestratesinstall,update,remove, anduninstalloperations via GNU Stow.tools.json– declares the system packages thatmanage.shprobes for on startup. Each entry is either a bare string (binary name = package name) or an object with acmdfield (binary to probe) andpkg/apt-get/dnffields for manager-specific package names.- Any files with
.localextension are for machine-local configs/files. You should ignore those files.
- Use 4 spaces for indentation in shell scripts and Lua files.
- Keep configuration files under their respective subdirectories so Stow can symlink them correctly.
- Do not store secrets or private keys in the repo.
- Run
shellcheckon shell scripts when possible. - For Neovim Lua configs, verify syntax with
luajit -bl <file>orluac -p <file>. Files live undernvim/.config/nvim/lua/and the package entry point isnvim/.config/nvim/init.lua. - After changes, ensure
./manage.sh installexecutes without errors (requires GNU Stow).
- Update the README if usage details change.
- Write clear commit messages referencing affected configs or scripts.
- Before committing, run
git statusto confirm a clean working tree.