chromium,chromedriver: 129.0.6668.91 -> 129.0.6668.100
[NixPkgs.git] / pkgs / by-name / pl / plex-desktop / package.nix
blobba793768d6346245be607b6469c45a58e5c94fc4
2   alsa-lib,
3   autoPatchelfHook,
4   buildFHSEnv,
5   dbus,
6   elfutils,
7   expat,
8   extraEnv ? { },
9   fetchFromGitLab,
10   fetchurl,
11   glib,
12   glibc,
13   lib,
14   libGL,
15   libapparmor,
16   libbsd,
17   libedit,
18   libffi_3_3,
19   libgcrypt,
20   libglvnd,
21   makeShellWrapper,
22   sqlite,
23   squashfsTools,
24   stdenv,
25   tcp_wrappers,
26   udev,
27   waylandpp,
28   writeShellScript,
29   xkeyboard_config,
30   xorg,
31   xz,
32   zstd,
34 let
35   pname = "plex-desktop";
36   version = "1.101.0";
37   rev = "75";
38   meta = {
39     homepage = "https://plex.tv/";
40     description = "Streaming media player for Plex";
41     longDescription = ''
42       Plex for Linux is your client for playback on the Linux
43       desktop. It features the point and click interface you see in your browser
44       but uses a more powerful playback engine as well as
45       some other advance features.
46     '';
47     maintainers = with lib.maintainers; [ detroyejr ];
48     license = lib.licenses.unfree;
49     platforms = [ "x86_64-linux" ];
50     mainProgram = "plex-desktop";
51   };
53   # The latest unstable version isn't compatible with libraries that ship in the snap.
54   libglvnd-1_4_0 = libglvnd.overrideAttrs {
55     src = fetchFromGitLab {
56       domain = "gitlab.freedesktop.org";
57       owner = "glvnd";
58       repo = "libglvnd";
59       rev = "v1.4.0";
60       sha256 = "sha256-Y6JHRygXcZtnrdnqi1Lzyvh/635gwZWnMeW9aRCpxxs";
61     };
62   };
63   plex-desktop = stdenv.mkDerivation {
64     inherit pname version meta;
66     src = fetchurl {
67       url = "https://api.snapcraft.io/api/v1/snaps/download/qc6MFRM433ZhI1XjVzErdHivhSOhlpf0_${rev}.snap";
68       hash = "sha512-3ofO4a8HDWeUfjsv+4A5bC0jlQwxIew1CnL39Oa0bjnqShwRQjMW1vSHOjsJ1AHMkbp3h5W/2tFRxPL2C/Heqg==";
69     };
71     nativeBuildInputs = [ squashfsTools ];
73     buildInputs = [
74       alsa-lib
75       autoPatchelfHook
76       dbus
77       elfutils
78       expat
79       glib
80       glibc
81       libGL
82       libapparmor
83       libbsd
84       libedit
85       libffi_3_3
86       libgcrypt
87       makeShellWrapper
88       sqlite
89       squashfsTools
90       stdenv.cc.cc
91       tcp_wrappers
92       udev
93       waylandpp
94       xorg.libXinerama
95       xz
96       zstd
97     ];
99     unpackPhase = ''
100       runHook preUnpack
101       unsquashfs "$src"
102       cd squashfs-root
103       runHook postUnpack
104     '';
106     dontWrapQtApps = true;
108     installPhase = ''
109       runHook preInstall
111       cp -r . $out
113       ln -s ${libedit}/lib/libedit.so.0 $out/lib/libedit.so.2
114       rm $out/usr/lib/x86_64-linux-gnu/libasound.so.2
115       ln -s ${alsa-lib}/lib/libasound.so.2 $out/usr/lib/x86_64-linux-gnu/libasound.so.2
116       rm $out/usr/lib/x86_64-linux-gnu/libasound.so.2.0.0
117       ln -s ${alsa-lib}/lib/libasound.so.2.0.0 $out/usr/lib/x86_64-linux-gnu/libasound.so.2.0.0
119       runHook postInstall
120     '';
121   };
123 buildFHSEnv {
124   inherit pname version meta;
125   targetPkgs = pkgs: [ xkeyboard_config ];
127   extraInstallCommands = ''
128     mkdir -p $out/share/applications $out/share/icons/hicolor/scalable/apps
129     install -m 444 -D ${plex-desktop}/meta/gui/plex-desktop.desktop $out/share/applications/plex-desktop.desktop
130     substituteInPlace $out/share/applications/plex-desktop.desktop \
131       --replace-fail \
132       'Icon=''${SNAP}/meta/gui/icon.png' \
133       'Icon=${plex-desktop}/meta/gui/icon.png' \
134       --replace-fail \
135       'Exec=plex-desktop' \
136       'Exec=plex-desktop-${version}'
137   '';
139   runScript = writeShellScript "plex-desktop.sh" ''
140     # Widevine won't download unless this directory exists.
141     mkdir -p $HOME/.cache/plex/
142     PLEX_USR_PATH=${lib.makeSearchPath "usr/lib/x86_64-linux-gnu" [ plex-desktop ]}
144     set -o allexport
145     LD_LIBRARY_PATH=${
146       lib.makeLibraryPath [
147         plex-desktop
148         libglvnd-1_4_0
149       ]
150     }:$PLEX_USR_PATH
151     LIBGL_DRIVERS_PATH=$PLEX_USR_PATH/dri
152     ${lib.toShellVars extraEnv}
153     exec ${plex-desktop}/Plex.sh
154   '';
155   passthru.updateScript = ./update.sh;