A package actually has 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
A noteworthy exception to this rule is when the project name is only a
single character, or if an older maintained project with the same name
already exists—regardless of whether it has already been packaged for
Guix. Use common sense to make such names unambiguous and meaningful.
For example, Guix’s package for the shell called “s” upstream is
s-shell and not
s. Feel free to ask your fellow
hackers for inspiration.
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.