mirror of
https://github.com/prdlk/dotfiles.git
synced 2026-11-02 11:32:42 +00:00
chore(packages): declare every tool the configs reference
Audit of configs, scripts, tmux-palette items and television cables against installed packages. Adds the missing pacman/AUR/brew entries, a [omarchy] repo list installed only where that repo is configured, and cargo installs in 40-post. 10-packages filters lists with pacman -T so provider packages (mise-bin, yazi-git) are not replaced, and uses yay with paru as fallback. noctalia-shell -> noctalia-git (AUR name).
This commit is contained in:
1 parent
6f73aa2f82
commit
30314160f1
13 files changed
+156
-46
No files matched your search
@@ -40,7 +40,7 @@ The `*Once` functions only prompt when the key is missing from the existing conf
|
||||
|
||||
### Machine roles
|
||||
|
||||
| Role | Intended platform | Linux desktop layer | Desktop packages (`niri`, `xdg-user-dirs`, `noctalia-shell`, `vicinae-bin`) |
|
||||
| Role | Intended platform | Linux desktop layer | Desktop packages (`packages.arch.desktop`) |
|
||||
| --- | --- | --- | --- |
|
||||
| `desktop` | Arch Linux | Applied | Installed |
|
||||
| `laptop` | Arch Linux | Applied | Installed |
|
||||
@@ -82,7 +82,7 @@ The `[data]` table exposes `.name`, `.email`, and `.role` to every template. che
|
||||
| `.role` | `.chezmoiscripts/run_onchange_before_10-packages.sh.tmpl` | Adds the `arch.desktop` pacman and AUR packages for `desktop`/`laptop` |
|
||||
| `.chezmoi.os` | `.chezmoi.toml.tmpl` | Role default (`mac` on darwin) |
|
||||
| `.chezmoi.os` | `.chezmoiignore.tmpl` | Desktop layer requires `linux` |
|
||||
| `.chezmoi.os` | `run_onchange_before_10-packages.sh.tmpl` | pacman/paru on `linux`, Homebrew on `darwin` |
|
||||
| `.chezmoi.os` | `run_onchange_before_10-packages.sh.tmpl` | pacman/yay on `linux`, Homebrew on `darwin` |
|
||||
| `.chezmoi.os` | `run_once_after_30-user-services.sh.tmpl` | systemd user units on `linux` only |
|
||||
| `.chezmoi.os` | `run_onchange_after_40-post.sh.tmpl` | `fc-cache` on `linux` only |
|
||||
|
||||
|
||||
+16
-12
@@ -13,7 +13,7 @@ Files in `.chezmoidata/` are merged into chezmoi's template data on every run. N
|
||||
|
||||
## packages.yaml [#packagesyaml]
|
||||
|
||||
One manifest per platform, plus a `shared` block. Any edit to the file changes the hash embedded in the package script, so the next `chezmoi apply` re-runs the install. Installs are idempotent (`pacman --needed`, `paru --needed`, `brew install` on already-installed formulae).
|
||||
One manifest per platform, plus a `shared` block. Any edit to the file changes the hash embedded in the package script, so the next `chezmoi apply` re-runs the install. Installs are idempotent (`pacman --needed`, `yay`/`paru --needed`, `brew install` on already-installed formulae). The lists are derived from what the configs actually invoke: tmux-palette items, television cable `requirements`, fish functions, `~/.local/bin` scripts, and compositor bindings.
|
||||
|
||||
<Tabs>
|
||||
<Tab title="Arch">
|
||||
@@ -22,34 +22,38 @@ One manifest per platform, plus a `shared` block. Any edit to the file changes t
|
||||
|
||||
| Group | Packages |
|
||||
| --- | --- |
|
||||
| Shell and editors | `fish`, `neovim`, `tmux`, `micro` |
|
||||
| Shell and editors | `fish`, `neovim`, `helix`, `micro`, `tmux` |
|
||||
| Terminal | `kitty` |
|
||||
| TUI tools | `yazi`, `lazygit`, `lazydocker`, `btop`, `fastfetch` |
|
||||
| VCS and forge | `git`, `github-cli`, `git-delta`, `diffnav` |
|
||||
| TUI tools (tmux-palette, television cables) | `yazi`, `lazygit`, `lazydocker`, `docker`, `docker-compose`, `btop`, `fastfetch`, `onefetch`, `television`, `serie`, `tig`, `gitui`, `tldr`, `navi`, `mdfried` |
|
||||
| VCS and forge | `git`, `github-cli`, `git-delta`, `diffnav`, `tea` |
|
||||
| Search and files | `fzf`, `fd`, `ripgrep`, `zoxide`, `eza`, `bat`, `jq`, `duf` |
|
||||
| Media and preview (yazi deps) | `ffmpeg`, `ffmpegthumbnailer`, `poppler`, `resvg`, `imagemagick`, `7zip`, `unzip` |
|
||||
| Misc CLI | `gum`, `glow`, `atuin`, `wget`, `starship`, `zsh-syntax-highlighting` |
|
||||
| Media and preview (yazi and tv deps) | `ffmpeg`, `ffmpegthumbnailer`, `poppler`, `resvg`, `imagemagick`, `chafa`, `7zip`, `unzip` |
|
||||
| Remote | `mosh`, `sshfs`, `tailscale` |
|
||||
| Misc CLI | `mise`, `gum`, `glow`, `atuin`, `wget`, `starship`, `zsh-syntax-highlighting` |
|
||||
| Fonts | `ttf-victor-mono-nerd` |
|
||||
|
||||
`packages.arch.aur`, installed with `paru -S --needed --noconfirm` on every Linux machine: `topgrade`.
|
||||
`packages.arch.aur`, installed with `yay -S --needed --noconfirm` (or `paru`) on every Linux machine: `topgrade`, `portop`.
|
||||
|
||||
`packages.arch.desktop`, added only for roles `desktop` and `laptop`:
|
||||
|
||||
| Source | Packages |
|
||||
| --- | --- |
|
||||
| pacman | `niri`, `xdg-user-dirs` |
|
||||
| AUR | `noctalia-shell`, `vicinae-bin` |
|
||||
| pacman | `niri`, `xwayland-satellite`, `polkit-gnome`, `uwsm`, `xdg-user-dirs`; Wayland utilities `wl-clipboard`, `cliphist`, `wtype`, `ydotool`, `grim`, `slurp`, `hyprpicker`, `pamixer`, `brightnessctl`, `libnotify`; apps `nautilus`, `imv`, `mpv`, `evince`, `chromium`, `obsidian` |
|
||||
| AUR | `noctalia-git`, `vicinae-bin`, `beeper-bin`, `fastmail`, `tldraw-offline-bin` |
|
||||
| `[omarchy]` repo (`packages.arch.desktop.omarchy`, only when `pacman-conf -l` lists that repo) | `herdr`, `flea`, `voxtype-bin`, `xdg-terminal-exec`, `hyprland-preview-share-picker`, `brave-origin-bin`, `claude-desktop`, `1password`, `spotify` |
|
||||
|
||||
Hyprland, Waybar and the `omarchy-*` commands come with the Omarchy install and are not declared. `niri-dynamic-workspaces` (niri startup) has no package; install it by hand.
|
||||
|
||||
</Tab>
|
||||
<Tab title="macOS">
|
||||
|
||||
`packages.darwin.brew`, installed with `brew install`:
|
||||
|
||||
`fish`, `neovim`, `tmux`, `yazi`, `lazygit`, `lazydocker`, `btop`, `fastfetch`, `git`, `gh`, `git-delta`, `fzf`, `fd`, `ripgrep`, `zoxide`, `eza`, `bat`, `jq`, `duf`, `ffmpeg`, `ffmpegthumbnailer`, `poppler`, `resvg`, `imagemagick`, `sevenzip`, `gum`, `glow`, `atuin`, `starship`, `zsh-syntax-highlighting`, `topgrade`
|
||||
`fish`, `neovim`, `helix`, `tmux`, `yazi`, `lazygit`, `lazydocker`, `btop`, `fastfetch`, `onefetch`, `television`, `serie`, `tig`, `gitui`, `tldr`, `navi`, `git`, `gh`, `git-delta`, `tea`, `fzf`, `fd`, `ripgrep`, `zoxide`, `eza`, `bat`, `jq`, `duf`, `ffmpeg`, `ffmpegthumbnailer`, `poppler`, `resvg`, `imagemagick`, `chafa`, `sevenzip`, `mosh`, `mise`, `gum`, `glow`, `atuin`, `starship`, `zsh-syntax-highlighting`, `topgrade`
|
||||
|
||||
`packages.darwin.cask`, installed with `brew install --cask`: `kitty`, `font-victor-mono-nerd-font`.
|
||||
|
||||
Compared with Arch, macOS has no `micro`, `diffnav`, `unzip`, or `wget`, and gets `topgrade` from Homebrew instead of the AUR. The role does not change the macOS list.
|
||||
Compared with Arch, macOS has no `micro`, `diffnav`, `mdfried`, `docker`, `sshfs`, `tailscale`, `unzip`, or `wget`, and gets `topgrade` from Homebrew instead of the AUR. The role does not change the macOS list.
|
||||
|
||||
</Tab>
|
||||
<Tab title="Shared">
|
||||
@@ -63,7 +67,7 @@ Compared with Arch, macOS has no `micro`, `diffnav`, `unzip`, or `wget`, and get
|
||||
| `dlvhdr/gh-dash` | `gh dash`: PR and issue dashboard |
|
||||
| `meiji163/gh-notify` | `gh notify`: notifications in the terminal |
|
||||
|
||||
`packages.shared.go` is an empty list. `packages.shared.cargo` lists `suvadu`. No script in the repo reads either key; they document intent only, and cargo installs are kept current by topgrade's `[cargo]` step.
|
||||
`packages.shared.cargo` lists `suvadu` and `mandible` (the tmux-palette "mandible" item runs `~/.local/bin/mandible-pick`). [`run_onchange_after_40-post.sh.tmpl`](/chezmoi/scripts#40-post) installs any that `cargo install --list` lacks, and skips the step when `cargo` is absent. `packages.shared.go` is an empty list that no script reads.
|
||||
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
@@ -15,7 +15,7 @@ Six scripts run during `chezmoi apply`. Four live in `.chezmoiscripts/`, a direc
|
||||
<Step title="20-gh-extensions (after, onchange)">Install gh extensions.</Step>
|
||||
<Step title="25-skills (after, onchange)">Install and prune agent skills.</Step>
|
||||
<Step title="30-user-services (after, once)">Enable systemd user units on Linux (nirinit, kitty-day-save, projects-sync.timer).</Step>
|
||||
<Step title="40-post (after, onchange)">bat cache, font cache.</Step>
|
||||
<Step title="40-post (after, onchange)">bat cache, font cache, cargo installs.</Step>
|
||||
<Step title="build-bat-cache (after, onchange)">Rebuild bat cache when its theme or config changes.</Step>
|
||||
<Step title="install-yazi-plugins (after, onchange)">Reinstall yazi plugins when the manifest changes.</Step>
|
||||
</Steps>
|
||||
@@ -26,7 +26,7 @@ Six scripts run during `chezmoi apply`. Four live in `.chezmoiscripts/`, a direc
|
||||
| `.chezmoiscripts/run_onchange_after_20-gh-extensions.sh.tmpl` | after | onchange | sha256 of `packages.shared.gh_extensions` as JSON |
|
||||
| `.chezmoiscripts/run_onchange_after_25-skills.sh.tmpl` | after | onchange | sha256 of `.skills` as JSON |
|
||||
| `.chezmoiscripts/run_once_after_30-user-services.sh.tmpl` | after | once | Runs once per distinct rendered content |
|
||||
| `.chezmoiscripts/run_onchange_after_40-post.sh.tmpl` | after | onchange | Only edits to the script itself (or an OS change) |
|
||||
| `.chezmoiscripts/run_onchange_after_40-post.sh.tmpl` | after | onchange | sha256 of `packages.shared.cargo` as JSON; also edits to the script itself or an OS change |
|
||||
| `run_onchange_after_build-bat-cache.sh.tmpl` | after | onchange | sha256 of `dot_config/bat/themes/cyberdream.tmTheme` and `dot_config/bat/config` |
|
||||
| `run_onchange_after_install-yazi-plugins.sh.tmpl` | after | onchange | sha256 of `~/.config/yazi/package.toml` (empty when the file is absent) |
|
||||
|
||||
@@ -46,10 +46,10 @@ Six scripts run during `chezmoi apply`. Four live in `.chezmoiscripts/`, a direc
|
||||
<Tab title="Linux">
|
||||
|
||||
1. Uses `pacman` directly when running as root, otherwise `sudo pacman`.
|
||||
2. `pacman -S --needed --noconfirm` with every entry in `packages.arch.pacman`.
|
||||
3. For roles `desktop` and `laptop`, a second `pacman -S --needed --noconfirm` with `packages.arch.desktop.pacman`.
|
||||
2. `pacman -T` filters each list down to names no installed package provides (so `mise-bin` satisfies `mise`, `yazi-git` satisfies `yazi`), then `pacman -S --needed --noconfirm` installs the rest of `packages.arch.pacman`.
|
||||
3. For roles `desktop` and `laptop`, the same for `packages.arch.desktop.pacman`, and, when `pacman-conf -l` lists an `omarchy` repo, for `packages.arch.desktop.omarchy`.
|
||||
4. Builds the AUR list: `packages.arch.desktop.aur` plus `packages.arch.aur` for `desktop`/`laptop`, only `packages.arch.aur` for other roles.
|
||||
5. If the list is non-empty and `paru` exists, runs `paru -S --needed --noconfirm` on it. Without `paru` it prints `warning: paru not found — skipping AUR packages: …` and continues.
|
||||
5. If the list is non-empty, runs `yay -S --needed --noconfirm` on it, falling back to `paru`. With neither it prints `warning: yay/paru not found — skipping AUR packages: …` and continues.
|
||||
|
||||
</Tab>
|
||||
<Tab title="macOS">
|
||||
@@ -101,12 +101,13 @@ Other personal automation units (brain-lens, omp-loop, rclone, hermes, voxtype)
|
||||
|
||||
## 40-post [#40-post]
|
||||
|
||||
`.chezmoiscripts/run_onchange_after_40-post.sh.tmpl` is post-apply housekeeping. It has no hash comment, so it only re-runs when the script itself is edited.
|
||||
`.chezmoiscripts/run_onchange_after_40-post.sh.tmpl` is post-apply housekeeping. It re-runs when the script is edited or `packages.shared.cargo` changes.
|
||||
|
||||
| Step | Condition | Action |
|
||||
| --- | --- | --- |
|
||||
| bat cache | `bat` installed | `bat cache --build` |
|
||||
| Font cache | Linux, `fc-cache` installed | `fc-cache -f` |
|
||||
| cargo | `cargo` installed | `cargo install --locked <crate>` for each `packages.shared.cargo` entry missing from `cargo install --list` |
|
||||
|
||||
Each step ignores failures (`|| true`). tpm is cloned by [`.chezmoiexternal.toml`](/chezmoi/externals-and-ignore#externals), not here.
|
||||
|
||||
|
||||
@@ -27,7 +27,8 @@ Two Wayland compositors are configured side by side. niri is the original setup,
|
||||
|
||||
| Source | Packages |
|
||||
| --- | --- |
|
||||
| pacman | `niri`, `xdg-user-dirs` |
|
||||
| AUR (via `paru`) | `noctalia-shell`, `vicinae-bin` |
|
||||
| pacman | `niri`, `xwayland-satellite`, `polkit-gnome`, `uwsm`, `xdg-user-dirs`, Wayland utilities (`wl-clipboard`, `cliphist`, `wtype`, `ydotool`, `grim`, `slurp`, `hyprpicker`, `pamixer`, `brightnessctl`, `libnotify`) and the bound apps (`nautilus`, `imv`, `mpv`, `evince`, `chromium`, `obsidian`) |
|
||||
| AUR (via `yay`/`paru`) | `noctalia-git`, `vicinae-bin`, `beeper-bin`, `fastmail`, `tldraw-offline-bin` |
|
||||
| `[omarchy]` repo, when configured | `herdr`, `flea`, `voxtype-bin`, `xdg-terminal-exec`, `hyprland-preview-share-picker`, `brave-origin-bin`, `claude-desktop`, `1password`, `spotify` |
|
||||
|
||||
The script skips AUR packages with a warning if `paru` is not installed. Hyprland, Waybar, and the `omarchy-*` commands that the scripts call (`omarchy-menu`, `omarchy-launch-or-focus`, and others) come from an Omarchy install. This repo does not install them. See [chezmoi scripts](/chezmoi/scripts) for the full install flow.
|
||||
The script skips AUR packages with a warning if neither `yay` nor `paru` is installed. Hyprland, Waybar, and the `omarchy-*` commands that the scripts call (`omarchy-menu`, `omarchy-launch-or-focus`, and others) come from an Omarchy install. This repo does not install them. See [chezmoi scripts](/chezmoi/scripts) for the full install flow and [packages.yaml](/chezmoi/data#packagesyaml) for the complete lists.
|
||||
@@ -55,9 +55,9 @@ Linux `desktop` and `laptop` roles only. `.chezmoiignore.tmpl` skips `~/.config/
|
||||
|
||||
## Installation
|
||||
|
||||
- `niri` and `xdg-user-dirs` from pacman, `noctalia-shell` and `vicinae-bin` from the AUR. Declared under `packages.arch.desktop` in `.chezmoidata/packages.yaml` and installed by `run_onchange_before_10-packages.sh.tmpl` for `desktop`/`laptop` roles. See [chezmoi scripts](/chezmoi/scripts).
|
||||
- `niri`, `xwayland-satellite`, `polkit-gnome`, `cliphist`, `wl-clipboard` and `xdg-user-dirs` from pacman, `noctalia-git` and `vicinae-bin` from the AUR. Declared under `packages.arch.desktop` in `.chezmoidata/packages.yaml` and installed by `run_onchange_before_10-packages.sh.tmpl` for `desktop`/`laptop` roles. See [chezmoi scripts](/chezmoi/scripts).
|
||||
- `.chezmoiscripts/run_once_after_30-user-services.sh.tmpl` runs once on Linux. If `~/.config/systemd/user/nirinit.service` exists, it runs `systemctl --user daemon-reload` and `systemctl --user enable nirinit.service`. The script's comment says other personal units (brain-lens, omp-loop, rclone, hermes, voxtype) ship as files only and are enabled by hand. The repo does not currently contain `dot_config/systemd`, so the unit must come from elsewhere for the enable step to run.
|
||||
- Tools the config calls but does not install: `cliphist`/`wl-paste`, `polkit-gnome`, `kbuildsycoca6`, `voxtype`, `niri-dynamic-workspaces`, `dot-screenshot`, `niri-smart-close`, `niri-smart-move`, and the `capitaine-cursors-light` cursor theme. `niri-smart-close`, `niri-smart-move`, and `dot-screenshot` are called by path or name but are not in this repo. [vicinae](/desktop/vicinae) is installed and configured here.
|
||||
- Tools the config calls but does not install: `kbuildsycoca6`, `niri-dynamic-workspaces`, `dot-screenshot`, `niri-smart-close`, `niri-smart-move`, and the `capitaine-cursors-light` cursor theme. `niri-smart-close`, `niri-smart-move`, and `dot-screenshot` are called by path or name but are not in this repo. `voxtype-bin` comes from the `[omarchy]` repo when present.
|
||||
|
||||
## Load order
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ The script checks the release tarball's SHA-256 before installing, as upstream d
|
||||
|
||||
<Steps>
|
||||
<Step title="Package manager">
|
||||
**Arch**: `sudo` for pacman. `paru` is needed for AUR packages (`topgrade`, and `noctalia-shell` / `vicinae-bin` on desktop roles); without it the package script prints a warning and skips them.
|
||||
**Arch**: `sudo` for pacman. `yay` (Omarchy ships it) or `paru` is needed for AUR packages (`topgrade`, `portop`, and the desktop apps on desktop roles); without one the package script prints a warning and skips them.
|
||||
**macOS**: [Homebrew](https://brew.sh) is required; the package script exits with an error if `brew` is missing.
|
||||
</Step>
|
||||
<Step title="GitHub access">
|
||||
@@ -79,7 +79,7 @@ sh -c "$(curl -fsSL https://dots.prd.lk/install)" -- --version
|
||||
`.chezmoi.toml.tmpl` asks once for **name**, **email**, and **role** (`desktop`, `laptop`, `mac`, `server`). Answers are stored in `~/.config/chezmoi/chezmoi.toml` and not asked again. See [Configuration](/chezmoi/config).
|
||||
</Step>
|
||||
<Step title="Packages">
|
||||
`run_onchange_before_10-packages` installs everything in `.chezmoidata/packages.yaml` with pacman/paru or Homebrew before any file is written. See [Scripts](/chezmoi/scripts).
|
||||
`run_onchange_before_10-packages` installs everything in `.chezmoidata/packages.yaml` with pacman/yay or Homebrew before any file is written. See [Scripts](/chezmoi/scripts).
|
||||
</Step>
|
||||
<Step title="Files and externals">
|
||||
Configs are linked into `$HOME` (symlink mode). The neovim config and a bat syntax are cloned as externals. See [Externals and ignore rules](/chezmoi/externals-and-ignore).
|
||||
|
||||
@@ -63,7 +63,7 @@ These packages are declared in `.chezmoidata/packages.yaml` but have no config f
|
||||
| `wget` | HTTP downloads | Not referenced by any config. |
|
||||
| `zsh-syntax-highlighting` | zsh highlighting | Sourced by the zsh setup. See [Shell](/shell). |
|
||||
| `ttf-victor-mono-nerd` / `font-victor-mono-nerd-font` | Nerd Font | Terminal font. See [Terminal](/terminal). |
|
||||
| `suvadu` | Declared under `packages.shared.cargo` | No install script reads the `cargo` list, so it is not installed automatically. |
|
||||
| `suvadu`, `mandible` | Declared under `packages.shared.cargo` | Installed by [`40-post`](/chezmoi/scripts#40-post) when `cargo` exists. `mandible` backs the tmux-palette "mandible" item via `~/.local/bin/mandible-pick`. |
|
||||
|
||||
Tools with their own pages in other sections: [fish](/shell/fish), [starship](/shell/starship), and [atuin](/shell/atuin) under Shell; [kitty](/terminal/kitty) and [tmux](/terminal/tmux) under Terminal.
|
||||
|
||||
|
||||
Reference in new issue
Block a user