# Copyright 2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit optfeature
DESCRIPTION="Docker Sandboxes - run AI coding agents in isolated microVM sandboxes"
HOMEPAGE="
https://docs.docker.com/ai/sandboxes/
https://github.com/docker/sbx-releases
"
BASE_URI="https://github.com/docker/sbx-releases/releases/download/v${PV}/DockerSandboxes-linux"
SRC_URI="
amd64? ( ${BASE_URI}-amd64.tar.gz -> ${P}-amd64.tar.gz )
arm64? ( ${BASE_URI}-arm64.tar.gz -> ${P}-arm64.tar.gz )
"
S="${WORKDIR}/${PN}"
# sbx itself is proprietary; the bundled kernel, mkfs tools, shim and
# libsailor are open source (see THIRD-PARTY-NOTICES)
LICENSE="Docker-Sandboxes
Apache-2.0 BSD GPL-2 GPL-2+ ISC MIT MPL-2.0 Unicode-3.0 Unlicense ZLIB"
SLOT="0"
KEYWORDS="~amd64 ~arm64"
IUSE="apparmor"
RESTRICT="bindist mirror strip"
QA_PREBUILT="opt/${PN}/*"
src_install() {
local dest=/opt/${PN}
# sbx locates its helpers via
/../libexec
exeinto ${dest}/bin
doexe sbx
dosym -r ${dest}/bin/sbx /usr/bin/sbx
exeinto ${dest}/libexec
doexe containerd-shim-nerdbox-v1 mkfs.erofs mkfs.ext4
# GPU trampoline shim is only shipped in the amd64 tarball
[[ -f containerd-shim-nerdbox-gpu-v1 ]] && doexe containerd-shim-nerdbox-gpu-v1
# kernel/rootfs names differ per arch (nerdbox-kernel-x86_64 vs -arm64_4k)
insinto ${dest}/libexec
doins nerdbox-kernel-* nerdbox-rootfs-*.erofs
exeinto ${dest}/libexec/lib
doexe libsailor.so
if use apparmor; then
# upstream profile confines /usr/libexec; point it at our shim
sed -i "s|/usr/libexec/containerd-shim-nerdbox-v1|${EPREFIX}${dest}/libexec/containerd-shim-nerdbox-v1|" \
apparmor-profile || die
insinto /etc/apparmor.d
newins apparmor-profile docker-sbx-nerdbox-shim
fi
dodoc THIRD-PARTY-NOTICES
}
pkg_postinst() {
elog "Docker Sandboxes runs each sandbox in a KVM microVM. Your user needs"
elog "read/write access to /dev/kvm (usually: membership in the 'kvm' group)."
elog "Run 'sbx login' to sign in with your Docker account."
if [[ -f ${EROOT}/opt/${PN}/libexec/containerd-shim-nerdbox-gpu-v1 ]]; then
elog
elog "GPU passthrough needs the GPU shim to be setuid root. Enable it with:"
elog " sudo ${EROOT}/opt/${PN}/libexec/containerd-shim-nerdbox-gpu-v1 install"
elog "This has to be repeated after every upgrade of ${PN}."
fi
if use apparmor; then
elog
elog "Load the AppArmor profile for the nerdbox shim with:"
elog " apparmor_parser -r -W /etc/apparmor.d/docker-sbx-nerdbox-shim"
fi
optfeature "credential storage via the Secret Service API" \
gnome-base/gnome-keyring app-admin/keepassxc kde-frameworks/kwallet
optfeature "image paste on Wayland (sbx settings set clipboard.imagePaste true)" \
gui-apps/wl-clipboard
}