chore: fix stow folding, split git identities, prune dead config #5

Merged
jwarykowski merged 27 commits from chore/herdr-setup-and-cleanup into master 2026-08-22 11:08:41 +00:00
jwarykowski commented 2026-08-13 02:43:46 +00:00 (Migrated from github.com)

Review of the repo, then the fixes that came out of it.

broken things

Ghostty's theme was never loading. Stow had folded ~/.config/ghostty into the mac package, so common/.config/ghostty/themes/ was never linked and linux had no theme file at all. The two copies had drifted (#101010 vs 0a0a0a) because the working one had been put back by hand as an untracked file. A restow unfolds the directory; common now carries the live background and the duplicate is gone.

common/.gitignore was doing two jobs. It is stowed out as the global excludesfile, but git also read it as the directory ignore for common/ — which was the only reason shepherd data stayed untracked. That meant shepherd-specific rules rode along into every other repo on the machine, and anything under common/ matching a generic rule (tmp/, build/, out/, logs) would silently vanish. Those rules now live in the repo's own .gitignore.

gh can leak a token. It rewrites hosts.yml in place through the stow symlink and will write an oauth_token into it if the keyring is unavailable. Untracked now.

i3 pointed feh at $HOME/resources/wallpapers/, which never exists — resources/ is not a stow package.

git identity

Global default is now [email protected]. Work repos are keyed off the remote rather than a directory, since work and personal repos are mixed together under ~/development:

[includeIf "hasconfig:remote.*.url:[email protected]:zeller-engineering/**"]
  path = ~/.gitconfig-work

One GPG key carries both UIDs, so signing is unaffected. Also dropped:

  • the global https://github.com/ → ssh rewrite (breaks anonymous clones, Go modules, CI checkouts)
  • diff.wordDiff — not a real config key, silently ignored
  • push.default = simple — git's default since 2.0

cleanup

  • .editorconfig defaulted to tabs while everything but lua uses spaces
  • tarcompress/taruncompress/uuid deduped into common/; du -sk works on both platforms where du -sb is linux-only
  • herdr config trimmed 330 → 150 lines, btop 283 → 16, both were mostly vendor defaults. btop's nine real overrides were found by diffing against btop --default-config; note it re-expands itself on every exit
  • lazygit git.pagers → git.diffRenderers (upstream rename)
  • archived skhd/yabai/kitty configs dropped — git history keeps them
  • empty linux/.config/zsh/aliases/linux.zsh, duplicate .local/bin PATH export
  • newsboat config tracked and added to both package scripts
  • README structure block rebuilt (it had drifted), plus a note on the stow folding trap

not done

resources/ is 29M of a 36.5M pack. The wallpapers are live (i3 uses one), and deleting from the working tree would not shrink clones anyway — only a history rewrite would.

verification

Restowed clean. dotfiles and apollo-client resolve to warykowski.io, component-merchant-portal to myzeller.com. zsh -n passes on every changed shell file. The btop trim was diffed back against the pre-trim override set — no setting lost.

Review of the repo, then the fixes that came out of it. ## broken things **Ghostty's theme was never loading.** Stow had folded `~/.config/ghostty` into the mac package, so `common/.config/ghostty/themes/` was never linked and linux had no theme file at all. The two copies had drifted (`#101010` vs `0a0a0a`) because the working one had been put back by hand as an untracked file. A restow unfolds the directory; common now carries the live background and the duplicate is gone. **`common/.gitignore` was doing two jobs.** It is stowed out as the global excludesfile, but git also read it as the directory ignore for `common/` — which was the only reason shepherd data stayed untracked. That meant shepherd-specific rules rode along into every other repo on the machine, and anything under `common/` matching a generic rule (`tmp/`, `build/`, `out/`, `logs`) would silently vanish. Those rules now live in the repo's own `.gitignore`. **`gh` can leak a token.** It rewrites `hosts.yml` in place through the stow symlink and will write an `oauth_token` into it if the keyring is unavailable. Untracked now. **i3 pointed `feh` at `$HOME/resources/wallpapers/`**, which never exists — `resources/` is not a stow package. ## git identity Global default is now `[email protected]`. Work repos are keyed off the remote rather than a directory, since work and personal repos are mixed together under `~/development`: ``` [includeIf "hasconfig:remote.*.url:[email protected]:zeller-engineering/**"] path = ~/.gitconfig-work ``` One GPG key carries both UIDs, so signing is unaffected. Also dropped: - the global `https://github.com/` → ssh rewrite (breaks anonymous clones, Go modules, CI checkouts) - `diff.wordDiff` — not a real config key, silently ignored - `push.default = simple` — git's default since 2.0 ## cleanup - `.editorconfig` defaulted to tabs while everything but lua uses spaces - `tarcompress`/`taruncompress`/`uuid` deduped into `common/`; `du -sk` works on both platforms where `du -sb` is linux-only - herdr config trimmed 330 → 150 lines, btop 283 → 16, both were mostly vendor defaults. btop's nine real overrides were found by diffing against `btop --default-config`; note it re-expands itself on every exit - lazygit `git.pagers` → `git.diffRenderers` (upstream rename) - archived skhd/yabai/kitty configs dropped — git history keeps them - empty `linux/.config/zsh/aliases/linux.zsh`, duplicate `.local/bin` PATH export - newsboat config tracked and added to both package scripts - README structure block rebuilt (it had drifted), plus a note on the stow folding trap ## not done `resources/` is 29M of a 36.5M pack. The wallpapers are live (i3 uses one), and deleting from the working tree would not shrink clones anyway — only a history rewrite would. ## verification Restowed clean. `dotfiles` and `apollo-client` resolve to `warykowski.io`, `component-merchant-portal` to `myzeller.com`. `zsh -n` passes on every changed shell file. The btop trim was diffed back against the pre-trim override set — no setting lost.
Sign in to join this conversation.
No description provided.