GNU Guix

GNU Guix, GNU’s functional package manager.

Note

All operations target the current user’s default profile. Declarative system configuration (Guix System config.scm) is not covered.

Guix is a rolling release with no upstream semver to pin against: guix --version reports a release tag, a git describe string, or the bare commit hash of an in-tree checkout. No requirement floor is enforced, since any working guix will do.

Warning

search evaluates every package definition to match the query, so its cost scales with the size of the package set, not the result count: tens of seconds on a freshly pulled Guix, longer still from an in-tree development checkout. The call is bounded by mpm --timeout (120s by default), past which it is killed with no results returned, so a slow search can look like a hang.

Platforms

  • 🐧 Linux

Operations

Operation

Supported

Notes

installed

outdated

search

exact and extended search backfilled by mpm

install

upgrade

upgrade_all

remove

sync

cleanup

Ecosystem

  • Accepted purl types: pkg:guix

Usage

$ mpm --guix installed
$ mpm --guix search "query"
$ mpm --guix upgrade --all
$ mpm install pkg:guix/hello
$ mpm --dry-run --guix upgrade --all

Every example above accepts --dry-run, which simulates the underlying manager calls without touching the system: the safe way to watch what mpm would do before trusting it.

Deselect the manager for a single run with --no-guix, disable it from your configuration, or tune its invocation attributes with per-manager overrides.

Command line

  • CLI names, in lookup order: guix

The version is probed by running:

$ guix --version
guix (GNU Guix) 1.4.0

and extracted with the first of these regular expressions to match:

r"guix \(GNU Guix\) (?P<version>\d[\w.\-+]*)"
r"guix \(GNU Guix\) (?P<version>[0-9a-f]{7,40})\b"

Privilege escalation

mpm runs this manager as the current user and never prepends sudo by default. Flip the policy for its privileged operations with --sudo or the per-manager sudo override.

See privilege escalation for the full policy.

Cooldown

State of GNU Guix’s release-age gating, from the cooldown support table:

  • Status: ❌ None

With --cooldown set, mpm skips this manager’s install and upgrade operations rather than run them unguarded (fail-closed); --allow-unsupported-managers opts back in.

Reference traces

Raw native outputs captured in the manager source: the reference mpm’s parsers were written against. If you know GNU Guix well and a transcript below looks wrong, or a newer release changed its output format, report it.

$ guix package --list-installed
hello	2.10	out	/gnu/store/k74skdjjb9c9zqjv9nmgd6zi92wpf3q0-hello-2.10
python	3.10.7	out	/gnu/store/2n3g8n7d5xkp6h4qz1v8m0rjc9wf5aby-python-3.10.7
$ guix upgrade --dry-run
The following packages would be upgraded:
   hello 2.12.1 → 2.12.3
   sed   4.8 → 4.9