112 lines
3 KiB
Nix
112 lines
3 KiB
Nix
{ lib
|
|
, stdenv
|
|
, fetchFromGitHub
|
|
, cmake
|
|
, avahi
|
|
, libevdev
|
|
, libpulseaudio
|
|
, xorg
|
|
, libxcb
|
|
, openssl
|
|
, libopus
|
|
, ffmpeg-full
|
|
, boost
|
|
, pkg-config
|
|
, libdrm
|
|
, wayland
|
|
, libffi
|
|
, libcap
|
|
, mesa
|
|
, cudaSupport ? false
|
|
, cudaPackages ? {}
|
|
}:
|
|
|
|
stdenv.mkDerivation rec {
|
|
pname = "sunshine";
|
|
version = "0.15.0";
|
|
|
|
src = fetchFromGitHub {
|
|
owner = "LizardByte";
|
|
repo = "Sunshine";
|
|
rev = "v${version}";
|
|
sha256 = "sha256-/eekvpjopCivb2FJqh5W1G54GznLwdjk8ANOosdfuxw=";
|
|
fetchSubmodules = true;
|
|
};
|
|
|
|
nativeBuildInputs = [
|
|
cmake
|
|
pkg-config
|
|
] ++ lib.optionals cudaSupport [
|
|
cudaPackages.autoAddOpenGLRunpathHook
|
|
];
|
|
|
|
buildInputs = [
|
|
avahi
|
|
ffmpeg-full
|
|
libevdev
|
|
libpulseaudio
|
|
xorg.libX11
|
|
libxcb
|
|
xorg.libXfixes
|
|
xorg.libXrandr
|
|
xorg.libXtst
|
|
openssl
|
|
libopus
|
|
boost
|
|
libdrm
|
|
wayland
|
|
libffi
|
|
libevdev
|
|
libcap
|
|
libdrm
|
|
mesa
|
|
] ++ lib.optionals cudaSupport [
|
|
cudaPackages.cudatoolkit
|
|
];
|
|
|
|
CXXFLAGS = [
|
|
"-Wno-format-security"
|
|
];
|
|
CFLAGS = [
|
|
"-Wno-format-security"
|
|
];
|
|
|
|
cmakeFlags = [
|
|
"-D" "FFMPEG_LIBRARIES=${ffmpeg-full}/lib"
|
|
"-D" "FFMPEG_INCLUDE_DIRS=${ffmpeg-full}/include"
|
|
"-D" "LIBAVCODEC_INCLUDE_DIR=${ffmpeg-full}/include"
|
|
"-D" "LIBAVCODEC_LIBRARIES=${ffmpeg-full}/lib/libavcodec.so"
|
|
"-D" "LIBAVDEVICE_INCLUDE_DIR=${ffmpeg-full}/include"
|
|
"-D" "LIBAVDEVICE_LIBRARIES=${ffmpeg-full}/lib/libavdevice.so"
|
|
"-D" "LIBAVFORMAT_INCLUDE_DIR=${ffmpeg-full}/include"
|
|
"-D" "LIBAVFORMAT_LIBRARIES=${ffmpeg-full}/lib/libavformat.so"
|
|
"-D" "LIBAVUTIL_INCLUDE_DIR=${ffmpeg-full}/include"
|
|
"-D" "LIBAVUTIL_LIBRARIES=${ffmpeg-full}/lib/libavutil.so"
|
|
"-D" "LIBSWSCALE_LIBRARIES=${ffmpeg-full}/lib/libswscale.so"
|
|
"-D" "LIBSWSCALE_INCLUDE_DIR=${ffmpeg-full}/include"
|
|
];
|
|
|
|
postPatch = ''
|
|
# Don't force the need for a static boost, fix hardcoded libevdev path
|
|
substituteInPlace CMakeLists.txt \
|
|
--replace 'set(Boost_USE_STATIC_LIBS ON)' '# set(Boost_USE_STATIC_LIBS ON)' \
|
|
--replace '/usr/include/libevdev-1.0' '${libevdev}/include/libevdev-1.0'
|
|
|
|
# fix libgbm path
|
|
substituteInPlace src/platform/linux/graphics.cpp \
|
|
--replace 'handle = dyn::handle({ "libgbm.so.1", "libgbm.so" });' 'handle = dyn::handle({ "${mesa}/lib/libgbm.so.1", "${mesa}/lib/libgbm.so" });'
|
|
|
|
# fix avahi path
|
|
substituteInPlace src/platform/linux/publish.cpp \
|
|
--replace 'handle = dyn::handle({ "libavahi-client.so.3", "libavahi-client.so" });' 'handle = dyn::handle({ "${avahi}/lib/libavahi-client.so.3", "${avahi}/lib/libavahi-client.so" });' \
|
|
--replace 'handle = dyn::handle({ "libavahi-common.so.3", "libavahi-common.so" });' 'handle = dyn::handle({ "${avahi}/lib/libavahi-common.so.3", "${avahi}/lib/libavahi-common.so" });'
|
|
'';
|
|
|
|
meta = with lib; {
|
|
description = "Sunshine is a Game stream host for Moonlight.";
|
|
homepage = "https://docs.lizardbyte.dev/projects/sunshine/";
|
|
license = licenses.gpl3Only;
|
|
maintainers = with maintainers; [ devusb ];
|
|
platforms = platforms.linux;
|
|
};
|
|
}
|