net-misc/sunshine: new ebuild

Signed-off-by: Adam Pimentel <adam.pimentel@protonmail.com>
This commit is contained in:
Adam Pimentel
2023-10-12 16:22:46 -04:00
parent e4c360987b
commit 391db89008
4 changed files with 144 additions and 0 deletions

View File

@@ -0,0 +1 @@
KERNEL=="uinput", SUBSYSTEM=="misc", OPTIONS+="static_node=uinput", TAG+="uaccess"

View File

@@ -0,0 +1,12 @@
[Unit]
Description=Sunshine self-hosted game stream host for Moonlight.
StartLimitIntervalSec=500
StartLimitBurst=5
[Service]
ExecStart=/usr/bin/sunshine
Restart=on-failure
RestartSec=5s
[Install]
WantedBy=graphical-session.target

View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="person">
<email>adam.pimentel46@gmail.com</email>
<name>Adam Pimentel</name>
</maintainer>
<upstream>
<remote-id type="github">net-misc/sunshine</remote-id>
</upstream>
<longdescription lang="en">
Sunshine is a self-hosted game stream host for Moonlight.
Offering low latency, cloud gaming server capabilities with support for AMD, Intel, and Nvidia GPUs for hardware encoding.
Software encoding is also available. You can connect to Sunshine from any Moonlight client on a variety of devices.
A web UI is provided to allow configuration, and client pairing, from your favorite web browser.
Pair from the local server or any mobile device.
</longdescription>
</pkgmetadata>

View File

@@ -0,0 +1,113 @@
# Copyright 1999-2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit cmake git-r3 desktop udev systemd #fcaps
DESCRIPTION="Self-hosted game stream host for Moonlight"
HOMEPAGE="https://app.lizardbyte.dev/Sunshine/"
SRC_URI=""
EGIT_REPO_URI="https://github.com/LizardByte/Sunshine.git"
EGIT_BRANCH="nightly"
# Licenses (may be incomplete)
#-----------------------------
# Sunshine: GPL3
# Simple Web Server: MIT
# TPCircularBuffer: BSD 3-Clause
# ViGEmClient: unlicensed?
# ffmpeg: LGPL2.1+
# miniupnp: BSD 3-Clause
# moonlight-common-c: GPL3
# enet: MIT
# nanors: MIT
# tray: MIT
# wayland-protocols: MIT
# wlr-protocols: unlicensed?
LICENSE="GPL-3 MIT LGPL-2.1+ BSD"
SLOT="0"
KEYWORDS=""
IUSE="nvenc cuda wayland X libdrm systemd"
REQUIRED_USE="
nvenc? ( cuda )
|| ( wayland X )
"
DEPEND="
net-dns/avahi
dev-libs/libinput
dev-libs/boost
net-misc/curl
dev-libs/libayatana-appindicator
dev-libs/libevdev
media-libs/intel-mediasdk
x11-libs/libnotify
media-libs/libpulse
media-libs/libva
x11-libs/libvdpau
X? (
x11-libs/libX11
x11-libs/libxcb
x11-libs/libXfixes
x11-libs/libXrandr
x11-libs/libXtst
)
sys-process/numactl
dev-libs/openssl
media-libs/opus
virtual/udev
sys-libs/libcap
libdrm? (
x11-libs/libdrm
)
"
RDEPEND="
${DEPEND}
"
BDEPEND="
virtual/pkgconfig
net-libs/nodejs
"
src_configure() {
local mycmakeargs=(
-DCMAKE_INSTALL_PREFIX=/usr
-DSUNSHINE_EXECUTABLE_PATH=/usr/bin/sunshine
-DSUNSHINE_ASSETS_DIR="share/sunshine"
)
if use cuda; then
mycmakeargs+=(-DSUNSHINE_ENABLE_CUDA=ON)
fi
if use libdrm; then
mycmakeargs+=(-DSUNSHINE_ENABLE_DRM=ON)
fi
if use wayland; then
mycmakeargs+=(-DSUNSHINE_ENABLE_WAYLAND=ON)
fi
if use X; then
mycmakeargs+=(-DSUNSHINE_ENABLE_X11=ON)
fi
cmake_src_configure
}
src_install() {
dobin "${BUILD_DIR}/sunshine"
newicon -s 256 "${WORKDIR}"/${P}/sunshine.png sunshine.png
newicon -s scalable "${WORKDIR}"/${P}/sunshine.svg sunshine.svg
domenu "${BUILD_DIR}"/sunshine.desktop
udev_dorules "${FILESDIR}"/85-sunshine.rules
systemd_dounit "${FILESDIR}"/sunshine.service
#fcaps cap_sys_admin+p "${BUILD_DIR}/sunshine"
}
pkg_postinst() {
udev_reload
einfo "If you get \"Error: Failed to gain CAP_SYS_ADMIN\", run \`setcap cap_sys_admin+p \$(readlink -f \$(which sunshine))\` as root"
}
pkg_postrm() {
udev_reload
}