Install this version:
emerge -a =sys-block/nbd-vram-20260717
If this version is masked, you can unmask it using the autounmask tool or standard emerge options:
autounmask =sys-block/nbd-vram-20260717
Or alternatively:
emerge --autounmask-write -a =sys-block/nbd-vram-20260717
| Version | EAPI | Keywords | Slot |
|---|---|---|---|
| 20260717 | 8 | ~amd64 | 0 |
# Copyright 2026 Gentoo Authors
# Distributed under the terms of the MIT License
EAPI=8
GITHUB_REPOSITORY="c0deJedi/nbd-vram"
GITHUB_COMMIT="e2f1144f93c6f508b01a2ff435509e27853c0632"
inherit toolchain-funcs systemd udev github-archive
DESCRIPTION="Use your NVIDIA GPU's VRAM as swap space on Linux via NBD"
LICENSE="MIT"
SLOT="0"
KEYWORDS="~amd64"
IUSE="systemd"
# libcuda.so is dlopened at runtime from nvidia-drivers
RDEPEND="
virtual/udev
sys-block/nbd
x11-drivers/nvidia-drivers
systemd? ( sys-apps/systemd )
!systemd? ( virtual/cron )
"
src_compile() {
$(tc-getCC) ${CFLAGS} ${CPPFLAGS} -o nbd-vram nbd-vram.c ${LDFLAGS} -ldl -lpthread || die
}
src_install() {
# Service files reference /usr/local/bin — fix to /usr/bin for Gentoo FHS
sed -i 's|/usr/local/bin/|/usr/bin/|g' systemd/*.service || die
# Main daemon and init-system-agnostic helpers
dobin nbd-vram
dobin nbd-vram-connect.sh
dobin nbd-vram-disconnect.sh
if use systemd; then
dobin nbd-vram-sleep.sh
dobin nbd-vram-power-check.sh
systemd_dounit systemd/vram-swap-nbd.service
systemd_dounit systemd/vram-swap-nbd-suspend.service
systemd_dounit systemd/nbd-vram-power-check.service
systemd_dounit systemd/nbd-vram-battery-watch.service
systemd_dounit systemd/nbd-vram-battery-watch.timer
udev_dorules udev/99-nbd-vram-power.rules
else
# nbd-vram-power-check.sh is called directly by udev and cron
dobin "${FILESDIR}/nbd-vram-power-check.sh"
doinitd "${FILESDIR}/nbd-vram-swap.initd"
doconfd "${FILESDIR}/nbd-vram-swap.confd"
# Sleep hook for elogind (suspend/resume)
insinto /lib/elogind/system-sleep
newins "${FILESDIR}/nbd-vram-sleep.sh" nbd-vram
fperms 0755 /lib/elogind/system-sleep/nbd-vram
# Battery watch via cron (replaces nbd-vram-battery-watch.timer)
insinto /etc/cron.d
newins "${FILESDIR}/nbd-vram.cron" nbd-vram
# Udev rule: call script directly, no systemctl
udev_dorules "${FILESDIR}/99-nbd-vram-power-openrc.rules"
fi
# Runtime config (protected by CONFIG_PROTECT; user edits are preserved)
insinto /etc
doins nbd-vram.conf
einstalldocs
}
pkg_postinst() {
elog "To use nbd-vram, ensure your Linux kernel has NBD support enabled:"
elog " Device Drivers --->"
elog " [*] Block devices --->"
elog " <M> Network block device support"
elog ""
if use systemd; then
elog "Edit VRAM_SETUP_SIZE_MB in /etc/systemd/system/vram-swap-nbd.service"
elog "to set how much VRAM to dedicate to swap before enabling the service."
elog ""
elog "To start automatically on boot:"
elog " systemctl enable --now vram-swap-nbd"
else
elog "Edit VRAM_SETUP_SIZE_MB in /etc/conf.d/nbd-vram-swap"
elog "to set how much VRAM to dedicate to swap before enabling the service."
elog ""
elog "To start automatically on boot:"
elog " rc-update add nbd-vram-swap default"
elog " rc-service nbd-vram-swap start"
fi
udev_reload
}
pkg_postrm() {
udev_reload
}
Manage flags for this package:
euse -i <flag> -p sys-block/nbd-vram |
euse -E <flag> -p sys-block/nbd-vram |
euse -D <flag> -p sys-block/nbd-vram
virtual/udev sys-block/nbd x11-drivers/nvidia-drivers systemd? ( sys-apps/systemd ) !systemd? ( virtual/cron )