From 67d12d2322836fc4b8a797c73033ee68ee948bed Mon Sep 17 00:00:00 2001 From: Anish Pallati Date: Mon, 6 Jul 2026 20:54:36 -0400 Subject: [PATCH 1/2] sunshine: 2026.516.143833 -> 2026.914.233613 Co-authored-by: Morgan Helton Signed-off-by: Anish Pallati --- nixos/tests/sunshine.nix | 9 ++++++++- pkgs/by-name/su/sunshine/package.nix | 29 +++++++++++++++------------- 2 files changed, 24 insertions(+), 14 deletions(-) diff --git a/nixos/tests/sunshine.nix b/nixos/tests/sunshine.nix index 80f8e96b89eb..223b62136968 100644 --- a/nixos/tests/sunshine.nix +++ b/nixos/tests/sunshine.nix @@ -29,6 +29,7 @@ environment.systemPackages = with pkgs; [ gxmessage + jq ]; }; @@ -65,7 +66,13 @@ moonlight.wait_for_console_text("Executing request.*pair") # respond to pairing request from sunshine - sunshine.succeed("curl --fail --insecure -u sunshine:sunshine -H 'Content-Type: application/json' -d '{\"pin\":\"1234\",\"name\":\"sunshine\"}' https://localhost:47990/api/pin") + pairing_id = sunshine.wait_until_succeeds( + "curl --fail --insecure -u sunshine:sunshine https://localhost:47990/api/pin | jq -er '.pairings[0].id'", + timeout=30, + ).strip() + sunshine.succeed( + f"curl --fail --insecure -u sunshine:sunshine -H 'Content-Type: application/json' -d '{{\"pairing_id\":\"{pairing_id}\",\"pin\":\"1234\",\"name\":\"sunshine\"}}' https://localhost:47990/api/pin | jq -e '.status == true'" + ) # wait until pairing is complete moonlight.wait_for_console_text("Executing request.*phrase=pairchallenge") diff --git a/pkgs/by-name/su/sunshine/package.nix b/pkgs/by-name/su/sunshine/package.nix index bfc646fa8a23..dd2de603031b 100644 --- a/pkgs/by-name/su/sunshine/package.nix +++ b/pkgs/by-name/su/sunshine/package.nix @@ -47,7 +47,7 @@ svt-av1, shaderc, vulkan-loader, - libappindicator, + qt6, libnotify, pipewire, miniupnpc, @@ -69,7 +69,7 @@ let # a fixed-output derivation and point cmake at it via FFMPEG_PREPARED_BINARIES. # The tag must match the commit of the third-party/build-deps submodule pinned # in the Sunshine release. - buildDepsTag = "v2026.516.30821"; + buildDepsTag = "v2026.910.121303"; ffmpegArch = { x86_64-linux = "Linux-x86_64"; @@ -86,9 +86,9 @@ let # unlike the empty-hash trick). hash = { - x86_64-linux = "sha256-VT+4qP2FaizCoIBBbBkzbYw4YOvGhuBUoZxWL0IYVZo="; - aarch64-linux = "sha256-X5v/GsJy8G3/LHW/8s0VAS0Vegr7JhZSqYotXL/s81o="; - aarch64-darwin = "sha256-xkfwLJgb7uz1H7mJrQFW79w2T/T/Zv7biXlvXz5UvXc="; + x86_64-linux = "sha256-1S57XfkJa+qEYQLmifWyT9ul0SASFhSk1lkk2timnOY="; + aarch64-linux = "sha256-1HnlNem4AbcJkhZA8x5hC1/4cCqL8bJDjXNkHCI5IYw="; + aarch64-darwin = "sha256-jtBnSo0rn0VCnbfB90by1iBE4zvmtE86Wz2x+PolGmw="; } .${stdenv.hostPlatform.system}; }; @@ -96,7 +96,7 @@ let in stdenv'.mkDerivation (finalAttrs: { pname = "sunshine"; - version = "2026.516.143833"; + version = "2026.914.233613"; __structuredAttrs = true; strictDeps = true; @@ -105,15 +105,14 @@ stdenv'.mkDerivation (finalAttrs: { owner = "LizardByte"; repo = "Sunshine"; tag = "v${finalAttrs.version}"; - hash = "sha256-3yuhOyW1Rqz4ddZ40z2ZzpAReZQFva0SL595XrnFB60="; + hash = "sha256-HqbswLvX/UiY3nOwxSesBMqnFAF0zKP1ueE6PwDtTNs="; fetchSubmodules = true; }; - # build webui ui = buildNpmPackage { inherit (finalAttrs) src version; pname = "sunshine-ui"; - npmDepsHash = "sha256-YnNnuAdj/S5LGNytqIsmCApIec8DTWKF6VIJ7AXUctU="; + npmDepsHash = "sha256-/uY+zvYxQG0Yb8kygwF48YfS+Km0bcQBW4poaqkeJXs="; installPhase = '' runHook preInstall @@ -168,6 +167,7 @@ stdenv'.mkDerivation (finalAttrs: { ++ lib.optionals isLinux [ wayland-scanner shaderc # provides glslc, needed at configure time for shader compilation + qt6.wrapQtAppsHook # Avoid fighting upstream's usage of vendored ffmpeg libraries autoPatchelfHook ] @@ -218,7 +218,8 @@ stdenv'.mkDerivation (finalAttrs: { svt-av1 vulkan-loader pipewire - libappindicator + qt6.qtbase + qt6.qtsvg libnotify ] ++ lib.optionals cudaSupport [ @@ -295,10 +296,12 @@ stdenv'.mkDerivation (finalAttrs: { runHook postInstall ''; - # allow Sunshine to find libvulkan - postFixup = lib.optionalString cudaSupport '' + dontWrapQtApps = true; + + postFixup = lib.optionalString isLinux '' wrapProgram $out/bin/sunshine \ - --set LD_LIBRARY_PATH ${lib.makeLibraryPath [ vulkan-loader ]} + "''${qtWrapperArgs[@]}" \ + ${lib.optionalString cudaSupport "--set LD_LIBRARY_PATH ${lib.makeLibraryPath [ vulkan-loader ]}"} ''; doInstallCheck = isLinux; From 606402b8907604da1233237bc30401f636067faa Mon Sep 17 00:00:00 2001 From: Anish Pallati Date: Tue, 15 Sep 2026 14:41:52 -0400 Subject: [PATCH 2/2] sunshine: fix hash refresh in update script Signed-off-by: Anish Pallati --- pkgs/by-name/su/sunshine/updater.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/su/sunshine/updater.sh b/pkgs/by-name/su/sunshine/updater.sh index 96c293699844..fffa494eb920 100755 --- a/pkgs/by-name/su/sunshine/updater.sh +++ b/pkgs/by-name/su/sunshine/updater.sh @@ -50,7 +50,7 @@ log "src hash: $src_hash" log "Patching src hash in $package_nix" # The src fetchFromGitHub is the only one with fetchSubmodules; anchor on it so # we don't touch the ffmpeg or npmDepsHash entries. sed -z spans newlines. -sed -i -zE "s#hash = \"sha256-[A-Za-z0-9+/=]+\"(\\s*fetchSubmodules = true;)#hash = \"$src_hash\"\\1#" "$package_nix" +sed -i -zE "s#hash = \"sha256-[A-Za-z0-9+/=]+\";(\\s*fetchSubmodules = true;)#hash = \"$src_hash\";\\1#" "$package_nix" if ! grep -q "$src_hash" "$package_nix"; then echo "ERROR: failed to write src hash into $package_nix" >&2 @@ -84,7 +84,7 @@ log "build-deps tag: $build_deps_tag" prefetch_unpacked_sri() { local raw raw=$(nix-prefetch-url --unpack --type sha256 "$1") - nix --extra-experimental-features nix-command hash convert --hash-algo sha256 --to sri "$raw" + nix-hash --type sha256 --to-sri "$raw" } ffmpeg_url() {