Install this version:
emerge -a =gui-dcc/unityhub-bin-3.22.2
If this version is masked, you can unmask it using the autounmask tool or standard emerge options:
autounmask =gui-dcc/unityhub-bin-3.22.2
Or alternatively:
emerge --autounmask-write -a =gui-dcc/unityhub-bin-3.22.2
| Version | EAPI | Keywords | Slot |
|---|---|---|---|
| 3.22.2 | 8 | ~amd64 | 0 |
# Copyright 2026 Nadeŭka <me+oss@nadevko.cc>
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit desktop optfeature pax-utils unpacker xdg
DESCRIPTION='Official management and launcher tool for Unity Engine'
HOMEPAGE=https://unity.com/hub
BASE_URI=https://hub-dist.unity3d.com/artifactory/hub-debian-prod-local/pool/main/u/unity
SRC_URI="
amd64? ( ${BASE_URI}/unityhub_amd64/UnityHubSetup-${PV}-amd64.deb -> ${P}-amd64.deb )
arm64? ( ${BASE_URI}/unityhub_arm64/UnityHubSetup-${PV}-arm64.deb -> ${P}-arm64.deb )
"
S="${WORKDIR}"
LICENSE='
Apache-2.0 Artistic-2 BSD BSD-2 BZIP2 curl CyberNeko icu ISC LGPL-2.1 MIT
MPL-2.0 MS-EULA Naumen openssl public-domain Unity-Companion
Unity-Editor-Software Unity-Package-Distribution Unity-ToS Xnet ZLIB
'
SLOT=0
KEYWORDS='~amd64'
IUSE='apparmor bwrap +telemetry'
RESTRICT='bindist mirror strip'
QA_PREBUILT="opt/${PN}/*"
RDEPEND='
app-accessibility/at-spi2-core:2
app-alternatives/cpio
app-arch/tar
app-arch/unzip
app-arch/zip
app-crypt/libsecret
cli-dcc/unity-cli-bin
dev-libs/expat
dev-libs/glib:2
dev-libs/nspr
dev-libs/nss
media-libs/alsa-lib
media-libs/fontconfig
media-libs/freetype
media-libs/mesa[gbm(+)]
net-print/cups
sys-apps/dbus
sys-apps/util-linux
x11-libs/cairo
x11-libs/gtk+:3
x11-libs/libdrm
x11-libs/libnotify
x11-libs/libX11
x11-libs/libxcb
x11-libs/libXcomposite
x11-libs/libXcursor
x11-libs/libXdamage
x11-libs/libXext
x11-libs/libXfixes
x11-libs/libXi
x11-libs/libxkbcommon
x11-libs/libXrandr
x11-libs/libXrender
x11-libs/libXScrnSaver
x11-libs/libXtst
x11-libs/pango
x11-misc/xdg-utils
bwrap? ( sys-apps/bubblewrap )
'
src_unpack() {
unpack_deb ${A}
}
src_prepare() {
default
local dest="/opt/${PN}"
# Remove unused LTTng tracepoint provider to fix unresolved soname (liblttng-ust.so.0)
rm usr/lib/unityhub/UnityLicensingClient_V1/libcoreclrtraceptprovider.so || die
# Remove embedded unity-cli binary (replaced by symlink to unity-cli-bin)
rm usr/lib/unityhub/resources/unity || die
# Remove redundant raw license dumps (Portage manages licenses; keep only resources/licenses.html for Hub UI)
rm usr/lib/unityhub/LICENSES.chromium.html || die
rm usr/lib/unityhub/UnityLicensingClient_V1/LICENSE.md || die
rm usr/lib/unityhub/UnityLicensingClient_V1/"Third Party Notices.md" || die
# Disable built-in auto updater
rm usr/lib/unityhub/resources/{app-update.yml,package-type} || die
# Binary-patch app.asar: hard-disable auto updates and force compliance with XDG_DATA_HOME
sed -i -e 's/AUTO_UPDATE: true/AUTO_UPDATE: 0 /g' \
-e 's|\${os.homedir()}/.local/share|\${process.env.UNITY_DATADIR}|g' \
usr/lib/unityhub/resources/app.asar || die
# Patch launcher script to point to install dir and export UNITY_DATADIR
sed -e "s|^SCRIPT_DIR=.*|SCRIPT_DIR='${EPREFIX}${dest}'|" \
-e '1a export UNITY_DATADIR="${XDG_DATA_HOME:-${HOME}/.local/share}"' \
-i usr/bin/unityhub || die
# Match desktop icon, binary name, and prefer discrete GPU on hybrid setups
sed -e "s|^Exec=.*|Exec=unityhub %U|" \
-e "s|^Icon=.*|Icon=unityhub|" \
-e '$a PrefersNonDefaultGPU=true' \
-i usr/share/applications/unityhub.desktop || die
# Patch AppArmor profile path to match Gentoo install location
if use apparmor; then
sed -e "s|/usr/lib/unityhub/unityhub-bin|${EPREFIX}${dest}/unityhub-bin|" \
-i usr/lib/unityhub/resources/apparmor-profile || die
fi
# Disable crash reporter in launcher script if USE="-telemetry"
if ! use telemetry; then
sed -e 's|LAUNCH_ARGS=(|LAUNCH_ARGS=( "--disable-crash-reporter" |' \
-i usr/bin/unityhub || die
fi
# Generate bubblewrap launcher wrapper if enabled
if use bwrap; then
sed -e "s|@EXEC@|${EPREFIX}${dest}/unityhub|g" \
"${FILESDIR}"/bwrap.sh > "${T}"/unityhub || die
fi
}
src_install() {
local dest=/opt/${PN}
# bins & wrappers (only single canonical unityhub binary)
if use bwrap; then
dobin "${T}"/unityhub
else
dobin usr/bin/unityhub
fi
# configs
if use apparmor; then
insinto /etc/apparmor.d
newins usr/lib/unityhub/resources/apparmor-profile unityhub
fi
rm usr/lib/unityhub/resources/apparmor-profile || die
if ! use telemetry; then
newenvd - 90${PN} <<-EOF
DOTNET_CLI_TELEMETRY_OPTOUT=1
OTEL_SDK_DISABLED=true
UNITY_NO_CLI_INVOKED_TELEMETRY=1
EOF
fi
# desktop
domenu usr/share/applications/unityhub.desktop
# icons
local size
for size in 16 24 32 48 64 128 256 512; do
newicon -s ${size} \
usr/share/icons/hicolor/${size}x${size}/apps/unityhub.png \
unityhub.png
done
# mime
insinto /usr/share/metainfo
doins usr/share/metainfo/com.unity3d.unityhub.metainfo.xml
# /opt installation
dodir "${dest}"
cp -a usr/lib/unityhub/* "${ED}${dest}" || die
dosym -r /usr/bin/unity "${dest}/resources/unity"
# permissions & security
pax-mark m "${ED}${dest}"/{unityhub-bin,chrome_crashpad_handler}
pax-mark m "${ED}${dest}"/UnityLicensingClient_V1/{Unity.Licensing.Client,createdump}
}
pkg_postinst() {
xdg_pkg_postinst
if use bwrap; then
elog 'Bubblewrap sandboxing is ENABLED. Unity Hub has restricted access to $HOME.'
elog 'Only ~/Unity, ~/.config/Unity*, ~/.local/share/unity3d, and directories passed'
elog 'via CLI arguments are exposed.'
fi
if ! use telemetry; then
elog "Telemetry, OpenTelemetry SDK, and crash reporting have been disabled via USE='-telemetry'."
fi
optfeature_header 'Unity Editor instances installed through the Hub may require:'
optfeature 'OpenGL Utility Library (GLU)' media-libs/glu
optfeature '7-Zip package unpacker' app-arch/p7zip
optfeature "Editors before Unity's libxml2 fix" dev-libs/libxml2-compat:2
optfeature 'Editors that still link OpenSSL 1.1' dev-libs/openssl-compat:1.1.1
}
Manage flags for this package:
euse -i <flag> -p gui-dcc/unityhub-bin |
euse -E <flag> -p gui-dcc/unityhub-bin |
euse -D <flag> -p gui-dcc/unityhub-bin
app-accessibility/at-spi2-core:2 app-alternatives/cpio app-arch/tar app-arch/unzip app-arch/zip app-crypt/libsecret cli-dcc/unity-cli-bin dev-libs/expat dev-libs/glib:2 dev-libs/nspr dev-libs/nss media-libs/alsa-lib media-libs/fontconfig media-libs/freetype media-libs/mesa[gbm(+)] net-print/cups sys-apps/dbus sys-apps/util-linux x11-libs/cairo x11-libs/gtk+:3 x11-libs/libdrm x11-libs/libnotify x11-libs/libX11 x11-libs/libxcb x11-libs/libXcomposite x11-libs/libXcursor x11-libs/libXdamage x11-libs/libXext x11-libs/libXfixes x11-libs/libXi x11-libs/libxkbcommon x11-libs/libXrandr x11-libs/libXrender x11-libs/libXScrnSaver x11-libs/libXtst x11-libs/pango x11-misc/xdg-utils bwrap? ( sys-apps/bubblewrap )