# Zoi
**Repository Path**: iloverust/Zoi
## Basic Information
- **Project Name**: Zoi
- **Description**: 跨平台包管理器
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2025-09-25
- **Last Updated**: 2025-10-01
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
Zoi
Universal Package Manager & Environment Setup Tool
Table of Contents
- [Features](#-features)
- [Getting Started](#-getting-started)
- [Installation](#-installation)
- [Package Managers](#package-managers)
- [Scripts](#-scripts)
- [Linux](#linux)
- [Arch Linux (AUR)](#arch-linux-aur)
- [Fedora](#fedora)
- [macOS](#macos)
- [Homebrew](#homebrew)
- [Windows](#windows)
- [Scoop](#scoop)
- [Crates.io](#cratesio)
- [NPM](#npm)
- [Build from Source](#%EF%B8%8F-build-from-source)
- [Platforms](#-platforms)
- [Dependencies Support](#-dependencies-support)
- [Usage](#-usage)
- [Packaging Status](#-packaging-status)
- [Repositories & Mirrors](#-repositories-mirrors)
- [Contributing](#-contributing)
- [License](#-license)
Zoi is a universal package manager and environment setup tool, designed to simplify package management and environment configuration across multiple operating systems.
## ✨ Features
- **Cross-Platform:** Works seamlessly on Linux, macOS, and Windows.
- **Dynamic Package Definitions:** Define packages with dynamic Lua scripts (`.pkg.lua`) for maximum flexibility.
- **Universal Package Support:** Install from binaries, compressed archives, source, or installer scripts.
- **Extensive Dependency Management:** Integrates with over 40 package managers (`apt`, `brew`, `cargo`, `npm`, `pip`, etc.).
- **Rich Dependencies:** Define runtime and build dependencies with required, optional, and selectable options.
- **Project Environments:** Manage project-specific commands and environments with `zoi.yaml`.
- **Repository-Based:** Use official, community, or your own private/public Git-based repositories.
- **Secure & Verifiable:** Verifies package integrity and authenticity with checksums and GPG signatures. Manage keys with `zoi pgp`.
- **Versatile Package Types:** Supports standard packages, collections, services, configs, app templates, extensions, libraries, and inline scripts.
- **Local Package Development:** A dedicated `zoi package` command set (`meta`, `build`, `install`) to streamline creating and testing packages locally.
- **Advanced CLI Tools:**
- `zoi man`: Read package manuals in the terminal.
- `zoi why`: Understand why a package is installed.
- `zoi rollback`: Revert a package to its previous version.
- `zoi pin`: Pin a package to a specific version.
- `zoi exec`: Run a package without installing it.
- **Library Support:** Use as a Rust library and get compiler/linker flags via `zoi pkg-config`.
## 🚀 Getting Started
Getting started with Zoi is simple. Just follow these three steps:
1. **Install Zoi:**
Choose one of the [installation methods](#-installation) below.
2. **Sync Repositories:**
Before you can install packages, you need to sync the package repositories.
```sh
zoi sync
```
3. **Install a Package:**
Now you can install any package you want. For example, to install `hello`:
```sh
zoi install hello
```
## 📦 Installation
You can install Zoi using a package manager, an installer script, or by building it from source.
### 📜 Scripts
You can also use our installer scripts for a quick setup.
**Linux / macOS :**
```sh
curl -fsSL https://zillowe.pages.dev/scripts/zoi/install.sh | bash
```
**Windows:**
```powershell
powershell -c "irm zillowe.pages.dev/scripts/zoi/install.ps1|iex"
```
### Package Managers
#### Linux
Install Zoi on Linux distros.
##### Arch Linux (AUR)
Install [`zoi-bin`](https://aur.archlinux.org/packages/zoi-bin) (Pre-compiled binary) or [`zoi`](https://aur.archlinux.org/packages/zoi) (built from source) from the AUR using your favorite helper (e.g. `yay`, `paru`):
```sh
yay -S zoi-bin
```
Or manually without any helpers:
```sh
git clone https://aur.archlinux.org/zoi-bin.git
cd zoi-bin
makepkg -si
```
##### Fedora
Install `zoi-rs` on Fedora from [Terra](https://terra.fyralabs.com) repo (not maintained by us, uses [Crates.io](#cratesio) so may not be up-to-date):
```sh
# add terra repo
dnf install --nogpgcheck --repofrompath 'terra,https://repos.fyralabs.com/terra$releasever' terra-release
# install Zoi
sudo dnf install zoi-rs
```
More information and instructions for using Terra are available [here](https://developer.fyralabs.com/terra/installing).
#### macOS
Install Zoi on macOS.
##### Homebrew
Install Zoi using Homebrew (Also supports linux):
```sh
brew install Zillowe/tap/zoi
```
#### Windows
Install Zoi on Windows.
##### Scoop
Install Zoi using Scoop:
```powershell
scoop bucket add zillowe https://github.com/Zillowe/scoop.git
scoop install zoi
```
#### Crates.io
You can install `zoi` directly from [crates.io](https://crates.io/crates/zoi-rs) using `cargo`:
```sh
cargo install zoi-rs
```
#### NPM
You can install `@zillowe/zoi` from `npm` also.
```sh
npx @zillowe/zoi
bunx @zillowe/zoi
pnpm dlx @zillowe/zoi
yarn dlx @zillowe/zoi
```
### 🛠️ Build from Source
If you prefer, you can build Zoi from source. You'll need [Rust](https://www.rust-lang.org) installed.
**Build the release binary:**
```sh
# For Linux/macOS
./scripts/build-release.sh
# For Windows
./scripts/build-release.ps1
```
**Install it locally:**
```sh
./configure
make build
sudo make install
# (optional) Install CLI completions and setup Zoi's PATH
make setup
```
## 💻 Platforms
What platforms we currently support.
| OS | Arch | Zoi Binary | Packages Support |
| ------- | ----- | ---------- | ---------------- |
| Linux | amd64 | ✔️ | ✔️ |
| Linux | arm64 | ✔️ | ✔️ |
| macOS | arm64 | ✔️ | ✔️ |
| macOS | amd64 | ✔️ | ✔️ |
| Windows | amd64 | ✔️ | ✔️ |
| Windows | arm64 | ❌ | ✔️ |
| FreeBSD | amd64 | ❌ | ✔️ |
| FreeBSD | arm64 | ❌ | ✔️ |
| OpenBSD | amd64 | ❌ | ✔️ |
| OpenBSD | arm64 | ❌ | ✔️ |
We're planning to add support for more platforms.
## 🔗 Dependencies Support
What dependency installation we support.
| Manager | Ecosystem / OS | Example |
| ---------------- | ------------------------------- | ------------------------------------------------------------------------------- |
| `zoi` | Zoi | `zoi:my-other-package` |
| `native` | System's native package manager | `native:openssl` |
| `script` | Script execution | `script:website.com/install` |
| `apt`, `apt-get` | Debian, Ubuntu, etc. | `apt:libssl-dev` |
| `pacman` | Arch Linux | `pacman:base-devel` |
| `yay`, `paru` | Arch Linux (AUR) | `yay:google-chrome` |
| `aur` | Arch Linux (AUR) | `aur:visual-studio-code-bin` |
| `brew` | macOS (Homebrew) | `brew:node` |
| `scoop` | Windows | `scoop:git` |
| `snap` | Linux (Snapcraft) | `snap:node` |
| `flatpak` | Linux (Flathub) | `flatpak:org.gimp.GIMP` |
| `pkg` | FreeBSD | `pkg:git` |
| `pkg_add` | OpenBSD | `pkg_add:git` |
| `cargo` | Rust | `cargo:ripgrep` |
| `cargo-binstall` | Rust (pre-compiled binaries) | `cargo-binstall:ripgrep` |
| `go` | Go | `go:golang.org/x/tools/cmd/goimports` |
| `npm` | Node.js | `npm:typescript` |
| `bun` | Bun | `bun:elysia` |
| `deno` | Deno | `deno:npm-chalk` or `deno:jsr-@std/bytes` (the `-` instead of `:` is important) |
| `jsr` | JavaScript Registry | `jsr:@std/http` |
| `pip` | Python | `pip:requests` |
| `nix` | NixOS / Nix | `nix:nixpkgs.hello` |
And many more.
For more dependencies and information please visit the [Dependencies Page](https://zillowe.qzz.io/docs/zds/zoi/dependencies) on Docs.
Some of the package manager are OS specific, so when a dependency is in that package manager it only installs it for that OS.
But some other package managers like `npm`, it installs the dependency if the package manager is available.
## 💡 Usage
Here are some common commands to get you started.
- **Install a package:**
```sh
zoi install
```
- **Uninstall a package:**
```sh
zoi uninstall
```
- **Install from a specific repository:**
```sh
zoi install @/
```
- **List all available packages from active repos:**
```sh
zoi list --all
```
- **List packages from a specific repo:**
```sh
zoi list --all --repo
```
- **Search for a package:**
```sh
zoi search
```
- **Search for a package from a specific repo:**
```sh
zoi search @
```
- **Add a new repository:**
```sh
# Interactively
zoi repo add
# By name
zoi repo add
# From a git repo
zoi repo add https://github.com//.git
```
- **Update Zoi to the latest version:**
```sh
zoi upgrade
```
For more detailed information, please refer to the [Docs](https://zillowe.qzz.io/docs/zds/zoi).
## 📦 Packaging Status
[](https://repology.org/project/zoi/versions)
## 🤝 Contributing
We welcome contributions from the community! If you'd like to contribute, please read our [Contributing Guidelines](./CONTRIBUTING.md) for more information.
New features, enhancements and bug reports are welcome.
## 📚 Repositories & Mirrors
Zoi is hosted on multiple forges. The primary locations and mirrors are:
- Zoi Source Code (this repo)
- Primary: [GitLab](https://gitlab.com/Zillowe/Zillwen/Zusty/Zoi)
- Mirrors: [GitHub](https://github.com/Zillowe/Zoi), [Codeberg](https://codeberg.org/Zillowe/Zoi)
- Packages Database (Zoidberg)
- Primary: [GitLab](https://gitlab.com/Zillowe/Zillwen/Zusty/Zoidberg)
- Mirrors: [GitHub](https://github.com/Zillowe/Zoidberg), [Codeberg](https://codeberg.org/Zillowe/Zoidberg)
### Repository tiers
Repository tiers for [Zoidberg](https://gitlab.com/Zillowe/Zillwen/Zusty/Zoidberg), Zoi's official packages repo.
- Core: Essential packages, libraries and very common/maintained packages.
- Main: Packages that don't fit in Core but are essential for most people.
- Extra: Packages that are new, not very common or maintained, not preferable.
- Community: User submitted packages that are new, can be upgraded to a higher repo.
- Test: Testing repo for new Zoi features and for new packages before release.
- Archive: Archived packages that are no longer maintained.
- Zillowe: Zillowe's own official packages.
For details and CLI usage examples, see the docs page: [Repositories](https://zillowe.qzz.io/docs/zds/zoi/repositories).
## 📜 License
Zoi is licensed under the [Apache 2.0 License](./LICENSE).