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
+}

Reply via email to