A friendly companion for Guix
- Scheme 96.2%
- Shell 3.2%
- Makefile 0.6%
|
Trevor Arjeski
58627bbe47
Correctness fixes: - Treat non-2xx substitute cache responses as unhealthy. http-get does not throw on 404/500, so a responding-but-broken mirror was reported cache-ok and could flip pull/reconfigure readiness to "ready". - Stop zeroing search relevance when one query term misses the heuristic fields; accumulate per-term scores instead (FTS already gates rows). - Merge the duplicate package-name relevance metric into one weight. - Only rebuild the database schema on an actual version change, never on a transient error, which previously wiped all cached snapshots. - De-duplicate update rows so the stored update_count matches the rows kept after the (package, installed, available) primary-key collapse. Consolidation: - Add (guixboy substitute-health) with the canonical cache/weather/key predicates, removing the forked copies in pull/readiness/substitutes. - Move now-ms, read-port-string, and file->string* into (guixboy utils); export shared substitute sample-size/timeout defaults. - Validate --samples/--timeout instead of silently ignoring bad values. - Generate the zsh _guixboy_commands array from %commands so the command set cannot drift; add missing reconfigure actions and drop the phantom "substitutes use" reference. Cleanup: - Remove the maybe-int no-op, the latent-broken insert-positioned branch, write-only package-index mtime metadata, and trivial count/any wrappers. Add tests for the cache HTTP-code check, update-row de-duplication, and completion/command-table drift. Regenerate docs and completions. |
||
|---|---|---|
| assets | docs: add guixboy logo | |
| bin | fix: search current guix package set | |
| completions/zsh | refactor: fix readiness/search bugs and consolidate shared logic | |
| doc | refactor: fix readiness/search bugs and consolidate shared logic | |
| extensions/guix/extensions | feat: initial guixboy cli | |
| modules/guixboy | refactor: fix readiness/search bugs and consolidate shared logic | |
| tests | refactor: fix readiness/search bugs and consolidate shared logic | |
| .envrc | chore: add direnv guix environment | |
| AGENTS.md | fix: resolve agent standards gaps | |
| COPYING | feat: initial guixboy cli | |
| Makefile | feat: add package dependency tree command | |
| manifest.scm | feat: add sqlite package index | |
| README.md | feat: add package dependency tree command | |
guixboy
guixboy logo
Guixboy is a Guile CLI for common Guix System maintenance workflows.
What It Looks Like
Guixboy keeps Guix visible, but adds cached context and higher-level checks around common maintenance decisions.
Check whether now is a good time to pull
guixboy pull check official --samples 25 --timeout 15
pull readiness: ready
channels: ok
substitutes:
official cache: ok weather: ok key: trusted
reasons:
- channel metadata is reachable
- at least one selected substitute URL passed cache and weather checks
Preview a reconfigure before running it
guixboy reconfigure plan system niri
Reconfigure plan for system target niri
build:
guix system build -L ~/Workspace/dotfiles -e '(@ ... %system)'
apply:
sudo guix system reconfigure -L ~/Workspace/dotfiles -e '(@ ... %system)'
reconfigure readiness: caution
updates: 12
sampled reconfigure updates: guile, mesa, zstd
Search packages from the SQLite cache
guixboy search guile
name: guile
version: 3.0.9
outputs: debug, out
location: gnu/packages/guile.scm:356:2
synopsis: Scheme implementation intended especially for extensions
relevance: 37
Explain profile/version surprises
guixboy package explain guile
guile
installed: 3.0.11 in system
available: 3.0.9 from current Guix
reason: installed version is newer than the current default package set
Dry-run store cleanup recipes
guixboy gc run delete-generations-2m-free-10G --dry-run
sudo guix system delete-generations 2m
guix home delete-generations 2m
guix pull --delete-generations=2m
guix gc -F 10G
Questions Guixboy Answers
| Question | Command | What it adds |
|---|---|---|
Should I run guix pull right now? |
guixboy pull check |
Checks channel metadata, substitute cache reachability, sampled weather, and key trust before changing Guix itself. |
| What happens if I reconfigure this target? | guixboy reconfigure plan system TARGET or guixboy reconfigure plan home TARGET |
Shows build/apply commands, relevant profile updates, and substitute readiness for packages that would change. |
| Why do installed and available versions differ? | guixboy package explain NAME |
Compares profile inventory with the current package index and points at channel/profile mismatch causes. |
| What depends on this package? | guixboy tree NAME --invert |
Walks the cached Guix package dependency graph in reverse. |
| Where is this package installed? | guixboy profiles where NAME |
Reads the profile inventory cache and reports matching profiles, outputs, and paths. |
| What can I safely clean up? | guixboy gc list and guixboy gc run NAME --dry-run |
Names GC recipes, shows risk/category, and supports dry-run command previews. |
Run guixboy --help or guixboy COMMAND --help for the full command reference.