What are all the package suffixes? (-unwrapped, -noprefix, -prefixed, etc.)

Is there a glossary of suffixes that a nix package can have? There are three I know of right now: -unwrapped, like yazi and yazi-unwrapped, uutils-coreutils-noprefix, and coreutils-prefixed.

1 Like

i would like to know too! here’s a couple more:

*-wrapper & *-bin
*-nox & *-nographics
*Minimal, *Full, *Big, *-full, *_min, *-fresh, *-still
*-batch
*-ng

etc. etc. i feel like the answer is obvious, but the fact that there’s so many of them is kinda uncomfortable. like, the only thing i’ve noticed is that *-unwrapped packages seem to not work with configurations declared via options, if there are any. for example, the aforementioned yazi-unwrapped or mpv-unwrapped will otherwise scream at an anonymous lambda error if it’s used with a config option (programs.yazi.settings & programs.mpv.config - home manager!)…

:confused:

however, i do happen to know what -prefixed mean, because i happen to use uutils-coreutils-noprefix. so, with a prefixed package you would get a SECOND coreutils, with a uutils- prefix, but with a noprefix package you would REPLACE GNU coreutils, written in C, with the rust written ones. though, you have to use hiPrio for this:

TLDR don’t use unwrapped generally.
-bin is an informal standard copied from Arch, it means it’s not built from source even when a source distribution is available.

The rest are kind of self-explanatory or they are literally copied from upstream.

2 Likes

The suffixes aren’t really a “standard” so much as a “tradition”. The common ones include:

  • _<number> which is just providing alternate versions of the software.

  • -unwrapped which comes up when a package is wrapped to find things it may need at runtime, but there’s reason you might want to wrap it differently without needing to recompile it. One common reason this might be the case is if the program can take plugins of some sort. In that case, there may well be a function somewhere in nixpkgs to wrap it with a given set of plugins. The default package without -unwrapped would then have been wrapped with a default set of plugins.

  • The other common one is -bin. Which, as noted above, means that a package with source available wasn’t actually compiled from scratch in this case.

  • -nox, -nographics and the like are all variants of programs with optional features disabled to reduce the closure size. It’s common for a program to have some kind of gui but also be usable only from the console. If you want to install that on a headless machine, installing a bunch of (rather large) graphics libraries you’ll never use seems rather silly, so this variant is provided.

  • Most of the rest are some kind of “size” word. Those are usually following an upstream set of release variants, and generally hinge on subsets of the features (and thus dependencies) which are included.

4 Likes