Personal Dotfiles
Technologies Used
Project Overview
This is my configuration backbone for shell and editor setup: GNU Stow packages, bootstrap scripts for Linux and macOS, and a curated public export that contains only what is safe to share.
The private canonical repository also holds IDE agent configuration (Cursor rules, skills, and related tooling). That material is not part of the public export and does not appear in its git history.
The Challenge
Environment drift shows up on every new machine: aliases, Git defaults, editor settings, and terminal behaviour diverge when configured by hand. Publishing a full private tree would also risk exposing host-specific paths and operational detail.
The Solution
GNU Stow for Dotfiles
GNU Stow treats each configuration area as a package (bash, zsh, tmux, neovim, and similar). A bootstrap script installs dependencies and runs stow to symlink files into $HOME. Adding or removing a package is a single Stow command—not a manual copy exercise.
Curated Public Export
A separate public repository holds a clean history of Stow packages and setup scripts only. It deliberately omits:
- Cursor rules, skills, commands, agents, and MCP wiring
- Homelab topology and LAN inventories
- Private on-prem GitLab submodule URLs
Layout
dotfiles/ # private canonical (not mirrored as-is)
├── bash/, zsh/, tmux/, neovim/, ...
├── scripts/ # bootstrap and validation
└── cursor/ # private — rules, skills, agents
dotfiles-public/ # curated public export
├── bash/, zsh/, tmux/, neovim/, ...
└── scripts/ # Stow install and platform setup only
Results & Learning
Reproducible shell and editor setup without treating “everything in the private repo” as public. Agent configuration stays private; the public story is Stow and everyday tooling.