feat(installers): consolidate app installers into host-aware install-apps

Fold macinstaller + install-apt-pkgs + install-tools + install-zellij into a
single host-aware lk-installers/install-apps (macOS->Homebrew, bootstrapping
Homebrew if absent; Linux->apt + upstream installers). Installs the tools the
configs assume (bat, fd, fzf, zoxide, zellij, nvim, btop, htop, tldr) plus the
fzf-git.sh helper and fzf shell integration; idempotent.

link-dotfiles gains --apps to install then link in one shot. .zshrc drops the
redundant brew/system zsh-autosuggestions source (zinit already loads it),
fixing the missing-file error on a fresh box. README documents the new flow.
This commit is contained in:
vh
2026-06-26 07:55:16 -07:00
parent ae1f13a8a3
commit bf179ef0b1
8 changed files with 130 additions and 59 deletions
+19 -1
View File
@@ -14,7 +14,8 @@ Personal dotfiles. Configs are organized by where they get linked:
One-shot, host-aware:
```bash
./link-dotfiles
./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`](https://www.gnu.org/software/stow/)
@@ -22,6 +23,23 @@ 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`, plus the `fzf-git.sh` helper). One
host-aware installer covers them:
```bash
./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