From 30314160f18b79b912a5b308c30237567eb120b0 Mon Sep 17 00:00:00 2001 From: Prad Nukala Date: Fri, 16 Oct 2026 12:01:52 -0400 Subject: [PATCH] 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). --- .chezmoidata/packages.yaml | 79 +++++++++++++++++-- .../run_onchange_after_40-post.sh.tmpl | 9 +++ .../run_onchange_before_10-packages.sh.tmpl | 31 +++++--- AGENTS.md | 15 ++++ README.md | 4 +- docs/chezmoi/config.mdx | 4 +- docs/chezmoi/data.mdx | 28 ++++--- docs/chezmoi/scripts.mdx | 13 +-- docs/desktop/index.mdx | 7 +- docs/desktop/niri.mdx | 4 +- docs/installation.mdx | 4 +- docs/tools/index.mdx | 2 +- dot_config/fish | 2 +- 13 files changed, 156 insertions(+), 46 deletions(-) diff --git a/.chezmoidata/packages.yaml b/.chezmoidata/packages.yaml index 751019e..7678038 100644 --- a/.chezmoidata/packages.yaml +++ b/.chezmoidata/packages.yaml @@ -4,21 +4,33 @@ packages: # shell + editors - fish - neovim - - tmux + - helix - micro + - tmux # terminal - kitty - # tui tools + # tui tools (tmux-palette, television cables, fish functions) - yazi - lazygit - lazydocker + - docker + - docker-compose - btop - fastfetch + - onefetch + - television + - serie + - tig + - gitui + - tldr + - navi + - mdfried # vcs + forge - git - github-cli - git-delta - diffnav + - tea # search / files - fzf - fd @@ -28,15 +40,21 @@ packages: - bat - jq - duf - # media / preview (yazi deps) + # media / preview (yazi + tv deps) - ffmpeg - ffmpegthumbnailer - poppler - resvg - imagemagick + - chafa - 7zip - unzip + # remote + - mosh + - sshfs + - tailscale # misc cli + - mise - gum - glow - atuin @@ -47,27 +65,74 @@ packages: - ttf-victor-mono-nerd aur: - topgrade + - portop desktop: # linux desktop layer (role desktop|laptop) pacman: - niri + - xwayland-satellite + - polkit-gnome + - uwsm - xdg-user-dirs + # wayland utilities the compositor configs and ~/.local/bin scripts call + - wl-clipboard + - cliphist + - wtype + - ydotool + - grim + - slurp + - hyprpicker + - pamixer + - brightnessctl + - libnotify + # desktop apps bound in niri/hypr + - nautilus + - imv + - mpv + - evince + - chromium + - obsidian aur: - - noctalia-shell + - noctalia-git - vicinae-bin + - beeper-bin + - fastmail + - tldraw-offline-bin + # [omarchy] pacman repo (pkgs.omarchy.org); installed only when that repo + # is configured. Hyprland, waybar and the omarchy-* scripts come with + # the Omarchy install itself and are not listed. + omarchy: + - herdr + - flea + - voxtype-bin + - xdg-terminal-exec + - hyprland-preview-share-picker + - brave-origin-bin + - claude-desktop + - 1password + - spotify darwin: brew: - fish - neovim + - helix - tmux - yazi - lazygit - lazydocker - btop - fastfetch + - onefetch + - television + - serie + - tig + - gitui + - tldr + - navi - git - gh - git-delta + - tea - fzf - fd - ripgrep @@ -81,7 +146,10 @@ packages: - poppler - resvg - imagemagick + - chafa - sevenzip + - mosh + - mise - gum - glow - atuin @@ -97,6 +165,7 @@ packages: - prdlk/gh-commit - dlvhdr/gh-dash - meiji163/gh-notify - go: [] + # cargo installs (run_onchange_after_40-post), skipped when cargo is absent cargo: - suvadu + - mandible diff --git a/.chezmoiscripts/run_onchange_after_40-post.sh.tmpl b/.chezmoiscripts/run_onchange_after_40-post.sh.tmpl index 1842acb..e1e3781 100644 --- a/.chezmoiscripts/run_onchange_after_40-post.sh.tmpl +++ b/.chezmoiscripts/run_onchange_after_40-post.sh.tmpl @@ -7,3 +7,12 @@ if command -v bat >/dev/null 2>&1; then bat cache --build >/dev/null || true; fi {{ if eq .chezmoi.os "linux" -}} if command -v fc-cache >/dev/null 2>&1; then fc-cache -f >/dev/null || true; fi {{ end -}} + +# cargo installs from packages.shared.cargo; skipped when cargo is absent. +# cargo hash: {{ .packages.shared.cargo | toJson | sha256sum }} +if command -v cargo >/dev/null 2>&1; then + installed=$(cargo install --list | awk '/^[^ ]/{print $1}') +{{ range .packages.shared.cargo }} + echo "$installed" | grep -qx "{{ . }}" || cargo install --locked "{{ . }}" +{{ end }} +fi diff --git a/.chezmoiscripts/run_onchange_before_10-packages.sh.tmpl b/.chezmoiscripts/run_onchange_before_10-packages.sh.tmpl index d9b59e5..9246646 100644 --- a/.chezmoiscripts/run_onchange_before_10-packages.sh.tmpl +++ b/.chezmoiscripts/run_onchange_before_10-packages.sh.tmpl @@ -6,26 +6,37 @@ set -eu {{ if eq .chezmoi.os "linux" -}} if [ "$(id -u)" -eq 0 ]; then PACMAN="pacman"; else PACMAN="sudo pacman"; fi -# shellcheck disable=SC2086 # word splitting intended -$PACMAN -S --needed --noconfirm \ -{{ range .packages.arch.pacman }} {{ . }} \ -{{ end }} && true +# Install only what no installed package already provides (`pacman -T`), so a +# machine with mise-bin or yazi-git is not asked to replace them with mise/yazi. +install_missing() { + missing=$(pacman -T "$@" || true) + # shellcheck disable=SC2086 # word splitting intended + [ -z "$missing" ] || $PACMAN -S --needed --noconfirm $missing +} + +install_missing {{ range .packages.arch.pacman }}{{ . }} {{ end }} {{ if or (eq .role "desktop") (eq .role "laptop") -}} -$PACMAN -S --needed --noconfirm \ -{{ range .packages.arch.desktop.pacman }} {{ . }} \ -{{ end }} && true +install_missing {{ range .packages.arch.desktop.pacman }}{{ . }} {{ end }} + +# [omarchy] repo packages — only where pacman.conf has that repo +if pacman-conf -l | grep -qx omarchy; then + install_missing {{ range .packages.arch.desktop.omarchy }}{{ . }} {{ end }} +fi aur_pkgs="{{ range .packages.arch.desktop.aur }}{{ . }} {{ end }}{{ range .packages.arch.aur }}{{ . }} {{ end }}" {{ else -}} aur_pkgs="{{ range .packages.arch.aur }}{{ . }} {{ end }}" {{ end -}} if [ -n "$(echo "$aur_pkgs" | tr -d ' ')" ]; then - if command -v paru >/dev/null 2>&1; then + if command -v yay >/dev/null 2>&1; then AUR="yay" + elif command -v paru >/dev/null 2>&1; then AUR="paru" + else AUR=""; fi + if [ -n "$AUR" ]; then # shellcheck disable=SC2086 - paru -S --needed --noconfirm $aur_pkgs + $AUR -S --needed --noconfirm $aur_pkgs else - echo "warning: paru not found — skipping AUR packages: $aur_pkgs" >&2 + echo "warning: yay/paru not found — skipping AUR packages: $aur_pkgs" >&2 fi fi diff --git a/AGENTS.md b/AGENTS.md index 2c70376..eeed326 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -58,6 +58,21 @@ Pulling a remote change before the refresh window: `chezmoi apply --refresh-exte 4. `mv ~/.config/ /tmp/bak && chezmoi apply --force ~/.config/`; diff against the repo, then delete the backup. 5. Update `docs/` (the tool's page, `docs/terminal/index.mdx` or sibling index, `docs/chezmoi/externals-and-ignore.mdx`) and any alias pointing at the old source path (`dot_config/fish/conf.d/20-aliases.fish`, `.chezmoidata/aliases.yaml`). +## Packages: every referenced tool must be declared + +`.chezmoidata/packages.yaml` is the install manifest; the goal is `chezmoi init --apply` on a fresh Arch (Omarchy) machine yields a working setup. When a config, script, tmux-palette item, television cable `requirements`, or compositor binding starts calling a new binary, declare its package in the same change: + +| Key | Installed by | When | +| --- | --- | --- | +| `arch.pacman` / `arch.aur` | `10-packages` (pacman / `yay` or `paru`) | every Linux role | +| `arch.desktop.pacman` / `.aur` | same | roles `desktop`, `laptop` | +| `arch.desktop.omarchy` | pacman, only if `pacman-conf -l` lists `omarchy` | Omarchy machines | +| `darwin.brew` / `.cask` | Homebrew | macOS | +| `shared.cargo` | `40-post`, if `cargo` exists | every OS | +| `shared.gh_extensions` | `20-gh-extensions` | every OS | + +Find the package with `pacman -Qo "$(command -v )"`; `pacman -Qm` lists AUR/foreign packages, `pacman -Si ` shows the repo (`extra` vs `omarchy`). Verify names before committing: `pacman -Si` for repo packages, `https://aur.archlinux.org/rpc/v5/info?arg[]=` for AUR, `https://formulae.brew.sh/api/formula/.json` for brew. Hyprland/Waybar/`omarchy-*` come with Omarchy and are not declared. Tools installed through `mise` (`~/.config/mise/config.toml`, local-only) are not covered by the manifest. + ## Verify - `chezmoi diff` empty after apply. diff --git a/README.md b/README.md index f6abf64..09854cb 100644 --- a/README.md +++ b/README.md @@ -20,8 +20,8 @@ layer (niri, noctalia, fontconfig, systemd user units) — `mac` and ## Prerequisites -- **Arch**: `paru` for AUR packages (optional — the install script warns - and skips AUR if missing). `sudo` for pacman. +- **Arch**: `yay` or `paru` for AUR packages (optional — the install script + warns and skips AUR if missing). `sudo` for pacman. - **macOS**: [Homebrew](https://brew.sh). - **Secrets**: `age`-encrypted files need the key at `~/.config/chezmoi/key.txt`. Copy it there **before** `chezmoi apply` diff --git a/docs/chezmoi/config.mdx b/docs/chezmoi/config.mdx index 1b20c40..06a631d 100644 --- a/docs/chezmoi/config.mdx +++ b/docs/chezmoi/config.mdx @@ -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 | diff --git a/docs/chezmoi/data.mdx b/docs/chezmoi/data.mdx index b69d8ec..9ca823e 100644 --- a/docs/chezmoi/data.mdx +++ b/docs/chezmoi/data.mdx @@ -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. @@ -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. `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. @@ -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. diff --git a/docs/chezmoi/scripts.mdx b/docs/chezmoi/scripts.mdx index 0c3c8b6..cba61c5 100644 --- a/docs/chezmoi/scripts.mdx +++ b/docs/chezmoi/scripts.mdx @@ -15,7 +15,7 @@ Six scripts run during `chezmoi apply`. Four live in `.chezmoiscripts/`, a direc Install gh extensions. Install and prune agent skills. Enable systemd user units on Linux (nirinit, kitty-day-save, projects-sync.timer). - bat cache, font cache. + bat cache, font cache, cargo installs. Rebuild bat cache when its theme or config changes. Reinstall yazi plugins when the manifest changes. @@ -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 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. @@ -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 ` 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. diff --git a/docs/desktop/index.mdx b/docs/desktop/index.mdx index e1ae469..9b92f24 100644 --- a/docs/desktop/index.mdx +++ b/docs/desktop/index.mdx @@ -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. diff --git a/docs/desktop/niri.mdx b/docs/desktop/niri.mdx index 2c8e3d9..f50ed56 100644 --- a/docs/desktop/niri.mdx +++ b/docs/desktop/niri.mdx @@ -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 diff --git a/docs/installation.mdx b/docs/installation.mdx index 9d9e9dd..3648a3e 100644 --- a/docs/installation.mdx +++ b/docs/installation.mdx @@ -23,7 +23,7 @@ The script checks the release tarball's SHA-256 before installing, as upstream d - **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. @@ -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). - `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). 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). diff --git a/docs/tools/index.mdx b/docs/tools/index.mdx index 0d42abd..0685403 100644 --- a/docs/tools/index.mdx +++ b/docs/tools/index.mdx @@ -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. diff --git a/dot_config/fish b/dot_config/fish index 3eeef30..a6c8d02 160000 --- a/dot_config/fish +++ b/dot_config/fish @@ -1 +1 @@ -Subproject commit 3eeef30313cb3e143c81255ca8f14c5a315ffe50 +Subproject commit a6c8d0234403e3d82f44e6c18f182f65bafb1c08