Zoi: The Universal Package Manager and Environment Setup Tool
An introduction to Zoi, the ultimate cross-platform package manager designed to unify development environments across Linux, macOS, and Windows.
Setting up a consistent development environment across different machines and operating systems has historically been a fragmented and frustrating process. Developers often find themselves wrestling with disparate package managers, apt on Ubuntu, brew on macOS, scoop on Windows, alongside language-specific tools like npm, cargo, and pip.
Zoi (part of the Zillowe Development Suite) was created to solve this fragmentation. It is a universal, cross-platform package manager that provides a unified interface for managing software, project dependencies, and development environments.
Why Zoi?
Traditional package managers are usually tied to a specific operating system or ecosystem. Zoi takes a different approach by acting as a high-level orchestration layer. It doesn't just install its own packages; it integrates with over 40 external package managers, allowing you to define a single environment that works everywhere.
Key Features
- Cross-Platform: Native support for Linux, macOS, and Windows (supporting both
amd64andarm64). - Lua-Powered Flexibility: Package definitions are written in Lua (
.pkg.lua), allowing for dynamic logic, complex build steps, and platform-specific adaptations that static configuration files can't handle. - Universal Dependencies: Declare dependencies from
apt,pacman,brew,npm,cargo,pip,go,bun, and many more in one place. - Secure & Verifiable: Built-in support for SHA-512/256 checksums and PGP signature verification for every package.
- Versatile Package Types: Beyond standard software, Zoi supports Collections (metapackages), Apps (project templates), and Extensions (Zoi configuration modifiers).
- Advanced CLI Tools: Features like
zoi why(dependency inspection),zoi rollback(transactional reverts),zoi pin(version locking), andzoi exec(run without installing).
The Power of .pkg.lua
Most package managers use static formats like YAML or JSON. Zoi uses Lua, giving package maintainers the full power of a scripting language.
-- A snippet from a Zoi package definition
metadata({
name = "hello",
version = "3.0.0",
license = "Apache-2.0",
bins = { "hello" }
})
function prepare()
if SYSTEM.OS == "windows" then
UTILS.EXTRACT("https://example.com/hello-win.zip", "bin")
else
cmd("git clone " .. PKG.git .. " source")
cmd("cd source && make build")
end
endThis flexibility ensures that complex software can be packaged correctly for any target system without maintaining separate scripts for every OS.
Project Environments with zoi.yaml
Zoi isn't just for global software; it shines in project-local management. By placing a zoi.yaml in your repository, you can:
- Define project-specific packages.
- Create custom aliases for common tasks (
zoi run dev). - Set up isolated development environments (
zoi env). - Ensure every team member has the exact same tools via
zoi.lock.
Getting Started
You can install Zoi with a simple one-liner:
Linux / macOS:
curl -fsSL https://zillowe.pages.dev/scripts/zoi/install.sh | bashWindows:
powershell -c "irm zillowe.pages.dev/scripts/zoi/install.ps1|iex"After installation, run zoi sync to fetch the official Zoidberg registry and you're ready to start installing!
Learn More
Zoi is a deep tool with many advanced features for power users and package maintainers. Explore the links below to dive deeper:
- Zoi Documentation Home: The starting point for all Zoi guides.
- Creating Your First Package: A step-by-step guide to the Zoi packaging API.
- Supported Dependency Managers: See the full list of 40+ integrated managers.
- Zoidberg Repository: Browse the official package database.
