LinuxCommandLibrary

guix-package

Install, remove, and manage software packages

TLDR

Install a new package

$ guix package [[-i|--install]] [package]
copy

Remove a package
$ guix package [[-r|--remove]] [package]
copy

Search the package database for a regex
$ guix package [[-s|--search]] "[search_pattern]"
copy

List installed packages
$ guix package [[-I|--list-installed]]
copy

List generations
$ guix package [[-l|--list-generations]]
copy

Roll back to the previous generation
$ guix package --roll-back
copy

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)

Copied to clipboard