Skip to content

Packaging

Nexus OS uses a unified packaging system that handles everything from 8-bit sensor firmware to full desktop applications. The package manager (nip) can graft packages from any ecosystem — Linux, BSD, Nix, Windows — and wrap them in sovereign isolation.

Components

  • nip — The universal package manager
  • NipCells — Lightweight isolation containers
  • Nexters — Heavy containers that replace Docker

Package Taxonomy

Every package in Nexus has a type that describes its proximity to hardware:

TypeNamePurposeExample
NPSNip SensorSingle-purpose sensor firmwareTemperature probe
NPLNip LibraryDrivers and kernel-adjacent filtersWiFi driver, printer driver
NPXNip eXtensionHot-loadable hooks (replaces eBPF)Packet filter, tracing
NPMNip ModulePure logic librariesOrbital math, crypto
NPKNip PackageEnd-user applicationsFirefox, KDE, terminal
NPINip InterfaceAPI bridgesHTTP adapter, gRPC bridge

Grafting

Nexus does not maintain a separate package ecosystem from scratch. Instead, it grafts packages from existing ecosystems:

SourceWhat's GraftedWhy
Linux (Chimera)GPU, WiFi, and hardware driversImmediate hardware support
OpenBSDSecurity primitives (pledge/unveil logic)Best-in-class security
NetBSDRump kernels (temporary TCP/IP shim)Usable network stack
Alpinemusl, busyboxMinimal POSIX shim
NixPackage recipes and dependency graphsBattle-tested package definitions

The grafting process:

  1. nip fetches the foreign package
  2. Strips bloat (docs, debug symbols, unnecessary dependencies)
  3. Applies security constraints (pledge mask, capability set)
  4. Compiles into a deterministic .np* Cell with a Variant-CID
  5. Signs the result with Ed25519

The output is a sovereign package that runs under Nexus security constraints, regardless of where the original code came from.

GoboLinux-Style Hierarchy

All packages are installed in a GoboLinux-style directory structure:

/Programs/
├── Firefox/
│   ├── 120.0/
│   │   ├── bin/
│   │   ├── lib/
│   │   └── manifest.bkdl
│   └── current → 120.0
├── ToyBox/
│   ├── 0.8.11/
│   └── current → 0.8.11

Each program owns its directory. Each version is separate. A current symlink points to the active version. Switching versions is an atomic symlink update.

Released under the CC0 License.