From 108c36953a75771675e0056bb94f2467784353cf Mon Sep 17 00:00:00 2001 From: Vikingnope Date: Sun, 14 Dec 2025 21:18:45 +0100 Subject: [PATCH] jellyfin-media-player: rename to jellyfin-desktop --- .../default.nix | 42 +++++++++++++------ .../non-fatal-unique-app.patch | 19 +++++++++ pkgs/top-level/aliases.nix | 1 + pkgs/top-level/all-packages.nix | 2 +- 4 files changed, 51 insertions(+), 13 deletions(-) rename pkgs/applications/video/{jellyfin-media-player => jellyfin-desktop}/default.nix (53%) create mode 100644 pkgs/applications/video/jellyfin-desktop/non-fatal-unique-app.patch diff --git a/pkgs/applications/video/jellyfin-media-player/default.nix b/pkgs/applications/video/jellyfin-desktop/default.nix similarity index 53% rename from pkgs/applications/video/jellyfin-media-player/default.nix rename to pkgs/applications/video/jellyfin-desktop/default.nix index 4927d2c563f0..2e3cbdbec819 100644 --- a/pkgs/applications/video/jellyfin-media-player/default.nix +++ b/pkgs/applications/video/jellyfin-desktop/default.nix @@ -4,40 +4,48 @@ stdenv, cmake, ninja, + python3, wrapQtAppsHook, qtbase, qtdeclarative, qtwebchannel, qtwebengine, + mpv-unwrapped, mpvqt, libcec, SDL2, libXrandr, + cacert, + nix-update-script, }: stdenv.mkDerivation rec { - pname = "jellyfin-media-player"; + pname = "jellyfin-desktop"; version = "2.0.0"; src = fetchFromGitHub { owner = "jellyfin"; - repo = "jellyfin-media-player"; + repo = "jellyfin-desktop"; rev = "v${version}"; - hash = "sha256-tdjmOeuC3LFEIDSH8X9LG/myvE1FoxwR1zpDQRyaTkQ="; + hash = "sha256-ITlYOrMS6COx9kDRSBi4wM6mzL/Q2G5X9GbABwDIOe4="; + fetchSubmodules = true; }; + patches = [ + ./non-fatal-unique-app.patch + ]; nativeBuildInputs = [ cmake ninja wrapQtAppsHook - ]; + ] + ++ lib.optional stdenv.hostPlatform.isDarwin python3; buildInputs = [ qtbase qtdeclarative qtwebchannel qtwebengine - - mpvqt + mpv-unwrapped # input sources libcec @@ -45,23 +53,33 @@ stdenv.mkDerivation rec { # frame rate switching libXrandr - ]; + cacert + ] + ++ lib.optional (!stdenv.hostPlatform.isDarwin) mpvqt; cmakeFlags = [ "-DCHECK_FOR_UPDATES=OFF" - "-DUSE_STATIC_MPVQT=OFF" # workaround for Qt cmake weirdness "-DQT_DISABLE_NO_DEFAULT_PATH_IN_QT_PACKAGES=ON" + ] + ++ lib.optional stdenv.hostPlatform.isDarwin "-DUSE_STATIC_MPVQT=ON" + ++ lib.optional (!stdenv.hostPlatform.isDarwin) "-DUSE_STATIC_MPVQT=OFF"; + + qtWrapperArgs = [ + "--set QT_STYLE_OVERRIDE Fusion" + "--set NIX_SSL_CERT_FILE ${cacert}/etc/ssl/certs/ca-bundle.crt" ]; postInstall = lib.optionalString stdenv.hostPlatform.isDarwin '' mkdir -p $out/bin $out/Applications - mv "$out/Jellyfin Media Player.app" $out/Applications - ln -s "$out/Applications/Jellyfin Media Player.app/Contents/MacOS/Jellyfin Media Player" $out/bin/jellyfinmediaplayer + mv "$out/Jellyfin Desktop.app" $out/Applications + ln -s "$out/Applications/Jellyfin Desktop.app/Contents/MacOS/Jellyfin Desktop" $out/bin/jellyfindesktop ''; + passthru.updateScript = nix-update-script { }; + meta = { - homepage = "https://github.com/jellyfin/jellyfin-media-player"; + homepage = "https://github.com/jellyfin/jellyfin-desktop"; description = "Jellyfin Desktop Client"; license = with lib.licenses; [ gpl2Only @@ -78,6 +96,6 @@ stdenv.mkDerivation rec { kranzes paumr ]; - mainProgram = "jellyfinmediaplayer"; + mainProgram = "jellyfin-desktop"; }; } diff --git a/pkgs/applications/video/jellyfin-desktop/non-fatal-unique-app.patch b/pkgs/applications/video/jellyfin-desktop/non-fatal-unique-app.patch new file mode 100644 index 000000000000..de50edd43f96 --- /dev/null +++ b/pkgs/applications/video/jellyfin-desktop/non-fatal-unique-app.patch @@ -0,0 +1,19 @@ +--- a/src/shared/UniqueApplication.h ++++ b/src/shared/UniqueApplication.h +@@ -6,6 +6,7 @@ + #define KONVERGO_UNIQUEAPPLICATION_H + + #include ++#include + #include "Paths.h" + #include "LocalJsonServer.h" + #include "LocalJsonClient.h" +@@ -35,7 +36,7 @@ + }); + + if (!m_server->listen()) +- throw FatalException("Failed to listen to uniqueApp socket: " + m_server->errorString()); ++ qWarning() << "Failed to listen to uniqueApp socket: " << m_server->errorString(); + } + + bool ensureUnique() diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index 2db64150f056..748a522ecc24 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -765,6 +765,7 @@ mapAliases { jdk23_headless = throw "OpenJDK 23 was removed as it has reached its end of life"; # Added 2025-11-04 jdk24 = throw "OpenJDK 24 was removed as it has reached its end of life"; # Added 2025-10-04 jdk24_headless = throw "OpenJDK 24 was removed as it has reached its end of life"; # Added 2025-10-04 + jellyfin-media-player = jellyfin-desktop; # Added 2025-12-14 jesec-rtorrent = throw "'jesec-rtorrent' has been removed due to lack of maintenance upstream."; # Added 2025-11-20 jikespg = throw "'jikespg' has been removed due to lack of maintenance upstream."; # Added 2025-06-10 jing = jing-trang; # Added 2025-09-18 diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 56b684baa014..84affdeb1e8a 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2046,7 +2046,7 @@ with pkgs; intensity-normalization = with python3Packages; toPythonApplication intensity-normalization; - jellyfin-media-player = kdePackages.callPackage ../applications/video/jellyfin-media-player { }; + jellyfin-desktop = kdePackages.callPackage ../applications/video/jellyfin-desktop { }; jellyfin-mpv-shim = python3Packages.callPackage ../applications/video/jellyfin-mpv-shim { };