evcc: 0.131.4 -> 0.131.5
[NixPkgs.git] / pkgs / by-name / tr / transmission_3 / package.nix
bloba97e2cbb3e7f8b2cb9513e02efeabd4bd4ea3c5a
1 { stdenv
2 , lib
3 , fetchFromGitHub
4 , cmake
5 , pkg-config
6 , openssl
7 , curl
8 , libevent
9 , inotify-tools
10 , systemd
11 , zlib
12 , pcre
13 , libb64
14 , libutp
15 , miniupnpc
16 , dht
17 , libnatpmp
18 , libiconv
19   # Build options
20 , enableGTK3 ? false
21 , gtk3
22 , xorg
23 , wrapGAppsHook3
24 , enableQt ? false
25 , qt5
26 , nixosTests
27 , enableSystemd ? lib.meta.availableOn stdenv.hostPlatform systemd
28 , enableDaemon ? true
29 , enableCli ? true
30 , installLib ? false
31 , apparmorRulesFromClosure
34 stdenv.mkDerivation (finalAttrs: {
35   pname = "transmission";
36   version = "3.00";
38   src = fetchFromGitHub {
39     owner = "transmission";
40     repo = "transmission";
41     rev = finalAttrs.version;
42     hash = "sha256-n4iEDt9AstDZPZXN47p13brNLbNWS3BTB+A4UuoEjzE=";
43     fetchSubmodules = true;
44   };
46   patches = [
47     # fix build with openssl 3.0
48     ./transmission-3.00-openssl-3.patch
49     # fix build with miniupnpc 2.2.8
50     ./transmission-3.00-miniupnpc-2.2.8.patch
51   ];
53   outputs = [ "out" "apparmor" ];
55   cmakeFlags =
56     let
57       mkFlag = opt: if opt then "ON" else "OFF";
58     in
59     [
60       "-DENABLE_MAC=OFF" # requires xcodebuild
61       "-DENABLE_GTK=${mkFlag enableGTK3}"
62       "-DENABLE_QT=${mkFlag enableQt}"
63       "-DENABLE_DAEMON=${mkFlag enableDaemon}"
64       "-DENABLE_CLI=${mkFlag enableCli}"
65       "-DINSTALL_LIB=${mkFlag installLib}"
66     ];
68   nativeBuildInputs = [
69     pkg-config
70     cmake
71   ]
72   ++ lib.optionals enableGTK3 [ wrapGAppsHook3 ]
73   ++ lib.optionals enableQt [ qt5.wrapQtAppsHook ]
74   ;
76   buildInputs = [
77     openssl
78     curl
79     libevent
80     zlib
81     pcre
82     libb64
83     libutp
84     miniupnpc
85     dht
86     libnatpmp
87   ]
88   ++ lib.optionals enableQt [ qt5.qttools qt5.qtbase ]
89   ++ lib.optionals enableGTK3 [ gtk3 xorg.libpthreadstubs ]
90   ++ lib.optionals enableSystemd [ systemd ]
91   ++ lib.optionals stdenv.hostPlatform.isLinux [ inotify-tools ]
92   ++ lib.optionals stdenv.hostPlatform.isDarwin [ libiconv ];
94   postInstall = ''
95     mkdir $apparmor
96     cat >$apparmor/bin.transmission-daemon <<EOF
97     include <tunables/global>
98     $out/bin/transmission-daemon {
99       include <abstractions/base>
100       include <abstractions/nameservice>
101       include <abstractions/ssl_certs>
102       include "${apparmorRulesFromClosure { name = "transmission-daemon"; } ([
103         curl libevent openssl pcre zlib libnatpmp miniupnpc
104       ] ++ lib.optionals enableSystemd [ systemd ]
105         ++ lib.optionals stdenv.hostPlatform.isLinux [ inotify-tools ]
106       )}"
107       r @{PROC}/sys/kernel/random/uuid,
108       r @{PROC}/sys/vm/overcommit_memory,
109       r @{PROC}/@{pid}/environ,
110       r @{PROC}/@{pid}/mounts,
111       rwk /tmp/tr_session_id_*,
113       r $out/share/transmission/web/**,
115       include <local/bin.transmission-daemon>
116     }
117     EOF
118   '';
120   passthru.tests = {
121     apparmor = nixosTests.transmission_3; # starts the service with apparmor enabled
122     smoke-test = nixosTests.bittorrent;
123   };
125   meta = {
126     description = "Fast, easy and free BitTorrent client (deprecated version 3)";
127     mainProgram = if enableQt then "transmission-qt" else if enableGTK3 then "transmission-gtk" else "transmission-cli";
128     longDescription = ''
129       Transmission is a BitTorrent client which features a simple interface
130       on top of a cross-platform back-end.
131       Feature spotlight:
132         * Uses fewer resources than other clients
133         * Native Mac, GTK and Qt GUI clients
134         * Daemon ideal for servers, embedded systems, and headless use
135         * All these can be remote controlled by Web and Terminal clients
136         * Bluetack (PeerGuardian) blocklists with automatic updates
137         * Full encryption, DHT, and PEX support
138     '';
139     homepage = "http://www.transmissionbt.com/";
140     license = lib.licenses.gpl2Plus; # parts are under MIT
141     maintainers = with lib.maintainers; [ astsmtl ];
142     platforms = lib.platforms.unix;
143   };