Skip to content

Installing Packages

pkgdemon edited this page Aug 21, 2026 · 4 revisions

NextBSD uses pkg(8), the same package manager as FreeBSD, and the kernel is ABI-compatible — so ordinary FreeBSD packages install and run.

There are two repositories in play: FreeBSD's (for third-party software) and NextBSD's own (for the OS itself).

The NextBSD repository

Nothing to set up — it is already configured. Every published .img and .iso ships with both package repositories enabled, so pkg works the moment you boot:

File Repository
/usr/local/etc/pkg/repos/NextBSD.conf NextBSD's own base, kernel and userland
/usr/local/etc/pkg/repos/FreeBSD.conf FreeBSD's ports repository, for third-party software
/usr/local/etc/pkg.conf Pins the ABI to FreeBSD:15:<arch>

The NextBSD repository points at the per-architecture continuous release, so it tracks whatever CI published most recently.

Updating the OS

pkg update
pkg upgrade                       # rolling: picks up each new snapshot

A booted image already has NextBSD-everything installed, so pkg upgrade is the normal way to move a system forward. If you ever need to reinstall the set explicitly:

pkg install NextBSD-everything    # base + kernel + userland

What is in it

Package amd64 arm64 Contents
NextBSD-freebsd-compat Base: libc, PAM, FreeBSD-source commands
NextBSD-kernel The kernel
NextBSD-kernel-extensions Driver kexts — 17 on amd64, the 7-kext virtio-gpu stack on arm64
NextBSD-userland Darwin Mach runtime and daemons
NextBSD-everything Meta-package depending on all of the above

Packages are currently unsigned — the shipped config sets signature_type: none, so pkg cannot verify authenticity. Signing is one of the remaining pre-production steps.

Recreating the config

You should not need this, but if the file is lost or you are bootstrapping NextBSD packages onto a system that did not come from a published image, write /usr/local/etc/pkg/repos/NextBSD.conf as:

NextBSD: {
  url: "https://github.com/nextbsd-redux/nextbsd-pkg/releases/download/continuous-amd64",
  enabled: yes,
  signature_type: none,
}

Swap continuous-amd64 for continuous-arm64 on AArch64.

Everyday package use

pkg update              # refresh repository catalogues
pkg search nginx        # find something
pkg install nginx       # install it
pkg info                # what's installed
pkg info -l nginx       # what files a package owns
pkg delete nginx        # remove it
pkg upgrade             # update everything
pkg autoremove          # drop orphaned dependencies

Third-party packages land under /usr/local, exactly as on FreeBSD.

Starting what you installed

A package that installs an rc.d script will not start the FreeBSD way — there is no rc.conf here. You need a launchd job plist in /Local/Library/LaunchDaemons/ instead. See Service Management with launchd for how to write one, including the foreground-flag trap that catches most people.

Keeping a system current

Continuous builds republish on every merge to main, so pkg upgrade against the NextBSD repository tracks the rolling stream. There is no stable release train yet — see the continuous release for what is current.

Check what you are running:

nextbsd-version       # userland build stamp
nextbsd-version -k    # installed kernel
nextbsd-version -r    # running kernel

Clone this wiki locally