Packages

GoNIX has its own package manager, pkg — a CRUX-style, Go-native tool with a binary repository, dependency resolution, checksum verification, and in-place upgrades of a running system.

Hybrid: binary by default, source when needed

pkg ships a binary package for everything in the repository. When a port has no prebuilt binary, pkg falls back to building it from source on the device — GoNIX carries a small C toolchain (musl + tcc) and a Go toolchain for exactly this.

$ pkg update              # refresh the cached index
$ pkg install htop        # resolve deps, verify sha256, install
$ pkg search browser      # search the ports catalog
$ pkg upgrade             # move installed packages forward

Packages are plain (uncompressed) tar archives named name#version-release.tar.gz, with a /var/db/pkg database tracking what’s installed. Versions order with dpkg-style comparison, so upgrades only ever move forward (unless you force them).

The uLinux package foundation

The repository lives at pkgs.ulinux.org — the uLinux package ecosystem GoNIX is built on. It serves both architectures at parity:

Arch Index
amd64 https://pkgs.ulinux.org/amd64/PKGINDEX
arm64 https://pkgs.ulinux.org/arm64/PKGINDEX

Everything — the base system, the C/Go toolchains, the from-source library stack, the Wayland desktop, the browser and editor suite — is a package there.

Self-upgradeable base

Even GoNIX’s own base — coreutils, init, pkg itself — ships as tracked, versioned packages. pkg upgrade coreutils hot-swaps the userland on a running machine; only init (PID 1) waits for the next reboot. The OS updates itself the same way it updates anything else.