jql: 8.0.0 -> 8.0.2 (#362884)
[NixPkgs.git] / pkgs / applications / video / jellyfin-mpv-shim / default.nix
blobd9965291c2ff481b9d89091d0f2e62d513518830
2   lib,
3   buildPythonApplication,
4   copyDesktopItems,
5   fetchPypi,
6   gobject-introspection,
7   jellyfin-apiclient-python,
8   jinja2,
9   makeDesktopItem,
10   mpv,
11   pillow,
12   pystray,
13   python,
14   python-mpv-jsonipc,
15   pywebview,
16   tkinter,
17   wrapGAppsHook3,
20 buildPythonApplication rec {
21   pname = "jellyfin-mpv-shim";
22   version = "2.8.0";
24   src = fetchPypi {
25     inherit pname version;
26     hash = "sha256-EANaNmvD8hcdGB2aoGemKvA9syS1VvIqGsP1jk0b+lE=";
27   };
29   nativeBuildInputs = [
30     copyDesktopItems
31     wrapGAppsHook3
32     gobject-introspection
33   ];
35   propagatedBuildInputs = [
36     jellyfin-apiclient-python
37     mpv
38     pillow
39     python-mpv-jsonipc
41     # gui dependencies
42     pystray
43     tkinter
45     # display_mirror dependencies
46     jinja2
47     pywebview
48   ];
50   # override $HOME directory:
51   #   error: [Errno 13] Permission denied: '/homeless-shelter'
52   #
53   # remove jellyfin_mpv_shim/win_utils.py:
54   #   ModuleNotFoundError: No module named 'win32gui'
55   preCheck = ''
56     export HOME=$TMPDIR
58     rm jellyfin_mpv_shim/win_utils.py
59   '';
61   postPatch = ''
62     substituteInPlace jellyfin_mpv_shim/conf.py \
63       --replace "check_updates: bool = True" "check_updates: bool = False" \
64       --replace "notify_updates: bool = True" "notify_updates: bool = False"
65     # python-mpv renamed to mpv with 1.0.4
66     substituteInPlace setup.py \
67       --replace "python-mpv" "mpv" \
68       --replace "mpv-jsonipc" "python_mpv_jsonipc"
69   '';
71   # Install all the icons for the desktop item
72   postInstall = ''
73     for s in 16 32 48 64 128 256; do
74       mkdir -p $out/share/icons/hicolor/''${s}x''${s}/apps
75       ln -s $out/${python.sitePackages}/jellyfin_mpv_shim/integration/jellyfin-''${s}.png \
76         $out/share/icons/hicolor/''${s}x''${s}/apps/${pname}.png
77     done
78   '';
80   # needed for pystray to access appindicator using GI
81   preFixup = ''
82     makeWrapperArgs+=("''${gappsWrapperArgs[@]}")
83   '';
84   dontWrapGApps = true;
86   # no tests
87   doCheck = false;
88   pythonImportsCheck = [ "jellyfin_mpv_shim" ];
90   desktopItems = [
91     (makeDesktopItem {
92       name = pname;
93       exec = pname;
94       icon = pname;
95       desktopName = "Jellyfin MPV Shim";
96       categories = [
97         "Video"
98         "AudioVideo"
99         "TV"
100         "Player"
101       ];
102     })
103   ];
105   meta = with lib; {
106     homepage = "https://github.com/jellyfin/jellyfin-mpv-shim";
107     description = "Allows casting of videos to MPV via the jellyfin mobile and web app";
108     longDescription = ''
109       Jellyfin MPV Shim is a client for the Jellyfin media server which plays media in the
110       MPV media player. The application runs in the background and opens MPV only
111       when media is cast to the player. The player supports most file formats, allowing you
112       to prevent needless transcoding of your media files on the server. The player also has
113       advanced features, such as bulk subtitle updates and launching commands on events.
114     '';
115     license = with licenses; [
116       # jellyfin-mpv-shim
117       gpl3Only
118       mit
120       # shader-pack licenses (github:iwalton3/default-shader-pack)
121       # KrigBilateral, SSimDownscaler, NNEDI3
122       gpl3Plus
123       # Anime4K, FSRCNNX
124       mit
125       # Static Grain
126       unlicense
127     ];
128     maintainers = with maintainers; [ jojosch ];
129     mainProgram = "jellyfin-mpv-shim";
130   };