blob: 3d30b91cfcc27874ce47307f041062ac970bfe70 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
{
lib,
stdenv,
fetchurl,
fetchPypi,
python311,
makeWrapper,
libtorrent-rasterbar-1_2_x,
qt5,
nix-update-script,
}:
let
# libtorrent-rasterbar-1_2_x requires python311
python3 = python311;
libtorrent = (python3.pkgs.toPythonModule (libtorrent-rasterbar-1_2_x)).python;
in
stdenv.mkDerivation (finalAttrs: {
pname = "tribler";
version = "7.14.0";
src = fetchurl {
url = "https://github.com/Tribler/tribler/releases/download/v${finalAttrs.version}/Tribler-${finalAttrs.version}.tar.xz";
hash = "sha256-fQJOs9P4y71De/+svmD7YZ4+tm/bC3rspm7SbOHlSR4=";
};
nativeBuildInputs = [
python3.pkgs.wrapPython
makeWrapper
# we had a "copy" of this in tribler's makeWrapper
# but it went out of date and broke, so please just use it directly
qt5.wrapQtAppsHook
];
buildInputs = [ python3.pkgs.python ];
pythonPath =
[ libtorrent ]
++ (with python3.pkgs; [
# requirements-core.txt
aiohttp
aiohttp-apispec
anyio
chardet
configobj
cryptography
decorator
faker
libnacl
lz4
marshmallow
netifaces
networkx
pony
psutil
pyasn1
pydantic_1
pyopenssl
pyyaml
sentry-sdk
service-identity
yappi
yarl
bitarray
filelock
(pyipv8.overrideAttrs (p: rec {
version = "2.10.0";
src = fetchPypi {
inherit (p) pname;
inherit version;
hash = "sha256-yxiXBxBiPokequm+vjsHIoG9kQnRnbsOx3mYOd8nmiU=";
};
}))
file-read-backwards
brotli
human-readable
# requirements.txt
pillow
pyqt5
pyqt5-sip
pyqtgraph
pyqtwebengine
]);
installPhase = ''
mkdir -pv $out
# Nasty hack; call wrapPythonPrograms to set program_PYTHONPATH.
wrapPythonPrograms
cp -prvd ./* $out/
makeWrapper ${python3.pkgs.python}/bin/python $out/bin/tribler \
--set _TRIBLERPATH "$out/src" \
--set PYTHONPATH $out/src/tribler-core:$out/src/tribler-common:$out/src/tribler-gui:$program_PYTHONPATH \
--set NO_AT_BRIDGE 1 \
--chdir "$out/src" \
--add-flags "-O $out/src/run_tribler.py"
mkdir -p $out/share/applications $out/share/icons
cp $out/build/debian/tribler/usr/share/applications/org.tribler.Tribler.desktop $out/share/applications/
cp $out/build/debian/tribler/usr/share/pixmaps/tribler_big.xpm $out/share/icons/tribler.xpm
mkdir -p $out/share/copyright/tribler
mv $out/LICENSE $out/share/copyright/tribler
'';
shellHook = ''
wrapPythonPrograms || true
export QT_QPA_PLATFORM_PLUGIN_PATH=$(echo ${qt5.qtbase.bin}/lib/qt-*/plugins/platforms)
export PYTHONPATH=./tribler-core:./tribler-common:./tribler-gui:$program_PYTHONPATH
export QT_PLUGIN_PATH="${qt5.qtsvg.bin}/${qt5.qtbase.qtPluginPrefix}"
'';
passthru.updateScript = nix-update-script { };
meta = {
description = "Decentralised P2P filesharing client based on the Bittorrent protocol";
mainProgram = "tribler";
homepage = "https://www.tribler.org/";
changelog = "https://github.com/Tribler/tribler/releases/tag/v${finalAttrs.version}";
license = lib.licenses.lgpl21Plus;
maintainers = with lib.maintainers; [
xvapx
mkg20001
];
platforms = lib.platforms.linux;
};
})
|