-
Notifications
You must be signed in to change notification settings - Fork 0
FAQ and Troubleshooting
Common questions and the gotchas most likely to bite. For day-to-day commands,
run core-help (alias cheat) and core-doctor in any shell.
Subtree vendors the actual files, so every repo is clone-and-go (a submodule
clone is empty until git submodule update --init). chezmoi would be more DRY
but trades the nine-repo portfolio for one repo. Full reasoning:
Architecture & the Three-Layer Model.
If it changes with the OS → the OS repo. If it changes with you as an operator →
dotfiles-Kali. If it's identical everywhere → Core. See the
layer model.
bin/ is shipped (the clip shims, in core.manifest); scripts/ is dev
tooling that runs in the Core repo only and is never vendored out. See the
shipped-vs-tooling split.
Run core-version inside the OS repo — it reads the vendored core.version.
Follow the Contributing checklist:
drop it in, strip OS-specific bits, add to core.manifest, audit, sync.
Debian-family ships bat as batcat and fd-find as fdfind. Core resolves
both to $BAT_BIN / $FD_BIN in tools.zsh, so aliases and fzf previews work
unchanged. If you still see this, run core-doctor to confirm detection and that
~/.local/bin is on PATH.
That's by design — every alias is guarded by a HAVE_* flag and degrades to the
classic command when the tool is absent. Install the tool, open a new shell, and
confirm with core-doctor. See
Tools, Aliases & Functions.
These are zle widgets bound through zsh-vi-mode's zvm_after_init hook, and
most need a tool present (fzf, atuin, zoxide, sesh). Check core-help — rows are
dimmed and tagged "needs <cmd>" when their tool is missing. The module load
order also matters: fzf must load before bindings/plugins. See
The Zsh Module System.
Run :checkhealth gerrrt. It runs the same clip/clip-paste ladder Neovim's
provider uses and names the missing backend (Wayland: wl-clipboard; X11:
xclip/xsel; macOS: built in; WSL: clip.exe). If clip/clip-paste aren't
on PATH, re-run the OS repo's bootstrap (it symlinks them into ~/.local/bin).
Alpine is musl libc, not glibc — glibc-linked prebuilt binaries won't run.
Prefer apk packages or musl-target builds (and cargo builds for unpackaged
tools). See Porting to a New Distro.
WSL2 is NAT'd. Enable mirrored networking in the Windows-side
%UserProfile%\.wslconfig (networkingMode=mirrored, Win11 22H2+) — not
/etc/wsl.conf.
CI runs scripts/audit-core.sh. Reproduce locally with make audit (or
make audit-changed). Common causes: a new file not added to core.manifest, a
wrong executable bit, or a pre-commit hygiene issue (trailing whitespace, missing
final newline). See The Audit (Quality Gate).
A pinned zsh or nvim plugin is behind upstream. Run make check-pins to confirm,
then make update-plugins / make update-nvim-plugins to roll forward, review,
and commit. See Maintenance & Updates.
It gates the fan-out: it won't vendor a red tree (fix the audit), warns when
local HEAD differs from the remote tip being fanned out (push/pull to align), and
skips OS repos with a dirty tree (commit/stash first). SYNC_SKIP_AUDIT=1 is the
documented escape hatch. See
Consuming Core in an OS Repo.
dotfiles-core — the Core layer of
a nine-repo dotfiles system · authored once, vendored everywhere via git subtree.
Home · Architecture · Zsh · Tools · Neovim · tmux · FAQ
Source for these pages lives in
wiki/ — edit there and
sync. · core-help in any shell for the live cheat sheet.
Concepts
Reference
Operating it
Project
Repo links