Your Name 2bc5b56ff9 feat(zsh): alias tree -> erdtree, track its config, install it on fresh boxes
erdtree (erd) replaces GNU tree as the tree-style directory lister. It uses
a parallel walker (the `ignore` crate, one thread per core) where GNU tree is
strictly serial. Benchmarked over 658k entries under ~/development, best-of-3,
warm cache, plain output, hidden included, gitignore off:

  erd (16 threads)   2.35s
  GNU tree 2.1.0     4.22s   (1.8x slower)
  erd (1 thread)     4.97s   (so ~2.1x thread scaling)
  eza --tree        15.87s   (6.8x slower)

Three changes:

- home_config/erdtree/.erdtree.toml — erd ships as a disk-usage tool, so its
  stock defaults are root-at-bottom, size-sorted, with a du column. The
  top-level table overrides that to behave like GNU tree; `erd -c du` keeps
  the original behaviour and `erd -c all` disables the gitignore/hidden
  filtering. Stowed to ~/.config/erdtree.

- home_root/.zshrc — `alias tree='erd'`, plus ~/.zfunc prepended to fpath for
  the generated completion. The fpath line goes before the primary compinit
  at the top of the file rather than adding a third compinit call after it.

- lk-installers/install-apps — erd is now a runtime assumption of the
  dotfiles (the alias depends on it), so a fresh box must get it: brew on
  macOS, cargo on Linux (not packaged in Debian apt). The zsh completion is
  generated per installed version rather than tracked, matching how the other
  generated completions in this repo are handled.

Caveat worth knowing: erd respects .gitignore by default, which GNU tree does
not. `-i` disables it, `-.` shows hidden files.
2026-08-14 00:09:48 -07:00

dotfiles

Personal dotfiles. Configs are organized by where they get linked:

Folder Links into Examples
home_root ~ .zshrc, .wezterm.lua, .nanorc
home_config ~/.config nvim, zellij, ghostty, aerospace
windows Windows-only windows-terminal/settings.json
lk-installers n/a helper scripts to install tooling

Linux / macOS (GNU stow)

One-shot, host-aware:

./link-dotfiles          # link only (installs stow if missing)
./link-dotfiles --apps   # fresh box: install all CLI tools, then link

It detects the host (macOS vs Linux), installs stow if missing (Homebrew on macOS; apt/dnf/pacman on Linux), then runs stow home_root and stow --target=$HOME/.config home_config. Re-running is safe — stow is idempotent.

Installing the tools

The configs assume a handful of CLI tools (bat, fd, fzf, zoxide, zellij, nvim, btop, htop, tldr, fastfetch, plus the fzf-git.sh helper). One host-aware installer covers them:

./lk-installers/install-apps     # macOS -> Homebrew; Linux -> apt + upstream

On macOS it bootstraps Homebrew if absent. It's idempotent — re-running only fills gaps. ./link-dotfiles --apps just runs this first, then links.

The zsh prompt and plugins (zinit, Powerlevel10k, autosuggestions, syntax-highlighting, completions, vi-mode, fzf-tab) self-install from .zshrc on first shell start, so they're not part of install-apps.

Windows (PowerShell)

stow doesn't run natively on Windows, so use the PowerShell equivalent. It mirrors stow by creating junctions for directories and symlinks/hardlinks for files — none of which require administrator rights:

pwsh -File .\link-dotfiles.ps1
  • Re-running is safe: already-correct links are skipped.
  • Any real file/dir that would be overwritten is moved aside to <name>.bak.
  • Preview without changing anything: pwsh -File .\link-dotfiles.ps1 -DryRun

The repo stays the source of truth — edit files under home_root / home_config and the linked locations update live.

Windows Terminal

windows/windows-terminal/settings.json is linked into the Terminal package folder (...\Microsoft.WindowsTerminal_*\LocalState\settings.json) by link-dotfiles.ps1. Because it's linked, changes you make in the Terminal UI write straight back into this repo. The settings include the Australis color scheme and the VictorMono Nerd Font Mono profile font; install the font (see below) so glyphs render.

Prompt

zsh uses Powerlevel10k — loaded through zinit straight from .zshrc, with the instant-prompt preamble near the top for fast startup. The theme config lives at home_root/.p10k.zsh (stowed to ~/.p10k.zsh); there's no separate installer — zinit fetches it on first shell start.

PowerShell uses starship (configured separately).

Both expect a Nerd Font v3 (e.g. VictorMono Nerd Font Mono) installed and selected in your terminal for glyphs to render.

S
Description
No description provided
Readme 708 KiB
Languages
Lua 53%
Shell 34.3%
PowerShell 12.7%