1
1
Fork
You've already forked guixboy
0
A friendly companion for Guix
  • Scheme 96.2%
  • Shell 3.2%
  • Makefile 0.6%
Find a file
Trevor Arjeski 58627bbe47
refactor: fix readiness/search bugs and consolidate shared logic
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.
2026年06月11日 18:33:39 +00:00
assets docs: add guixboy logo 2026年05月07日 19:29:37 +03:00
bin fix: search current guix package set 2026年06月07日 22:10:36 +03:00
completions/zsh refactor: fix readiness/search bugs and consolidate shared logic 2026年06月11日 18:33:39 +00:00
doc refactor: fix readiness/search bugs and consolidate shared logic 2026年06月11日 18:33:39 +00:00
extensions/guix/extensions feat: initial guixboy cli 2026年05月07日 19:02:57 +03:00
modules/guixboy refactor: fix readiness/search bugs and consolidate shared logic 2026年06月11日 18:33:39 +00:00
tests refactor: fix readiness/search bugs and consolidate shared logic 2026年06月11日 18:33:39 +00:00
.envrc chore: add direnv guix environment 2026年05月16日 21:37:26 +03:00
AGENTS.md fix: resolve agent standards gaps 2026年05月16日 22:59:28 +03:00
COPYING feat: initial guixboy cli 2026年05月07日 19:02:57 +03:00
Makefile feat: add package dependency tree command 2026年05月22日 17:10:28 +03:00
manifest.scm feat: add sqlite package index 2026年05月08日 21:26:43 +03:00
README.md feat: add package dependency tree command 2026年05月22日 17:10:28 +03:00

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.