commit: 391db8900873ee0b64a67d01b8cdb7efade28633 Author: Adam Pimentel <adam.pimentel <AT> protonmail <DOT> com> AuthorDate: Thu Oct 12 20:22:46 2023 +0000 Commit: Adam Pimentel <adam.pimentel <AT> protonmail <DOT> com> CommitDate: Thu Oct 12 20:22:46 2023 +0000 URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=391db890
net-misc/sunshine: new ebuild Signed-off-by: Adam Pimentel <adam.pimentel <AT> protonmail.com> net-misc/sunshine/files/85-sunshine.rules | 1 + net-misc/sunshine/files/sunshine.service | 12 ++++ net-misc/sunshine/metadata.xml | 18 +++++ net-misc/sunshine/sunshine-9999.ebuild | 113 ++++++++++++++++++++++++++++++ 4 files changed, 144 insertions(+) diff --git a/net-misc/sunshine/files/85-sunshine.rules b/net-misc/sunshine/files/85-sunshine.rules new file mode 100644 index 0000000000..b6ccddd283 --- /dev/null +++ b/net-misc/sunshine/files/85-sunshine.rules @@ -0,0 +1 @@ +KERNEL=="uinput", SUBSYSTEM=="misc", OPTIONS+="static_node=uinput", TAG+="uaccess" diff --git a/net-misc/sunshine/files/sunshine.service b/net-misc/sunshine/files/sunshine.service new file mode 100644 index 0000000000..f10fb6ed4d --- /dev/null +++ b/net-misc/sunshine/files/sunshine.service @@ -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 diff --git a/net-misc/sunshine/metadata.xml b/net-misc/sunshine/metadata.xml new file mode 100644 index 0000000000..9fe6bf2ed7 --- /dev/null +++ b/net-misc/sunshine/metadata.xml @@ -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>[email protected]</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> diff --git a/net-misc/sunshine/sunshine-9999.ebuild b/net-misc/sunshine/sunshine-9999.ebuild new file mode 100644 index 0000000000..868ce09bb8 --- /dev/null +++ b/net-misc/sunshine/sunshine-9999.ebuild @@ -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 +}
