guix-package
Install, remove, and manage software packages
TLDR
Install a new package
Remove a package
Search the package database for a regex
List installed packages
List generations
Roll back to the previous generation
SYNOPSIS
guix package [OPTION]… [PACKAGE]…
PARAMETERS
-i, --install=DRAW-EXPRESSION… | FILE | URL
Install packages matching DRAW-EXPRESSION, from FILE, or URL.
-r, --remove=PACKAGE…
Remove matching PACKAGE….
-u, --upgrade[=PACKAGE…]
Upgrade all or specified PACKAGE….
-n, --dry-run
Simulate actions without changes.
-s, --search=REGEXP
Search packages by name/synopsis matching REGEXP.
-I, --list-installed[=REGEXP]
List installed packages, filter by REGEXP.
-A, --list-available[=REGEXP]
List available packages, filter by REGEXP.
-l, --list-manifests
List manifests in ~/.guix-profile.
-p, --profile=PROFILE
Use PROFILE instead of ~/.guix-profile.
--roll-back
Revert to previous profile generation.
--switch-generation[=N=PROFILE]
Switch PROFILE to generation N.
--delete-generations[=PATTERN]
Delete generations matching PATTERN.
--manifest=MANIFEST
Install all in MANIFEST.
-S, --system=SYSTEM
Target SYSTEM like "i686-linux".
--verbosity=LEVEL
Set output verbosity (0-3).
--bootstrap
Use bootstrap binaries.
-v, --verbose
Increase output verbosity.
--load-path=DIR
Prepend DIR to Scheme load path.
DESCRIPTION
guix package is the primary command-line tool for the GNU Guix package manager, a functional and transactional system for handling software deployment. Guix emphasizes reproducible builds, where packages are defined declaratively in Scheme and built in isolated environments via the Guix build daemon.
This command supports installing, removing, upgrading, searching, and listing packages across user profiles. Profiles act as versioned directories of symlinks to package store items, enabling rollbacks and multiple coexisting environments without system-wide changes.
Unlike imperative managers like apt or yum, Guix treats the package store as immutable; operations create new profile generations. It supports multiple architectures, bootstrap from source, and dependency pinning for exact reproducibility. Users can query vast repositories of over 20,000 packages, including those from other distros via imports.
The tool integrates with guix pull for channel updates and guix system for declarative OS configs, making it ideal for developers seeking hermetic and auditable deployments.
CAVEATS
Requires running guix-daemon. Builds from source can be slow; use substitutes for binaries. Profile changes are atomic but store garbage collection needed periodically.
EXAMPLES
guix package -i hello coreutils
Install "hello" and "coreutils".
guix package -s python
Search Python packages.
guix package --upgrade --dry-run
Preview all upgrades.
PROFILES
Profiles (~/.guix-profile) are versioned symlink trees. View with guix package --list-generations; garbage collect old store items with guix gc.
HISTORY
Introduced with GNU Guix 0.1 in 2012 by Ludovic Courtès et al. Evolved through versions: profile generations in 0.2 (2012), search in 0.7 (2014), channels in 0.15 (2018). Actively developed for reproducibility.
SEE ALSO
guix(1), guix-pull(1), guix-system(8), guix-gc(1), guix-size(1)


