Merge pull request #268619 from tweag/lib-descriptions
[NixPkgs.git] / pkgs / applications / video / jellyfin-media-player / default.nix
blob47afaef81a6367999a59dd0ae8153349dafd2b6c
1 { lib
2 , fetchFromGitHub
3 , fetchzip
4 , mkDerivation
5 , stdenv
6 , Cocoa
7 , CoreAudio
8 , CoreFoundation
9 , MediaPlayer
10 , SDL2
11 , cmake
12 , libGL
13 , libX11
14 , libXrandr
15 , libvdpau
16 , mpv
17 , ninja
18 , pkg-config
19 , python3
20 , qtbase
21 , qtwayland
22 , qtwebchannel
23 , qtwebengine
24 , qtx11extras
25 , jellyfin-web
26 , withDbus ? stdenv.isLinux, dbus
29 mkDerivation rec {
30   pname = "jellyfin-media-player";
31   version = "1.9.1";
33   src = fetchFromGitHub {
34     owner = "jellyfin";
35     repo = "jellyfin-media-player";
36     rev = "v${version}";
37     sha256 = "sha256-97/9UYXOsg8v7QoRqo5rh0UGhjjS85K9OvUwtlG249c=";
38   };
40   patches = [
41     # fix the location of the jellyfin-web path
42     ./fix-web-path.patch
43     # disable update notifications since the end user can't simply download the release artifacts to update
44     ./disable-update-notifications.patch
45   ];
47   buildInputs = [
48     SDL2
49     libGL
50     libX11
51     libXrandr
52     libvdpau
53     mpv
54     qtbase
55     qtwebchannel
56     qtwebengine
57     qtx11extras
58   ] ++ lib.optionals stdenv.isLinux [
59     qtwayland
60   ] ++ lib.optionals stdenv.isDarwin [
61     Cocoa
62     CoreAudio
63     CoreFoundation
64     MediaPlayer
65   ];
67   nativeBuildInputs = [
68     cmake
69     ninja
70     pkg-config
71     python3
72   ];
74   cmakeFlags = [
75     "-DQTROOT=${qtbase}"
76     "-GNinja"
77   ] ++ lib.optionals (!withDbus) [
78     "-DLINUX_X11POWER=ON"
79   ];
81   preConfigure = ''
82     # link the jellyfin-web files to be copied by cmake (see fix-web-path.patch)
83     ln -s ${jellyfin-web}/share/jellyfin-web .
84   '';
86   postInstall = lib.optionalString stdenv.isDarwin ''
87     mkdir -p $out/bin $out/Applications
88     mv "$out/Jellyfin Media Player.app" $out/Applications
90     # move web-client resources
91     mv $out/Resources/* "$out/Applications/Jellyfin Media Player.app/Contents/Resources/"
92     rmdir $out/Resources
94     ln -s "$out/Applications/Jellyfin Media Player.app/Contents/MacOS/Jellyfin Media Player" $out/bin/jellyfinmediaplayer
95   '';
97   meta = with lib; {
98     homepage = "https://github.com/jellyfin/jellyfin-media-player";
99     description = "Jellyfin Desktop Client based on Plex Media Player";
100     license = with licenses; [ gpl2Only mit ];
101     platforms = [ "aarch64-linux" "x86_64-linux" "x86_64-darwin" ];
102     maintainers = with maintainers; [ jojosch kranzes ];
103     mainProgram = "jellyfinmediaplayer";
104   };