Comparisons
How Zoi compares to other popular package managers like Pacman, APT, and Nix.
Zoi is a standalone, universal package manager with its own package format (.pkg.lua
), build system, and local package repository. A key feature is its ability to integrate with and leverage existing system (like APT, Pacman) and language-specific (like Cargo, NPM) package managers for dependency resolution. This hybrid approach allows it to manage its own sandboxed packages while co-existing with the native tooling of an operating system.
This page compares Zoi to some other popular package managers.
Feature | Zoi | Pacman (Arch Linux) | APT (Debian/Ubuntu) | Nix |
---|---|---|---|---|
Type | Universal / Hybrid | OS-specific (Arch Linux) | OS-specific (Debian-based) | Universal |
Package Definition | .pkg.lua (Lua script) | PKGBUILD (Shell script) | debian/ directory | .nix expression |
Dependency Management | Manages its own sandboxed packages. Can also install dependencies via other system/language managers. | System-wide, managed by Pacman. | System-wide, managed by APT. | Purely functional. Dependencies are stored in /nix/store with unique hashes. |
Package Isolation | High. Packages are installed into versioned directories. Bins are symlinked. | Low. Files are installed into system-wide locations like /usr . | Low. Files are installed into system-wide locations. | Very High. Packages are isolated in the Nix store. Environments are built from these components. |
Reproducibility | Medium. Zoi packages are versioned, but dependencies from other managers can change. | Medium. Depends on the state of Arch repositories. | Medium. Depends on the state of APT repositories. | Very High. Builds are bit-for-bit reproducible. |
Configuration | Declarative (.pkg.lua ) and imperative scripting. | Declarative (PKGBUILD ). | Declarative (debian/control ). | Purely functional and declarative (.nix files). |
Cross-platform | Yes (Linux, macOS, Windows). | No (Arch Linux only). | No (Debian-based Linux only). | Yes (Linux, macOS). |
Key Idea | Provide a self-contained, sandboxed package management system that is cross-platform and can integrate with other package managers. | Simplicity and user-centrism for a specific rolling-release OS. | Robustness and stability for a stable-release OS. | Purely functional package management for reproducible, declarative, and reliable systems. |
Summary
-
Choose Zoi if: You work across multiple operating systems, use many different programming languages, and want a unified way to manage your tools and project dependencies without interfering with your system's state. Its Lua-based packaging offers great flexibility.
-
Choose Pacman/APT if: You are happy with your OS's native package manager and primarily need to manage system-wide applications and libraries on a single machine.
-
Choose Nix if: Your primary goal is maximum reproducibility and reliability. You want to build environments declaratively and are willing to learn the Nix language and its functional concepts.
Last updated on