Last updated: 2025-11-25
Cross-platform package managers are designed to provide a large collection of software programs that can be installed on multiple platforms. They are commonly used to create developer environments that work across operating systems, or to supplement the system's main package manager (e.g. apt, dnf, pacman).
The following sections compare 8 cross-platform package managers: Guix, Homebrew, IX, Nix, pkgsrc, pkgx, Ravenports, and superconfigure.
| Property | Guix | Homebrew | IX | Nix | pkgsrc | pkgx | Ravenports | superconfigure |
|---|---|---|---|---|---|---|---|---|
| Website | https://guix.gnu.org | https://brew.sh | https://stal-ix.github.io | https://nixos.org | https://pkgsrc.org | https://pkgx.dev | https://ravenports.com | https://github.com/ahgamut/superconfigure |
| Also or formerly known as | mix | NetBSD Packages Collection | Tea | |||||
| Creator | Ludovic Courtès | Max Howell | Anton Samokhvalov | Eelco Dolstra | Alistair Crooks and Hubert Feyrer | Max Howell | John Marino | Gautham Venkatasubramanian |
| Year created | 2012 | 2009 | 2021 | 2003 | 1997 | 2021 | 2017 | 2023 |
| Inspired by or based on | Nix | Nix | FreeBSD Ports | Homebrew | FreeBSD Ports and DragonFly BSD Ports | Cosmopolitan Libc | ||
| Written in programming language | GNU Guile | Ruby | Python | C++ | Makefile | Rust and TypeScript | Ada | Makefile |
| License | GNU General Public License v3.0 or later | BSD 2-Clause "Simplified" License | MIT License | GNU Lesser General Public License v2.1 or later, MIT License | BSD 2-Clause "Simplified" License | Apache License 2.0 | ISC License | The Unlicense |
| Number of packages | 30,504* | 12,140* (formulae) 2,274* (casks) |
1,385* | 130,263* | 20,165* | 1,611 (Linux and macOS) 14 (Windows) |
3,734* | 122 |
* According to Repology
| Feature | Guix | Homebrew | IX | Nix | pkgsrc | pkgx | Ravenports | superconfigure |
|---|---|---|---|---|---|---|---|---|
| Supported platforms | Linux and GNU Hurd | Linux and macOS | Linux, macOS, and FreeBSD | Linux and macOS | NetBSD, Solaris, Linux, macOS, FreeBSD, OpenBSD, IRIX, AIX, DragonFly BSD, OSF/1, HP-UX, Haiku, Minix3, and Cygwin | Linux, macOS, and Windows | DragonFly BSD, FreeBSD, Linux, MidnightBSD, and NetBSD | Linux, macOS, Windows, FreeBSD, OpenBSD, NetBSD, and BIOS |
| Supported architectures | x86 (32-bit and 64-bit), ARM (32-bit and 64-bit), and PowerPC (64-bit little-endian) | x86 (64-bit) and ARM (64-bit) | x86 (64-bit), ARM (64-bit) and RISC-V (64-bit) | x86 (32-bit and 64-bit) and ARM (64-bit) | Any architecture supported by the above platforms | x86 (64-bit) and ARM (64-bit) | x86 (64-bit) | x86 (64-bit) and ARM (64-bit) |
| Command(s) for managing packages | guix |
brew |
ix |
nix |
pkg_add, pkg_admin, pkg_create, pkg_delete, pkg_info |
pkgx, pkgm |
rvn |
make |
| Uses a content-addressable store | Yes | No | Yes | Yes | No | No | No | No |
| Declarative package management | Yes | Yes (Brewfile) |
No | Yes | No | Yes (pkgx.yaml) |
No | No |
| Installs packages to the user's directory | No | Yes, by default on Linux (/home/linuxbrew/.brew/) |
If the IX_PATH environment variable is set at run-time |
No | If set during bootstrap | Yes (~/.pkgx) |
No | If superconfigure is cloned into the user's directory |
| Stores different versions of packages in separate directories | Yes (Guix store) | Yes (Cellar) | Yes (IX store) | Yes (Nix store) | No | Yes | No | No |
| Can fetch pre-built packages | Yes (substitutes) | Yes (bottles) | No | Yes (binary cache) | Yes* | Yes (bottles) | Yes | No** |
* First-party packages for NetBSD, third-party packages for Illumos and macOS (Linux packages no longer maintained since 2024-07-31)
** Pre-built packages exist but superconfigure cannot fetch them
Testing computer specifications:
- AMD Ryzen 5 5500U (12 threads)
- 8 GB of RAM
- Debian GNU/Linux 13 (Trixie) running on Windows Subsystem for Linux
| Property | Guix | Homebrew | IX | Nix | pkgsrc | pkgx | Ravenports | superconfigure |
|---|---|---|---|---|---|---|---|---|
| Install/bootstrap/setup time | 1m7s | 1m6s | N/A (used a rootfs tarball) | 1m9s | 4m2s | 36s | 1m26s | 26m59s |
| Time to install Lua | 34s | 13s | 5s | 4s | 1m33s | |||
| Time to build Lua from source code | ??? | 16s | DNF (cannot extract XZ-compressed tarballs) | ??? | 6m3s | 3m31s | 3m41s | DNF (errors during ncurses build) |
| Lua executable size (in bytes) | 260,944 | 311,144 | 259,296 | 23,088 | 321,377 | 265,024 |
Based on DistroWatch's major packages list.
| Package | Guix | Homebrew | IX* | Nix* | pkgsrc* | pkgx | Ravenports | superconfigure |
|---|---|---|---|---|---|---|---|---|
| alsa-lib | alsa-lib | alsa-lib | lib/alsa | alsa-lib | audio/alsa-lib | alsa-project.org/alsa-lib | alsa-lib | lib/alsa |
| amdgpu | xf86-video-amdgpu | xorg.xf86videoamdgpu | x11/xf86-video-amdgpu | xorg-driver-video-amdgpu | ||||
| apparmor | apparmor | libapparmor | ||||||
| apt | apt | apt | ||||||
| bash | bash | bash | bin/bash | bash | shells/bash | gnu.org/bash | bash | cli/bash |
| bind | bind | bind | bin/bind | bind | net/bind918 | isc.org/bind9 | bind | |
| chromium | chromium (cask) | bin/chromium | chromium | www/chromium | ||||
| cinnamon | cinnamon | |||||||
| cups | cups | cups | bin/cups | cups | print/cups | openprinting.github.io/cups | cups | lib/cups |
| e2fsprogs | e2fsprogs | e2fsprogs | bin/e2fsprogs | e2fsprogs | sysutils/e2fsprogs | sourceforge.net/e2fsprogs | ||
| ffmpeg | ffmpeg | ffmpeg | lib/ffmpeg | ffmpeg | multimedia/ffmpeg8 | ffmpeg.org | ffmpeg | |
| firefox | firefox (cask) | firefox-bin | www/firefox | firefox | ||||
| flatpak | flatpak | flatpak | ||||||
| freetype | freetype | freetype | lib/freetype | freetype | graphics/freetype2 | freetype.org | freetype | lib/freetype |
| gcc | gcc | gcc | bin/gcc | gcc | lang/gcc15 | gnu.org/gcc | gcc14 | compiler/gcc-14.1-patched |
| gimp | gimp | gimp (cask) | gimp3 | graphics/gimp | gimp | |||
| git | git | git | bin/git | git | devel/git | git-scm.org | git | web/git |
| glibc | glibc | glibc | glibc | |||||
| gnome-shell | gnome-shell | gnome-shell | x11/gnome-shell | |||||
| grub | grub-pc | x86_64-elf-grub | bin/grub/t | grub2 | sysutils/grub2 | |||
| gtk | gtk | gtk4 | lib/gtk | gtk4 | x11/gtk4 | gtk.org/gtk4 | gtk4 | |
| httpd | httpd | httpd | apacheHttpd | www/apache24 | apache.org/httpd | apache | ||
| inkscape | inkcsape | inkscape (cask) | bin/inkscape | inkscape | graphics/inkscape | inkscape | ||
| kmod | kmod | kmod | bin/kmod | kmod | kmod | |||
| krita | krita | krita (cask) | krita | graphics/krita | ||||
| LibreOffice | libreoffice | libreoffice (cask) | libreoffice | misc/libreoffice | libreoffice | |||
| libselinux | libselinux | libselinux | libselinux | |||||
| Linux | linux-libre | bin/kernel | linux | |||||
| MariaDB | mariadb | mariadb | bin/mariadb/t | mariadb | databases/mariadb118-server | mariadb.com/server | mariadb118 | |
| mate-desktop | mate-desktop | mate.mate-desktop | x11-mate-desktop | mate-desktop | ||||
| mesa | mesa | mesa | lib/mesa | mesa | graphics/MesaLib | mesa3d.org | mesa | |
| MySQL | mysql | mysql | mysql84 | databases/mysql80-server | mysql.com | mysql | ||
| nautilus | nautilus | nautilus | sysutils/nautilus | |||||
| NVIDIA | linuxKernel.packages.linux_6_17.nvidia_x11 | |||||||
| OpenJDK | openjdk | openjdk | jdk24 | lang/openjdk21 | openjdk.org | openjdk | ||
| openssh | openssh | openssh | bin/openssh | openssh | security/openssh | openssh.com | openssh | web/openssh |
| openssl | openssl | openssl | lib/openssl | openssl | security/openssl | openssl.org | openssl30 | lib/openssl |
| perl | perl | perl | bin/perl | perl540 | lang/perl5 | perl.org | perl-5.42 | |
| php | php | php | php | lang/php84 | php.net | php84 | lang/php | |
| plasma-desktop | plasma-desktop | kdePackages.plasma-desktop | ||||||
| postfix | postfix | mail/postfix | postfix | |||||
| postgresql | postgresql | postgresql | bin/postgresql/t | postgresql | databases/postgresql17 | postgresql.org | postgresql17 | |
| Python | python | python | bin/python | python314 | lang/python313 | python.org | python313 | lang/python |
| qt** | qtbase | qt | lib/qt/6 | kdePackages.qtbase | meta-pkgs/qt6 | qt.io | qt6-qtbase | |
| samba | samba | samba | bin/samba | samba | net/samba4 | |||
| thunderbird | thunderbird (cask) | thunderbird | mail/thunderbird | thunderbird | ||||
| vim | vim | vim | bin/vim | vim | editors/vim | vim.org | vim | editor/vim |
| vlc | vlc | vlc (cask) | bin/vlc | vlc | multimedia/vlc | vlc | ||
| wayland | wayland | wayland | lib/wayland | kdePackages.wayland | devel/wayland | wayland.freedesktop.org | wayland | |
| xfdesktop | xfdesktop | xfce.xfdesktop | x11/xfce4-desktop | xfdesktop |
* Stable version is used
** If multiple Qt packages exist without a meta-package, QtBase is used
| Property | Guix | Homebrew | IX | Nix | pkgsrc | pkgx | Ravenports | superconfigure |
|---|---|---|---|---|---|---|---|---|
| File name | category.scm |
<name>.rb |
ix.sh |
package.nix (other file names are commonly used) |
Makefile |
package.yml |
specification |
BUILD.mk |
| Written in programming language | GNU Guile | Ruby | Jinja | Nix | Makefile | YAML | Makefile | Makefile |
| Average source lines of code per recipe* | TBC | 156 | 29 | 307 | 91 | 90 | 105 | 23 |
| Common auxilliary files | ALTERNATIVES, DESCR, INSTALL, PLIST, buildlink3.mk, builtin.mk, distinfo, and options.mk |
desc.primary, distinfo, and plist.primary |
check.signature, config-wrapper, fatten, and minimal.diff |
|||||
| Organization of recipes | By category | By first letter of package name | By category | By first two letters of package name or by category | By category | By URL | By first byte of SHA-1 hash of package name | By category |
| Package name key | name |
class |
pkg_name |
pname |
DISTNAME |
display-name |
NAMEBASE |
|
| Package version key | version |
Embedded in url |
version |
version |
Embedded in DISTNAME |
versions |
DEF[PORTVERSION] and VERSION |
Embedded in <name>_SRC |
| Package description key | synopsis and description |
desc |
description and longDescription |
COMMENT (+ DESCR file) |
SDESC (+ descriptions directory) |
|||
| Package homepage key | home-page |
homepage |
homepage |
HOMEPAGE |
HOMEPAGE |
|||
| Package license key | license |
license |
license |
LICENSE |
LICENSE, LICENSE_TERMS, LICENSE_NAME, LICENSE_FILE, LICENSE_AWK, LICENSE_SOURCE, and LICENSE_SCHEME |
|||
| Uses SPDX license expressions | No | Yes | No | No | No | |||
| Package source files key | source |
url |
fetch |
src |
MASTER_SITES and DISTNAME |
distributable |
DOWNLOAD_GROUPS, SITES, and DISTFILE |
<name>_SRC |
| Hash algorithm for source files | SHA-256 | SHA-256 | SHA-256 | SHA-256 | BLAKE2s and SHA-512 (stored in distinfo) |
SHA-256 | SHA-256 | |
| Package dependencies key | native-inputs, inputs, and propagated-inputs |
depends_on |
bld_libs, lib_deps, host_libs, bld_tool, and run_deps |
nativeBuildInputs, buildInputs, and propagatedBuildInputs |
TOOL_DEPENDS, BUILD_DEPENDS, DEPENDS, and TEST_DEPENDS (+ including buildlink3.mk files) |
dependencies |
BUILD_DEPENDS, BUILDRUN_DEPENDS, RUN_DEPENDS, EXRUN, GNOME_COMPONENTS, SDL_COMPONENTS, and XORG_COMPONENTS |
<name>_DEPS |
| Can specify exact versions of dependencies | No | No | No | No | Yes | Yes | No | No |
| Package build system/instructions key | build-system |
install |
build and install |
configurePhase, buildPhase, and installPhase |
do-configure, do-build, and do-install |
build |
do-configure, do-build, and do-install |
CONFIG_COMMAND, BUILD_COMMAND, and INSTALL_COMMAND |
| Can define build options that can be set by the user | No | Yes (not allowed in homebrew-core) | Yes | Yes | Yes | No | Yes | No |
* Based on the recipes for alsa-lib, bash, cups, freetype, git, openssh, openssl, Python, and vim
| Property | Guix | Homebrew | IX | Nix | pkgsrc | pkgx | Ravenports | superconfigure |
|---|---|---|---|---|---|---|---|---|
| Command for building packages | guix |
brew |
ix |
nix |
make |
bk |
ravenadm |
make |
| Default toolchain | GCC | LLVM/Clang on macOS and GCC on Linux | LLVM/Clang | GCC | GCC | LLVM/Clang | GCC | GCC |
| Packages are statically linked | No | No | Yes | No | No | No | No | Yes |
| Multiple packages can be built in parallel | No | No | Yes | Yes | No | No | Yes | No |
| Property | Guix | Homebrew | IX | Nix | pkgsrc | pkgx | Ravenports | superconfigure |
|---|---|---|---|---|---|---|---|---|
| Date of first commit | 2012-04-18 | 2009-05-20 (brew) 2009-06-04 (homebrew-core) 2012-03-10 (homebrew-cask) |
2021-09-07 | 2003-03-12 (nix) 2003-03-14 (nixpkgs) |
1997-08-20 (pkgsrc) 2003-03-18 (pkgsrc-wip) |
2021-11-20 (pkgx) 2025-01-08 (pkgm) 2023-02-10 (brewkit) 2022-07-26 (pantry) 2025-02-04 (manifests) |
2017-02-23 (ravenports) 2023-11-24 (rvn) 2017-02-27 (ravenadm) 2017-03-23 (ravensource) 2019-01-06 (customsource) |
2023-07-10 |
| Repository/ies created on | ? | 2016-03-06 (brew) 2016-03-01 (homebrew-core) 2012-03-05 (homebrew-cask) |
2022-05-26 (stal-ix/ix) 2023-02-06 (pg83/ix) |
2012-02-08 (nix) 2012-06-04 (nixpkgs) |
2021-11-20 (pkgx) 2025-01-08 (pkgm) 2023-02-06 (brewkit) 2022-10-23 (pantry) 2025-02-05 (manifests) |
2017-02-23 (ravenports) 2023-11-24 (rvn) 2017-02-27 (ravenadm) 2017-03-23 (ravensource) 2019-01-06 (customsource) |
2023-07-10 | |
| Average number of commits per day | 35.15 | 7.84 (brew) 119.71 (homebrew-core) 73.47 (homebrew-cask) |
10.95 | 2.66 (nix) 108.80 (nixpkgs) |
42.27 (pkgsrc) 9.54 (pkgsrc-wip) |
0.80 (pkgx) 0.29 (pkgm) 0.35 (brewkit) 3.88 (pantry) 0.68 (manifests) |
1.13 (ravenports) 1.19 (rvn) 0.55 (ravenadm) 10.68 (ravensource) 0.18 (customsource) |
0.67 |
| Average number of new packages per day | 6.14 | 2.02 (formulae) 0.45 (casks) |
0.90 | 15.71 | 1.95 | 1.32 (Linux and macOS) 0.05 (Windows) |
1.18 | 0.14 |
| Average number of issues per day | ? | 1.38 (brew) 1.67 (homebrew-core) 1.34 (homebrew-cask) |
0.01 | 1.37 (nix) 10.34 (nixpkgs) |
0.31 (pkgx) 0.12 (pkgm) 0.09 (brewkit) 6.91 (pantry) <0.01 (manifests) |
0.02 (rvn) 0.03 (ravenadm) 0.05 (ravensource) <0.01 (customsource) |
0.05 | |
| Average number of pull requests per day | ? | 4.31 (brew) 70.15 (homebrew-core) 45.91 (homebrew-cask) |
0.03 | 1.49 (nix) 83.58 (nixpkgs) |
0.34 (pkgx) 0.11 (pkgm) 0.18 (brewkit) 2.92 (pantry) 0.03 (manifests) |
<0.01 (rvn) <0.01 (ravenadm) 0.05 (ravensource) <0.01 (customsource) |
0.03 | |
| Backed by | Free Software Foundation | Independent | Independent | NixOS Foundation | The NetBSD Foundation, Inc. | Tea Association | DragonFly BSD developers | Independent |
| Current maintainers | Efraim Flashner, Mathieu Othacehe, Maxim Cournoyer and Tobias Geerinckx-Rice | Mike McQuaid | Anton Samokhvalov | Eelco Dolstra, Thomas Bereknyei, Robert Hensing, John Ericson, Jörg Thalheim, Sergei Zimmerman, alyssais, emilazy, K900, and wolfgangwalther | Jason Bacon, Christoph Badura, Robert Bagdan, Michael Bäuerle, Stephen Borrill, Manuel Bouyer, David Brownlee, Aleksey Cheusov, Adam Ciarcinski, Dan Cîrnaț, Alistair Crooks, Masatake Daimon, Mark Davies, Jaromír Doleček, Jun Ebihara, Stoned Elipot, Gavan Fantom, Hubert Feyrer, Nick Hudson, Soren Jacobsen, Takahiro Kambe, Min Sik Kim, Thomas Klausner, Dmytro Kazankov, Juraj Lutter, Dan McMahill, Thomas Merkel, John Nemeth, Richard Palo, Jonathan Perkin, Nils Ratusznik, Jeremy C. Reed, Jens Rehsack, Jeff Rizzo, Niclas Rosenvik, Matthias Scheler, Amitai Schleier, Jonathan Schleifer, Olaf Seibert, John R. Shannon, Benny Siegert, Jörg Sonnenberger, Matthew Sporleder, Adrian Steinmann, Kimmo Suominen, Leonardo Taccari, Shin'ichiro Taya, Krister Walfridsson, Patrick Welche, Lex Wennmacher, and Sebastian Wiedenroth | Max Howell and Jacob Heider | John Marino and Michael Reim | Gautham Venkatasubramanian |
| Has a bot that updates packages | No | Yes | No | Yes | No | Yes | No | No |
| Pre-installed in | GNU Guix System | Universal Blue (Aurora, Bazzite, Bluefin, uCore) | stal/IX | NixOS | NetBSD and SmartOS |