Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save EarldridgeJazzedPineda/bd88d61641d3dcba8dfdcfa7221df19c to your computer and use it in GitHub Desktop.

Select an option

Save EarldridgeJazzedPineda/bd88d61641d3dcba8dfdcfa7221df19c to your computer and use it in GitHub Desktop.
A comparison of 8 cross-platform package managers: Guix, Homebrew, IX, Nix, pkgsrc, pkgx, Ravenports, and superconfigure

Comparison of Cross-Platform Package Managers

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.

Overview

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

Features

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

Performance

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

Packages

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

Package Recipes

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

Package Building

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

Contributing

Property Guix Homebrew IX Nix pkgsrc pkgx Ravenports superconfigure
Repositories https://codeberg.org/guix/guix https://github.com/Homebrew/brew
https://github.com/Homebrew/homebrew-core
https://github.com/Homebrew/homebrew-cask
https://github.com/stal-ix/ix
https://github.com/pg83/ix
https://github.com/NixOS/nix
https://github.com/NixOS/nixpkgs
https://cvsweb.netbsd.org/bsdweb.cgi/pkgsrc
https://wip.pkgsrc.org/cgi-bin/gitweb.cgi
https://github.com/pkgxdev/pkgx
https://github.com/pkgxdev/pkgm
https://github.com/pkgxdev/brewkit
https://github.com/pkgxdev/pantry
https://github.com/pkgxdev/manifests
https://github.com/Ravenports/Ravenports
https://github.com/Ravenports/rvn
https://github.com/Ravenports/ravenadm
https://github.com/Ravenports/ravensource
https://github.com/Ravenports/customsource
https://github.com/ahgamut/superconfigure
Version control system Git Git Git Git CVS and Git Git Git Git
Only allows free (as in freedom) software in its repositories Yes No No No No No No No
Has CI before new packages are added No Yes No Yes No Yes No No

Maintenance and Adoption

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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment