nixpkgs/pkgs/applications/networking/p2p/tribler/default.nix
2021-01-16 17:58:11 +07:00

90 lines
2.6 KiB
Nix

{ stdenv, fetchurl, pkgs, python3Packages, makeWrapper
, enablePlayer ? true, libvlc ? null, qt5, lib }:
stdenv.mkDerivation rec {
pname = "tribler";
version = "7.4.4";
src = fetchurl {
url = "https://github.com/Tribler/tribler/releases/download/v${version}/Tribler-v${version}.tar.xz";
sha256 = "0hxiyf1k07ngym2p8r1b5mcx1y2crkyz43gi9sgvsvsyijyaff3p";
};
nativeBuildInputs = [
python3Packages.wrapPython
makeWrapper
];
buildInputs = [
python3Packages.python
];
pythonPath = with python3Packages; [
libtorrent-rasterbar
twisted
netifaces
pycrypto
pyasn1
requests
m2crypto
pyqt5
chardet
cherrypy
cryptography
libnacl
configobj
decorator
feedparser
service-identity
psutil
pillow
networkx
pony
lz4
pyqtgraph
# there is a BTC feature, but it requires some unclear version of
# bitcoinlib, so this doesn't work right now.
# bitcoinlib
];
postPatch = ''
${lib.optionalString enablePlayer ''
substituteInPlace "./TriblerGUI/vlc.py" --replace "ctypes.CDLL(p)" "ctypes.CDLL('${libvlc}/lib/libvlc.so')"
substituteInPlace "./TriblerGUI/widgets/videoplayerpage.py" \
--replace "if vlc and vlc.plugin_path" "if vlc" \
--replace "os.environ['VLC_PLUGIN_PATH'] = vlc.plugin_path" "os.environ['VLC_PLUGIN_PATH'] = '${libvlc}/lib/vlc/plugins'"
''}
'';
installPhase = ''
mkdir -pv $out
# Nasty hack; call wrapPythonPrograms to set program_PYTHONPATH.
wrapPythonPrograms
cp -prvd ./* $out/
makeWrapper ${python3Packages.python}/bin/python $out/bin/tribler \
--set QT_QPA_PLATFORM_PLUGIN_PATH ${qt5.qtbase.bin}/lib/qt-*/plugins/platforms \
--set _TRIBLERPATH $out \
--set PYTHONPATH $out:$program_PYTHONPATH \
--set NO_AT_BRIDGE 1 \
--run 'cd $_TRIBLERPATH' \
--add-flags "-O $out/run_tribler.py" \
${lib.optionalString enablePlayer ''
--prefix LD_LIBRARY_PATH : ${libvlc}/lib
''}
mkdir -p $out/share/applications $out/share/icons $out/share/man/man1
cp $out/Tribler/Main/Build/Ubuntu/tribler.desktop $out/share/applications/tribler.desktop
cp $out/Tribler/Main/Build/Ubuntu/tribler_big.xpm $out/share/icons/tribler.xpm
cp $out/Tribler/Main/Build/Ubuntu/tribler.1 $out/share/man/man1/tribler.1
'';
meta = with lib; {
maintainers = with maintainers; [ xvapx ];
homepage = "https://www.tribler.org/";
description = "A completely decentralised P2P filesharing client based on the Bittorrent protocol";
license = licenses.lgpl21;
platforms = platforms.linux;
};
}