<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dotfiles/dot_config/zsh/dot_zshrc, branch master</title>
<subtitle>My linux config and rc files</subtitle>
<id>https://git.sommerfeld.dev/dotfiles/atom/dot_config/zsh/dot_zshrc?h=master</id>
<link rel='self' href='https://git.sommerfeld.dev/dotfiles/atom/dot_config/zsh/dot_zshrc?h=master'/>
<link rel='alternate' type='text/html' href='https://git.sommerfeld.dev/dotfiles/'/>
<updated>2026-08-14T13:21:05Z</updated>
<entry>
<title>Remove former work environment configuration</title>
<updated>2026-08-14T13:21:05Z</updated>
<author>
<name>sommerfeld</name>
<email>sommerfeld@sommerfeld.dev</email>
</author>
<published>2026-08-14T13:21:05Z</published>
<link rel='alternate' type='text/html' href='https://git.sommerfeld.dev/dotfiles/commit/?id=315e7580b35f2535319bbd852d443c3c9bcb4d41'/>
<id>urn:sha1:315e7580b35f2535319bbd852d443c3c9bcb4d41</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Prune stale dotfiles commentary</title>
<updated>2026-07-02T10:35:35Z</updated>
<author>
<name>sommerfeld</name>
<email>sommerfeld@sommerfeld.dev</email>
</author>
<published>2026-07-02T10:35:35Z</published>
<link rel='alternate' type='text/html' href='https://git.sommerfeld.dev/dotfiles/commit/?id=f0c626059451e1f8621600e610240739d5633560'/>
<id>urn:sha1:f0c626059451e1f8621600e610240739d5633560</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Use local gpg-agent on VM</title>
<updated>2026-06-19T15:36:01Z</updated>
<author>
<name>sommerfeld</name>
<email>sommerfeld@sommerfeld.dev</email>
</author>
<published>2026-06-19T15:36:01Z</published>
<link rel='alternate' type='text/html' href='https://git.sommerfeld.dev/dotfiles/commit/?id=7eacd3c160f23fbff65c510aae70266b33b48bc2'/>
<id>urn:sha1:7eacd3c160f23fbff65c510aae70266b33b48bc2</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Reduce Arch package surface</title>
<updated>2026-06-18T11:06:20Z</updated>
<author>
<name>sommerfeld</name>
<email>sommerfeld@sommerfeld.dev</email>
</author>
<published>2026-06-18T11:06:20Z</published>
<link rel='alternate' type='text/html' href='https://git.sommerfeld.dev/dotfiles/commit/?id=511793cba498f52b0f92904965ea5c9afa8b6ea4'/>
<id>urn:sha1:511793cba498f52b0f92904965ea5c9afa8b6ea4</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Allow unmatched globs in zsh</title>
<updated>2026-06-17T14:47:38Z</updated>
<author>
<name>sommerfeld</name>
<email>sommerfeld@sommerfeld.dev</email>
</author>
<published>2026-06-17T14:47:38Z</published>
<link rel='alternate' type='text/html' href='https://git.sommerfeld.dev/dotfiles/commit/?id=08a1557a6896fe5772374a588cefafcc7e352493'/>
<id>urn:sha1:08a1557a6896fe5772374a588cefafcc7e352493</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add mosh work VM alias</title>
<updated>2026-06-14T23:55:43Z</updated>
<author>
<name>sommerfeld</name>
<email>sommerfeld@sommerfeld.dev</email>
</author>
<published>2026-06-14T23:55:43Z</published>
<link rel='alternate' type='text/html' href='https://git.sommerfeld.dev/dotfiles/commit/?id=14f5a45a67b2d719e8912c335be8f521e39291fd'/>
<id>urn:sha1:14f5a45a67b2d719e8912c335be8f521e39291fd</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Limit git switch completion to local branches</title>
<updated>2026-06-05T10:06:04Z</updated>
<author>
<name>sommerfeld</name>
<email>sommerfeld@sommerfeld.dev</email>
</author>
<published>2026-06-05T10:06:04Z</published>
<link rel='alternate' type='text/html' href='https://git.sommerfeld.dev/dotfiles/commit/?id=929f8bea128361822b054db36402b5e19234319f'/>
<id>urn:sha1:929f8bea128361822b054db36402b5e19234319f</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fix(ssh): make agent.sock symlink concurrent-connection-safe</title>
<updated>2026-05-22T09:41:24Z</updated>
<author>
<name>sommerfeld</name>
<email>sommerfeld@sommerfeld.dev</email>
</author>
<published>2026-05-22T09:41:24Z</published>
<link rel='alternate' type='text/html' href='https://git.sommerfeld.dev/dotfiles/commit/?id=982d180f9b9a2f8a90d454816474dce8d4b4b8e2'/>
<id>urn:sha1:982d180f9b9a2f8a90d454816474dce8d4b4b8e2</id>
<content type='text'>
Previously every new login retargeted ~/.ssh/agent.sock to its own
per-connection forwarded socket. That broke a multi-connection setup
when the most-recent connection (which 'won' the symlink) dropped:
all surviving connections' panes would point at a dead socket until a
fresh login from a surviving connection re-ran zprofile.

zprofile: only retarget when the existing symlink target is dead
(sshd unlinks the per-connection socket on disconnect, so [[ -S ]] on
the resolved path is a reliable liveness probe). First connection
seeds the symlink, subsequent logins keep using it.

ssh-agent-refresh: scan /tmp/ssh-*/agent.* for any live forwarded
socket and retarget to the first that responds to ssh-add. Lets the
surviving connection recover without waiting for a new login shell.
</content>
</entry>
<entry>
<title>feat(zsh): recover Arch site-functions + HELPDIR after removing system zsh</title>
<updated>2026-05-22T09:41:24Z</updated>
<author>
<name>sommerfeld</name>
<email>sommerfeld@sommerfeld.dev</email>
</author>
<published>2026-05-22T09:41:24Z</published>
<link rel='alternate' type='text/html' href='https://git.sommerfeld.dev/dotfiles/commit/?id=6b7e057bd4fc2cbdffe5fc8b3095810db1ccf9e3'/>
<id>urn:sha1:6b7e057bd4fc2cbdffe5fc8b3095810db1ccf9e3</id>
<content type='text'>
Switching to nix's zsh on the Arch host left two functional gaps the
Arch zsh package used to fill:

1. /usr/share/zsh/site-functions in fpath: pacman, paru, systemctl,
   journalctl, flatpak, docker, kubectl, makepkg etc. drop their
   completions there. nix zsh's compiled-in fpath doesn't include
   /usr/share so we lose all of them silently. Added that path (and
   vendor-completions for the VM's apt-installed completions) to the
   existing fpath loop, guarded by [[ -d ]].

2. HELPDIR for the run-help / help-alias machinery: needed so 'help cd'
   etc. find the per-builtin help docs. Pick the first existing version
   dir, preferring nix-profile so it matches the running zsh version.
</content>
</entry>
<entry>
<title>fix(ssh): stabilise forwarded ssh-agent socket across reconnects</title>
<updated>2026-05-22T09:41:23Z</updated>
<author>
<name>sommerfeld</name>
<email>sommerfeld@sommerfeld.dev</email>
</author>
<published>2026-05-22T09:41:23Z</published>
<link rel='alternate' type='text/html' href='https://git.sommerfeld.dev/dotfiles/commit/?id=159d69ddd122cfdb55d087d754d7472d42fa73ae'/>
<id>urn:sha1:159d69ddd122cfdb55d087d754d7472d42fa73ae</id>
<content type='text'>
Forwarded SSH_AUTH_SOCK lives at /tmp/ssh-XXX/agent.NNN — a
per-connection path that disappears on disconnect, leaving every
long-running zellij pane (and its children: claude-code, nvim, …)
pointing at a dead socket. Reattaching after reconnect doesn't help:
the env was captured when zellij first started.

Fix: maintain ~/.ssh/agent.sock as a symlink, re-aimed at the live
forwarded socket on every login (zprofile). Export the stable path so
processes inherit a value that survives reconnects — git fetch /
commit signing keep working in re-attached zellij panes with zero
per-pane re-export.

Adds 'ssh-agent-refresh' helper for transitional panes still holding
the dead per-connection path: re-exports SSH_AUTH_SOCK to the stable
symlink and validates with ssh-add -l. Already-running children
(claude-code) must still be restarted since env is inherited, not
observed.
</content>
</entry>
</feed>
