A package has actually two names associated with it:
First, there is the name of the Scheme variable, the one following
define-public. By this name, the package can be made known in the
Scheme code, for instance as input to another package. Second, there is
the string in the
name field of a package definition. This name
is used by package management commands such as
guix package and
Both are usually the same and correspond to the lowercase conversion of
the project name chosen upstream, with underscores replaced with
hyphens. For instance, GNUnet is available as
We do not add
lib prefixes for library packages, unless these are
already part of the official project name. But see Python Modules and Perl Modules for special rules concerning modules for
the Python and Perl languages.
Font package names are handled differently, see Fonts.