Files
dotfiles/home_root/.zshenv
T
vh 7b16be02bf feat: fold in the portable Claude Code, zsh and git config; add a drift check
Added (all now linked from their live locations):
- home_root/.claude/settings.json. The statusLine command now uses $HOME
  instead of a Linux-only absolute path.
- home_root/.claude/bin/ratecheck and home_root/.claude/skills/australis-design.
- home_config/zsh/claude-config-dir.zsh and home_root/.local/bin/claude-config-dir-init,
  the per-repo Claude Code login helper and its seeding script.
- home_root/.gitconfig and home_config/git/ignore.
- home_root/.zshenv, with the cargo env line guarded so boxes without rust start clean.

link-dotfiles --check reports drift without changing anything: tracked files whose
live copy is no longer a link (stow dry-run conflicts) and links into this repo
that dangle. Exits 1 on drift. Verified against a clean baseline and two planted
drifts, a detached .nanorc and a dangling link.

.mailmap maps every earlier identity to Vuong Hoang: the repo-local 'Your Name'
placeholder config (now removed), host-generated emails, and aider suffixes.

CLAUDE.md: the symlink warning now lists every linked file and points at --check.
README: documents what is and isn't tracked under .claude, the edit rule, and --check.
2026-09-24 09:07:16 -07:00

29 lines
1.5 KiB
Bash

[ -f "$HOME/.cargo/env" ] && . "$HOME/.cargo/env"
# user-level secrets (HF_TOKEN etc.)
[ -f "$HOME/.config/secrets/env.sh" ] && source "$HOME/.config/secrets/env.sh"
# fleet CLIs (booth, secret symlinks) reachable from non-interactive ssh too
export PATH="$HOME/.local/bin:$HOME/bin:$PATH"
# safe-rm (installed 2026-09-22, operator's call) — a wrapper that REFUSES to
# delete the ~25 protected system paths in /etc/safe-rm.conf: /, /bin, /etc,
# /home, /usr, /var and friends. Guards the rm -rf /usr class of mistake.
#
# ⚠ IT IS SET HERE AND NOT LEFT TO THE PACKAGE. safe-rm ships
# /etc/profile.d/safe-rm.sh, which /etc/profile walks correctly -- but Debian's
# /etc/zsh/zprofile is entirely commented out (0 non-comment lines), so a zsh
# LOGIN shell never sources /etc/profile and the hook never fires. Measured
# immediately after install: rm still resolved to /usr/bin/rm in this shell, in
# a fresh `zsh -l`, AND over ssh. Installed and inert.
#
# .zshenv is the right home because it is sourced for EVERY zsh invocation,
# including the non-interactive `ssh host '<cmd>'` form that is how most fleet
# work actually runs -- the same reason ~/.local/bin is set here.
#
# ⚠ AND IT DOES NOT COVER THE MISTAKE THAT PROMPTED IT. safe-rm is a path
# blacklist, not a heuristic. Measured: it refuses `rm -rf /home`, and it
# deletes a file whose path came from an unset variable without complaint. The
# variable-path habit is still guarded only by discipline and `set -u`.
[ -d /usr/share/safe-rm/bin ] && export PATH="/usr/share/safe-rm/bin:$PATH"