| Version | EAPI | Keywords | Slot |
|---|---|---|---|
| 20.14.1 | 8 | -* ~amd64 | 0 |
# Copyright 2021-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
#
# You will need games-util/steam-client-meta from the steam-overlay for this to work
#
# CRATES list was generated using the script found in 'Documents/alvr_get_crates.py'
EAPI=8
CRATES=""
# Pulled from fem-overlay
CARGO_DEP_ARCHIVE_VER="2025-12-13"
CARGO_DEP_ARCHIVE_PV="${PV}+${CARGO_DEP_ARCHIVE_VER}"
CARGO_DEP_ARCHIVE_P="${PN}-deps-${CARGO_DEP_ARCHIVE_PV}"
CARGO_VENDOR_BASEURI="https://gitlab.com/api/v4/projects/42159594/packages/generic"
CARGO_VENDOR_ARCHIVE_NAME="${P}-deps.tar.xz"
CARGO_VENDOR_SRC_URI="${CARGO_VENDOR_BASEURI}/${PN}/${CARGO_DEP_ARCHIVE_PV//+/%2B}/${CARGO_VENDOR_ARCHIVE_NAME} -> ${CARGO_DEP_ARCHIVE_P}.tar.xz"
OPENVR_PV="1.16.8"
inherit desktop cargo xdg
DESCRIPTION="ALVR is an open source remote VR display for the Oculus Go/Quest"
HOMEPAGE="https://github.com/alvr-org/ALVR"
SRC_URI="
https://github.com/alvr-org/ALVR/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz
https://github.com/ValveSoftware/openvr/archive/v${OPENVR_PV}.tar.gz -> ${P}-openvr.tar.gz
${CARGO_VENDOR_SRC_URI}
"
S="${WORKDIR}/ALVR-${PV}"
LICENSE="MIT"
SLOT="0"
KEYWORDS="-* ~amd64"
IUSE="video_cards_nvidia"
RDEPEND="
sys-libs/libunwind
media-video/ffmpeg[encode(+),drm,vulkan,vaapi]
video_cards_nvidia? (
media-video/ffmpeg[cuda,nvenc]
)
"
DEPEND="${RDEPEND}"
BDEPEND="${RDEPEND}
virtual/pkgconfig
virtual/jack
media-gfx/imagemagick
"
PATCHES=(
"${FILESDIR}/0001-cargo-Remove-custom-release-profile.patch"
"${FILESDIR}/0002-Force-system-ffmpeg.patch"
"${FILESDIR}/ffmpeg-8.patch"
)
src_unpack() {
cargo_src_unpack
ln -s "${WORKDIR}/vendor" "${S}/" || die
sed -i "${ECARGO_HOME}/config.toml" -e '/source.crates-io/d' || die
sed -i "${ECARGO_HOME}/config.toml" -e '/replace-with = "gentoo"/d' || die
sed -i "${ECARGO_HOME}/config.toml" -e '/local-registry = "\/nonexistent"/d' || die
cat "${WORKDIR}/vendor/vendor-config.toml" >> "${ECARGO_HOME}/config.toml" || die
rm -r "${S}/openvr" || die
ln -s "${WORKDIR}/openvr-${OPENVR_PV}" "${S}/openvr" || die
}
src_configure() {
local ECARGO_EXTRA_ARGS="
-p alvr_vrcompositor_wrapper
-p alvr_server_openvr
-p alvr_dashboard
-p alvr_vulkan_layer
"
cargo_src_configure
}
src_compile() {
export ALVR_ROOT_DIR=/usr
export ALVR_LIBRARIES_DIR="$ALVR_ROOT_DIR/$(get_libdir)/"
export ALVR_OPENVR_DRIVER_ROOT_DIR="$ALVR_ROOT_DIR/lib/steamvr/alvr/"
export ALVR_VRCOMPOSITOR_WRAPPER_DIR="$ALVR_ROOT_DIR/libexec/alvr/"
export GIT_DISCOVERY_ACROSS_FILESYSTEM=1
cargo_src_compile
}
src_install() {
# vrcompositor wrapper
exeinto /usr/libexec/alvr/
newexe target/release/alvr_vrcompositor_wrapper vrcompositor-wrapper
doexe target/release/alvr_drm_lease_shim.so
# OpenVR Driver
exeinto /usr/lib/steamvr/alvr/bin/linux64/
newexe target/release/libalvr_server_openvr.so driver_alvr_server.so
insinto /usr/lib/steamvr/alvr/
doins alvr/xtask/resources/driver.vrdrivermanifest
# Vulkan layer
dolib.so target/release/libalvr_vulkan_layer.so
insinto /usr/share/vulkan/explicit_layer.d/
doins alvr/vulkan_layer/layer/alvr_x86_64.json
# Launcher
dobin target/release/alvr_dashboard
# Desktop
domenu alvr/xtask/resources/alvr.desktop
# Icons
for size in {16,32,48,64,128,256}; do
magick alvr/dashboard/resources/dashboard.ico \
-thumbnail ${size} -alpha on -background none -flatten \
${PN}-${size}.png || die
newicon -s ${size} ${PN}-${size}.png ${PN}.png
done
# Firewall and SELinux
insinto /etc/ufw/applications.d/
doins alvr/xtask/firewall/ufw-alvr
insinto /usr/lib/firewalld/services/
doins alvr/xtask/firewall/alvr-firewalld.xml
exeinto /usr/libexec/alvr/
doexe alvr/xtask/firewall/alvr_fw_config.sh
}
sys-libs/libunwind media-video/ffmpeg[encode(+),drm,vulkan,vaapi] video_cards_nvidia? ( media-video/ffmpeg[cuda,nvenc] )
sys-libs/libunwind media-video/ffmpeg[encode(+),drm,vulkan,vaapi] video_cards_nvidia? ( media-video/ffmpeg[cuda,nvenc] )
sys-libs/libunwind media-video/ffmpeg[encode(+),drm,vulkan,vaapi] video_cards_nvidia? ( media-video/ffmpeg[cuda,nvenc] ) virtual/pkgconfig virtual/jack media-gfx/imagemagick