mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-12-17 03:03:37 +00:00
152 lines
3.7 KiB
Nix
152 lines
3.7 KiB
Nix
{ alsa-lib
|
|
, autoPatchelfHook
|
|
, buildFHSEnv
|
|
, dbus
|
|
, elfutils
|
|
, expat
|
|
, extraEnv ? { }
|
|
, fetchFromGitLab
|
|
, fetchurl
|
|
, glib
|
|
, glibc
|
|
, lib
|
|
, libGL
|
|
, libapparmor
|
|
, libbsd
|
|
, libedit
|
|
, libffi_3_3
|
|
, libgcrypt
|
|
, libglvnd
|
|
, makeShellWrapper
|
|
, sqlite
|
|
, squashfsTools
|
|
, stdenv
|
|
, tcp_wrappers
|
|
, udev
|
|
, waylandpp
|
|
, writeShellScript
|
|
, xkeyboard_config
|
|
, xorg
|
|
, xz
|
|
, zstd
|
|
}:
|
|
let
|
|
pname = "plex-desktop";
|
|
version = "1.96.0";
|
|
rev = "69";
|
|
meta = {
|
|
homepage = "https://plex.tv/";
|
|
description = "Streaming media player for Plex";
|
|
longDescription = ''
|
|
Plex for Linux is your client for playback on the Linux
|
|
desktop. It features the point and click interface you see in your browser
|
|
but uses a more powerful playback engine as well as
|
|
some other advance features.
|
|
'';
|
|
maintainers = with lib.maintainers; [ detroyejr ];
|
|
license = lib.licenses.unfree;
|
|
platforms = [ "x86_64-linux" ];
|
|
mainProgram = "plex-desktop";
|
|
};
|
|
|
|
# The latest unstable version isn't compatible with libraries that ship in the snap.
|
|
libglvnd-1_4_0 = libglvnd.overrideAttrs {
|
|
src = fetchFromGitLab {
|
|
domain = "gitlab.freedesktop.org";
|
|
owner = "glvnd";
|
|
repo = "libglvnd";
|
|
rev = "v1.4.0";
|
|
sha256 = "sha256-Y6JHRygXcZtnrdnqi1Lzyvh/635gwZWnMeW9aRCpxxs";
|
|
};
|
|
};
|
|
plex-desktop = stdenv.mkDerivation {
|
|
inherit pname version meta;
|
|
|
|
src = fetchurl {
|
|
url = "https://api.snapcraft.io/api/v1/snaps/download/qc6MFRM433ZhI1XjVzErdHivhSOhlpf0_${rev}.snap";
|
|
hash = "sha512-rECc8rK1ENAL5mXdabO8ynudCaSzz0yygOyg4gMbCtddgqwSOanP24/oguzPLr3zdRMC3VSf9B3hr2BGQ54tzg==";
|
|
};
|
|
|
|
nativeBuildInputs = [ squashfsTools ];
|
|
|
|
buildInputs = [
|
|
alsa-lib
|
|
autoPatchelfHook
|
|
dbus
|
|
elfutils
|
|
expat
|
|
glib
|
|
glibc
|
|
libGL
|
|
libapparmor
|
|
libbsd
|
|
libedit
|
|
libffi_3_3
|
|
libgcrypt
|
|
makeShellWrapper
|
|
sqlite
|
|
squashfsTools
|
|
stdenv.cc.cc
|
|
tcp_wrappers
|
|
udev
|
|
waylandpp
|
|
xorg.libXinerama
|
|
xz
|
|
zstd
|
|
];
|
|
|
|
unpackPhase = ''
|
|
runHook preUnpack
|
|
unsquashfs "$src"
|
|
cd squashfs-root
|
|
runHook postUnpack
|
|
'';
|
|
|
|
dontWrapQtApps = true;
|
|
|
|
installPhase =
|
|
''
|
|
runHook preInstall
|
|
|
|
cp -r . $out
|
|
|
|
ln -s ${libedit}/lib/libedit.so.0 $out/lib/libedit.so.2
|
|
rm $out/usr/lib/x86_64-linux-gnu/libasound.so.2
|
|
ln -s ${alsa-lib}/lib/libasound.so.2 $out/usr/lib/x86_64-linux-gnu/libasound.so.2
|
|
rm $out/usr/lib/x86_64-linux-gnu/libasound.so.2.0.0
|
|
ln -s ${alsa-lib}/lib/libasound.so.2.0.0 $out/usr/lib/x86_64-linux-gnu/libasound.so.2.0.0
|
|
|
|
runHook postInstall
|
|
'';
|
|
};
|
|
in
|
|
buildFHSEnv {
|
|
name = "${pname}-${version}";
|
|
targetPkgs = pkgs: [ xkeyboard_config ];
|
|
|
|
extraInstallCommands = ''
|
|
mkdir -p $out/share/applications $out/share/icons/hicolor/scalable/apps
|
|
install -m 444 -D ${plex-desktop}/meta/gui/plex-desktop.desktop $out/share/applications/plex-desktop.desktop
|
|
substituteInPlace $out/share/applications/plex-desktop.desktop \
|
|
--replace-fail \
|
|
'Icon=''${SNAP}/meta/gui/icon.png' \
|
|
'Icon=${plex-desktop}/meta/gui/icon.png' \
|
|
--replace-fail \
|
|
'Exec=plex-desktop' \
|
|
'Exec=plex-desktop-${version}'
|
|
'';
|
|
|
|
runScript = writeShellScript "plex-desktop.sh" ''
|
|
# Widevine won't download unless this directory exists.
|
|
mkdir -p $HOME/.cache/plex/
|
|
PLEX_USR_PATH=${lib.makeSearchPath "usr/lib/x86_64-linux-gnu" [ plex-desktop ]}
|
|
|
|
set -o allexport
|
|
LD_LIBRARY_PATH=${lib.makeLibraryPath [ plex-desktop libglvnd-1_4_0 ]}:$PLEX_USR_PATH
|
|
LIBGL_DRIVERS_PATH=$PLEX_USR_PATH/dri
|
|
${lib.toShellVars extraEnv}
|
|
exec ${plex-desktop}/Plex.sh
|
|
'';
|
|
}
|
|
|