cfg is the older, practical version of my terminal setup: shell config, editor defaults, and sync scripts for the small choices that make a new machine feel usable again.
Why it belongs here#
Dotfiles are not impressive software. They are a record of friction. Every alias, default, prompt tweak, and sync script came from some repeated interruption: a new machine, a half-configured shell, a command I kept mistyping, or an editor behavior that made daily work slower.
I care about this kind of repo because engineering quality is partly environment quality. A team that cannot rebuild its own development setup is already paying a tax before it writes product code. The personal version of that problem is smaller, but the habit is the same: make setup repeatable, keep secrets out, and document the weird bits before muscle memory hides them.
Rules I still like#
- Keep secrets out of dotfiles.
- Prefer repeatable setup over a perfect one-off workstation.
- Comment the weird parts, because terminal habits outlive their original reason.
- Make bootstrap commands boring enough that a tired person can run them without rereading the repo.
- Keep machine setup separate from identity, credentials, and one-off local state.
What aged well#
The README is old, and that is part of the point. Tools change, package managers change, even the place where the install script lives can change. The durable idea is still useful: config should be trackable, recoverable, and small enough that a new machine does not become a week-long archaeology project.
I would write the modern version more defensively: dry-run first, print exactly what will change, never echo secrets, and make every step idempotent. But the core habit is already there. Developer environment setup is infrastructure, even when it lives in a personal repo.
The engineering habit#
Good tooling should make the next good action easier. It should not become a hobby project that needs its own maintenance window. The best dotfile change is usually the one that removes a question: where is this configured, how do I sync it, what is safe to copy, and how do I recover a useful workstation quickly?
That same thinking shows up in product teams as onboarding scripts, local dev health checks, and CI jobs that fail with a useful message. Tiny operational loops matter because they compound.