diff --git a/pkgs/servers/sunshine/default.nix b/pkgs/servers/sunshine/default.nix index 417cac9510f5..deb9e738b94b 100644 --- a/pkgs/servers/sunshine/default.nix +++ b/pkgs/servers/sunshine/default.nix @@ -3,6 +3,7 @@ , callPackage , fetchFromGitHub , fetchurl +, fetchpatch , autoPatchelfHook , makeWrapper , buildNpmPackage @@ -29,6 +30,7 @@ , amf-headers , svt-av1 , vulkan-loader +, libappindicator , cudaSupport ? false , cudaPackages ? {} }: @@ -42,28 +44,35 @@ let in stdenv.mkDerivation rec { pname = "sunshine"; - version = "0.18.4"; + version = "0.19.1"; src = fetchFromGitHub { owner = "LizardByte"; repo = "Sunshine"; rev = "v${version}"; - sha256 = "sha256-nPUWBka/fl1oTB0vTv6qyL7EHh7ptFnxwfV/jYtloTc="; + sha256 = "sha256-fifwctVrSkAcMK8juAirIbIP64H7GKEwC+sUR/U6Q3Y="; fetchSubmodules = true; }; # remove pre-built ffmpeg; use ffmpeg from nixpkgs - patches = [ ./ffmpeg.diff ]; + patches = [ + ./ffmpeg.diff + # fix for X11 not being added to libraries unless prebuilt FFmpeg is used: https://github.com/LizardByte/Sunshine/pull/1166 + (fetchpatch { + url = "https://github.com/LizardByte/Sunshine/commit/a067da6cae72cf36f76acc06fcf1e814032af886.patch"; + sha256 = "sha256-HMxM7luiFBEmFkvQtkdAMMSjAaYPEFX3LL0T/ActUhM="; + }) + ]; # fetch node_modules needed for webui ui = buildNpmPackage { inherit src version; pname = "sunshine-ui"; - npmDepsHash = "sha256-k8Vfi/57AbGxYFPYSNh8bv4KqHnZjk3BDp8SJQHzuR8="; + npmDepsHash = "sha256-sdwvM/Irejo8DgMHJWWCxwOykOK9foqLFFd/tuzrkxI="; dontNpmBuild = true; - # use generated package-lock.json upstream does not provide one + # use generated package-lock.json as upstream does not provide one postPatch = '' cp ${./package-lock.json} ./package-lock.json ''; @@ -94,6 +103,7 @@ stdenv.mkDerivation rec { xorg.libXfixes xorg.libXrandr xorg.libXtst + xorg.libXi openssl libopus boost @@ -110,6 +120,7 @@ stdenv.mkDerivation rec { mesa amf-headers svt-av1 + libappindicator ] ++ lib.optionals cudaSupport [ cudaPackages.cudatoolkit ]; @@ -121,21 +132,18 @@ stdenv.mkDerivation rec { libxcb ]; - CXXFLAGS = [ - "-Wno-format-security" - ]; - CFLAGS = [ - "-Wno-format-security" - ]; - cmakeFlags = [ "-Wno-dev" ]; postPatch = '' - # fix hardcoded libevdev path + # fix hardcoded libevdev and icon path substituteInPlace CMakeLists.txt \ - --replace '/usr/include/libevdev-1.0' '${libevdev}/include/libevdev-1.0' + --replace '/usr/include/libevdev-1.0' '${libevdev}/include/libevdev-1.0' \ + --replace '/usr/share' "$out/share" + + substituteInPlace packaging/linux/sunshine.desktop \ + --replace '@PROJECT_NAME@' 'Sunshine' # add FindFFMPEG to source tree cp ${findFfmpeg} cmake/FindFFMPEG.cmake @@ -153,6 +161,10 @@ stdenv.mkDerivation rec { --set LD_LIBRARY_PATH ${lib.makeLibraryPath [ vulkan-loader ]} ''; + postInstall = '' + install -Dm644 ../packaging/linux/${pname}.desktop $out/share/applications/${pname}.desktop + ''; + passthru.updateScript = ./updater.sh; meta = with lib; { diff --git a/pkgs/servers/sunshine/package-lock.json b/pkgs/servers/sunshine/package-lock.json index 41f61a5f0abd..a4678e38f4cf 100644 --- a/pkgs/servers/sunshine/package-lock.json +++ b/pkgs/servers/sunshine/package-lock.json @@ -1,28 +1,28 @@ { - "name": "Sunshine", - "lockfileVersion": 2, + "name": "sunshine", + "lockfileVersion": 3, "requires": true, "packages": { "": { "dependencies": { - "@fortawesome/fontawesome-free": "6.2.1", + "@fortawesome/fontawesome-free": "6.4.0", "bootstrap": "5.2.3", "vue": "2.6.12" } }, "node_modules/@fortawesome/fontawesome-free": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-6.2.1.tgz", - "integrity": "sha512-viouXhegu/TjkvYQoiRZK3aax69dGXxgEjpvZW81wIJdxm5Fnvp3VVIP4VHKqX4SvFw6qpmkILkD4RJWAdrt7A==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-6.4.0.tgz", + "integrity": "sha512-0NyytTlPJwB/BF5LtRV8rrABDbe3TdTXqNB3PdZ+UUUZAEIrdOJdmABqKjt4AXwIoJNaRVVZEXxpNrqvE1GAYQ==", "hasInstallScript": true, "engines": { "node": ">=6" } }, "node_modules/@popperjs/core": { - "version": "2.11.6", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz", - "integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==", + "version": "2.11.7", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.7.tgz", + "integrity": "sha512-Cr4OjIkipTtcXKjAsm8agyleBuDHvxzeBoa1v543lbv1YaIwQjESsVcmjiWiPEbC1FIeHOG/Op9kdCmAmiS3Kw==", "peer": true, "funding": { "type": "opencollective", @@ -52,29 +52,5 @@ "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.12.tgz", "integrity": "sha512-uhmLFETqPPNyuLLbsKz6ioJ4q7AZHzD8ZVFNATNyICSZouqP2Sz0rotWQC8UNBF6VGSCs5abnKJoStA6JbCbfg==" } - }, - "dependencies": { - "@fortawesome/fontawesome-free": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-6.2.1.tgz", - "integrity": "sha512-viouXhegu/TjkvYQoiRZK3aax69dGXxgEjpvZW81wIJdxm5Fnvp3VVIP4VHKqX4SvFw6qpmkILkD4RJWAdrt7A==" - }, - "@popperjs/core": { - "version": "2.11.6", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz", - "integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==", - "peer": true - }, - "bootstrap": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.2.3.tgz", - "integrity": "sha512-cEKPM+fwb3cT8NzQZYEu4HilJ3anCrWqh3CHAok1p9jXqMPsPTBhU25fBckEJHJ/p+tTxTFTsFQGM+gaHpi3QQ==", - "requires": {} - }, - "vue": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.12.tgz", - "integrity": "sha512-uhmLFETqPPNyuLLbsKz6ioJ4q7AZHzD8ZVFNATNyICSZouqP2Sz0rotWQC8UNBF6VGSCs5abnKJoStA6JbCbfg==" - } } }