| 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 | (define-module (gnu packages bittorrent)
|
| 44 | #:use-module (gnu packages autotools)
|
| 45 | #:use-module (gnu packages bash)
|
| 46 | #:use-module (gnu packages boost)
|
| 47 | #:use-module (gnu packages check)
|
| 48 | #:use-module (gnu packages cmake)
|
| 49 | #:use-module (gnu packages compression)
|
| 50 | #:use-module (gnu packages cpp)
|
| 51 | #:use-module (gnu packages crypto)
|
| 52 | #:use-module (gnu packages curl)
|
| 53 | #:use-module (gnu packages cyrus-sasl)
|
| 54 | #:use-module (gnu packages dns)
|
| 55 | #:use-module (gnu packages freedesktop)
|
| 56 | #:use-module (gnu packages gettext)
|
| 57 | #:use-module (gnu packages glib)
|
| 58 | #:use-module (gnu packages gnome)
|
| 59 | #:use-module (gnu packages gnupg)
|
| 60 | #:use-module (gnu packages gstreamer)
|
| 61 | #:use-module (gnu packages gtk)
|
| 62 | #:use-module (gnu packages libevent)
|
| 63 | #:use-module (gnu packages multiprecision)
|
| 64 | #:use-module (gnu packages ncurses)
|
| 65 | #:use-module (gnu packages nettle)
|
| 66 | #:use-module (gnu packages networking)
|
| 67 | #:use-module (gnu packages nss)
|
| 68 | #:use-module (gnu packages perl)
|
| 69 | #:use-module (gnu packages pkg-config)
|
| 70 | #:use-module (gnu packages pretty-print)
|
| 71 | #:use-module (gnu packages python)
|
| 72 | #:use-module (gnu packages python-build)
|
| 73 | #:use-module (gnu packages python-check)
|
| 74 | #:use-module (gnu packages python-crypto)
|
| 75 | #:use-module (gnu packages python-web)
|
| 76 | #:use-module (gnu packages python-xyz)
|
| 77 | #:use-module (gnu packages qt)
|
| 78 | #:use-module (gnu packages serialization)
|
| 79 | #:use-module (gnu packages sqlite)
|
| 80 | #:use-module (gnu packages ssh)
|
| 81 | #:use-module (gnu packages tls)
|
| 82 | #:use-module (gnu packages upnp)
|
| 83 | #:use-module (gnu packages version-control)
|
| 84 | #:use-module (gnu packages web)
|
| 85 | #:use-module (gnu packages xml)
|
| 86 | #:use-module (gnu packages xorg)
|
| 87 | #:use-module (gnu packages)
|
| 88 | #:use-module (guix build-system cmake)
|
| 89 | #:use-module (guix build-system glib-or-gtk)
|
| 90 | #:use-module (guix build-system gnu)
|
| 91 | #:use-module (guix build-system meson)
|
| 92 | #:use-module (guix build-system pyproject)
|
| 93 | #:use-module (guix build-system qt)
|
| 94 | #:use-module (guix download)
|
| 95 | #:use-module (guix gexp)
|
| 96 | #:use-module (guix git-download)
|
| 97 | #:use-module ((guix licenses) #:prefix license:)
|
| 98 | #:use-module (guix packages)
|
| 99 | #:use-module ((guix search-paths) #:select ($SSL_CERT_DIR $SSL_CERT_FILE))
|
| 100 | #:use-module (guix utils))
|
| 101 |
|
| 102 | (define-public transmission
|
| 103 | (package
|
| 104 | (name "transmission")
|
| 105 | (version "4.1.3")
|
| 106 | (source (origin
|
| 107 | (method git-fetch)
|
| 108 | (uri (git-reference
|
| 109 | (url "https://github.com/transmission/transmission")
|
| 110 | (commit version)
|
| 111 | |
| 112 | |
| 113 | (recursive? #t)))
|
| 114 | (file-name (git-file-name name version))
|
| 115 | (sha256
|
| 116 | (base32
|
| 117 | "0h90lpmhj30xj5fbmhxrsnw2rd3cph3ls1rcwhr4vmpyrs0kszp3"))
|
| 118 | (modules '((guix build utils)))
|
| 119 | (snippet
|
| 120 | #~(begin
|
| 121 | (for-each
|
| 122 | (lambda (x)
|
| 123 | (delete-file-recursively (string-append "third-party/" x)))
|
| 124 | '("fast_float"
|
| 125 | "fmt"
|
| 126 | "libdeflate"
|
| 127 | "libevent"
|
| 128 | "libnatpmp"
|
| 129 | "libpsl"
|
| 130 | "miniupnp"))
|
| 131 | (for-each
|
| 132 | (lambda (x)
|
| 133 | (delete-file (string-append "cmake/" x)))
|
| 134 | '("FindFmt.cmake" "FindFastFloat.cmake"))))))
|
| 135 | (build-system cmake-build-system)
|
| 136 | (outputs '("out" |
| 137 | "gui")) |
| 138 | (arguments
|
| 139 | (list
|
| 140 | #:imported-modules `((guix build glib-or-gtk-build-system)
|
| 141 | ,@%cmake-build-system-modules)
|
| 142 | #:modules '(((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:)
|
| 143 | (guix build cmake-build-system)
|
| 144 | (guix build utils))
|
| 145 | #:phases
|
| 146 | #~(modify-phases %standard-phases
|
| 147 | (replace 'check
|
| 148 | (lambda* (#:key tests? parallel-tests? #:allow-other-keys)
|
| 149 | (if tests?
|
| 150 | (invoke "ctest"
|
| 151 | |
| 152 | "-E" "usesBootstrapFile"
|
| 153 | "-j" (if parallel-tests?
|
| 154 | (number->string (parallel-job-count))
|
| 155 | "1"))
|
| 156 | (format #t "test suite not run~%"))))
|
| 157 | (add-after 'install 'move-gui
|
| 158 | (lambda* (#:key outputs #:allow-other-keys)
|
| 159 | (mkdir-p (string-append #$output:gui "/bin"))
|
| 160 | (mkdir-p (string-append #$output:gui "/share/man/man1"))
|
| 161 | (rename-file (string-append #$output "/bin/transmission-gtk")
|
| 162 | (string-append #$output:gui "/bin/transmission-gtk"))
|
| 163 | (for-each
|
| 164 | (lambda (dir)
|
| 165 | (rename-file (string-append #$output "/share/" dir)
|
| 166 | (string-append #$output:gui "/share/" dir)))
|
| 167 | '("applications" "icons" "metainfo"))
|
| 168 | (rename-file
|
| 169 | (string-append #$output "/share/man/man1/transmission-gtk.1")
|
| 170 | (string-append #$output:gui "/share/man/man1/transmission-gtk.1"))))
|
| 171 | (add-after 'move-gui 'glib-or-gtk-wrap
|
| 172 | (lambda* (#:key outputs #:allow-other-keys #:rest args)
|
| 173 | (apply (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap)
|
| 174 | #:glib-or-gtk-wrap-excluded-outputs (list "out")
|
| 175 | args)))
|
| 176 | (add-after 'glib-or-gtk-wrap 'wrap-program
|
| 177 | (lambda* (#:key inputs outputs #:allow-other-keys)
|
| 178 | (glib-or-gtk:generate-gdk-pixbuf-loaders-cache
|
| 179 | (map cdr inputs) (list (assoc-ref outputs "gui")))
|
| 180 | (wrap-program (string-append #$output:gui "/bin/transmission-gtk")
|
| 181 | |
| 182 | |
| 183 | `("GDK_PIXBUF_MODULE_FILE" =
|
| 184 | (,(getenv "GDK_PIXBUF_MODULE_FILE")))))))))
|
| 185 | (inputs (list bash-minimal
|
| 186 | curl
|
| 187 | fast-float
|
| 188 | fmt-12
|
| 189 | (list glib "bin")
|
| 190 | gtkmm
|
| 191 | libappindicator
|
| 192 | libdeflate
|
| 193 | libevent
|
| 194 | libnatpmp
|
| 195 | libpsl
|
| 196 | miniupnpc
|
| 197 | openssl
|
| 198 | python
|
| 199 | zlib))
|
| 200 | (native-inputs
|
| 201 | (list intltool pkg-config))
|
| 202 | (home-page "https://transmissionbt.com/")
|
| 203 | (synopsis "BitTorrent client")
|
| 204 | (description
|
| 205 | "Transmission is a BitTorrent client that comes with graphical,
|
| 206 | textual, and Web user interfaces. Transmission also has a daemon for
|
| 207 | unattended operations. It supports local peer discovery, full encryption,
|
| 208 | DHT, µTP, PEX and Magnet Links.")
|
| 209 |
|
| 210 | |
| 211 | |
| 212 | |
| 213 | |
| 214 | |
| 215 | |
| 216 | |
| 217 | |
| 218 | (license (list license:gpl2 license:gpl3))))
|
| 219 |
|
| 220 | (define-public transmission-remote-gtk
|
| 221 | (package
|
| 222 | (name "transmission-remote-gtk")
|
| 223 | (version "1.7.0")
|
| 224 | (source
|
| 225 | (origin
|
| 226 | (method git-fetch)
|
| 227 | (uri
|
| 228 | (git-reference
|
| 229 | (url
|
| 230 | "https://github.com/transmission-remote-gtk/transmission-remote-gtk")
|
| 231 | (commit version)))
|
| 232 | (file-name (git-file-name name version))
|
| 233 | (sha256
|
| 234 | (base32 "19m0jksx4klf5h9b7ici2dsdkbsrj24nj4y2iysrl5zc3sh3kii3"))))
|
| 235 | (build-system meson-build-system)
|
| 236 | (native-inputs (list `(,glib "bin") |
| 237 | gettext-minimal
|
| 238 | gsettings-desktop-schemas
|
| 239 | perl |
| 240 | pkg-config))
|
| 241 | (inputs (list gtk+ json-glib libappindicator libsoup))
|
| 242 | (arguments (list #:tests? #f |
| 243 | #:glib-or-gtk? #t))
|
| 244 | (synopsis "Gtk frontend to the Transmission daemon")
|
| 245 | (description "transmission-remote-gtk is a GTK client for remote management
|
| 246 | of the Transmission BitTorrent client, using its HTTP RPC protocol.")
|
| 247 | (home-page "https://github.com/transmission-remote-gtk/transmission-remote-gtk")
|
| 248 | (license license:gpl2+)))
|
| 249 |
|
| 250 | (define-public stig
|
| 251 | (package
|
| 252 | (name "stig")
|
| 253 | (version "0.14.2a0")
|
| 254 | (source
|
| 255 | (origin
|
| 256 | (method git-fetch)
|
| 257 | (uri (git-reference
|
| 258 | (url "https://github.com/rndusr/stig")
|
| 259 | (commit (string-append "v" version))))
|
| 260 | (file-name (git-file-name name version))
|
| 261 | (sha256
|
| 262 | (base32 "0gwq5ikwqc4h3r3yndpyqzpmjvxlkpb2ibif32kh3f92q5xxnzl3"))))
|
| 263 | (build-system pyproject-build-system)
|
| 264 | (arguments
|
| 265 | (list
|
| 266 | |
| 267 | #:tests? #f
|
| 268 | #:phases
|
| 269 | #~(modify-phases %standard-phases
|
| 270 | (add-after 'unpack 'use-default-asyncio
|
| 271 | |
| 272 | |
| 273 | (lambda _
|
| 274 | (substitute* "stig/client/aiotransmission/rpc.py"
|
| 275 | (("async_timeout") "asyncio"))
|
| 276 | (substitute* "stig/client/utils.py"
|
| 277 | (("from async_timeout import timeout as async_timeout")
|
| 278 | "asyncio")
|
| 279 | (("async_timeout") "asyncio.timeout"))))
|
| 280 | (add-after 'unpack 'relax-requirements
|
| 281 | (lambda _
|
| 282 | (substitute* "setup.py"
|
| 283 | (("urwidtrees==1\\.0\\.3") "urwidtrees>=1.0.3")
|
| 284 | (("aiohttp==3\\.\\*") "aiohttp>=3.13.5")
|
| 285 | |
| 286 | (("'async_timeout',") "")))))))
|
| 287 | (native-inputs
|
| 288 | (list python-setuptools))
|
| 289 | (inputs
|
| 290 | (list python-aiohttp
|
| 291 | python-aiohttp-socks
|
| 292 | python-blinker
|
| 293 | python-natsort
|
| 294 | python-pyxdg
|
| 295 | python-setproctitle
|
| 296 | python-urwid
|
| 297 | python-urwidtrees
|
| 298 | python-wcwidth))
|
| 299 | (synopsis "TUI and CLI for the BitTorrent client Transmission")
|
| 300 | (description
|
| 301 | "Stig is a @acronym{TUI, Text User Interface} and @acronym{CLI, Command
|
| 302 | Line Interface} client for the BitTorrent client Transmission.")
|
| 303 | (home-page "https://github.com/rndusr/stig")
|
| 304 | (license license:gpl3)))
|
| 305 |
|
| 306 | (define-public libtorrent
|
| 307 | (package
|
| 308 | (name "libtorrent")
|
| 309 | (version "0.16.14")
|
| 310 | (source (origin
|
| 311 | (method git-fetch)
|
| 312 | (uri (git-reference
|
| 313 | (url "https://github.com/rakshasa/libtorrent/")
|
| 314 | (commit (string-append "v" version))))
|
| 315 | (file-name (git-file-name name version))
|
| 316 | (sha256
|
| 317 | (base32
|
| 318 | "04jv8vix3izg7mwr07ngagghb0x46cvz8pnja6i0ifhk7c2mhfq7"))))
|
| 319 | (build-system gnu-build-system)
|
| 320 | (inputs (list curl openssl zlib))
|
| 321 | (native-inputs (list autoconf automake cppunit libtool pkg-config))
|
| 322 | (synopsis "BitTorrent library of rtorrent")
|
| 323 | (description
|
| 324 | "LibTorrent is a BitTorrent library used by and developed in parallel
|
| 325 | with the BitTorrent client rtorrent. It is written in C++ with emphasis on
|
| 326 | speed and efficiency.")
|
| 327 | (home-page "https://github.com/rakshasa/libtorrent")
|
| 328 | (license license:gpl2+)))
|
| 329 |
|
| 330 | (define-public rtorrent
|
| 331 | (package
|
| 332 | (name "rtorrent")
|
| 333 | (version "0.16.14")
|
| 334 | (source (origin
|
| 335 | (method git-fetch)
|
| 336 | (uri (git-reference
|
| 337 | (url "https://github.com/rakshasa/rtorrent/")
|
| 338 | (commit (string-append "v" version))))
|
| 339 | (file-name (git-file-name name version))
|
| 340 | (sha256
|
| 341 | (base32
|
| 342 | "0l032679ga5w40285yjh2crglw6qbmp4wzarbqdshb629njs4b2p"))))
|
| 343 | (build-system gnu-build-system)
|
| 344 | (arguments (list #:configure-flags #~(list "--with-xmlrpc-tinyxml2")))
|
| 345 | (inputs
|
| 346 | (list libtorrent
|
| 347 | ncurses
|
| 348 | curl
|
| 349 | cyrus-sasl
|
| 350 | openssl
|
| 351 | tinyxml2
|
| 352 | zlib))
|
| 353 | (native-inputs (list autoconf automake cppunit libtool pkg-config))
|
| 354 | (synopsis "BitTorrent client with ncurses interface")
|
| 355 | (description
|
| 356 | "rTorrent is a BitTorrent client with an ncurses interface. It supports
|
| 357 | full encryption, DHT, PEX, and Magnet Links. It can also be controlled via
|
| 358 | XML-RPC over SCGI.")
|
| 359 | (home-page "https://github.com/rakshasa/rtorrent")
|
| 360 | (license license:gpl2+)))
|
| 361 |
|
| 362 | (define-public tremc
|
| 363 | (package
|
| 364 | (name "tremc")
|
| 365 | (version "0.9.6")
|
| 366 | (source
|
| 367 | (origin
|
| 368 | (method git-fetch)
|
| 369 | (uri (git-reference
|
| 370 | (url "https://github.com/tremc/tremc")
|
| 371 | (commit version)))
|
| 372 | (sha256
|
| 373 | (base32
|
| 374 | "0bvw9lcl256mzqlga7vhbhk3p5faq9681d3yyw7xnczpvv3kbd0r"))))
|
| 375 | (build-system gnu-build-system)
|
| 376 | (arguments
|
| 377 | `(#:tests? #f |
| 378 | #:make-flags
|
| 379 | (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
|
| 380 | #:phases
|
| 381 | (modify-phases %standard-phases
|
| 382 | |
| 383 | (delete 'configure)
|
| 384 | (delete 'build))))
|
| 385 | (inputs
|
| 386 | (list python))
|
| 387 | (synopsis "Console client for the Transmission BitTorrent daemon")
|
| 388 | (description "Tremc is a console client, with a curses interface, for the
|
| 389 | Transmission BitTorrent daemon.")
|
| 390 | (home-page "https://github.com/tremc/tremc")
|
| 391 | (license license:gpl3+)))
|
| 392 |
|
| 393 | (define-public aria2
|
| 394 | (package
|
| 395 | (name "aria2")
|
| 396 | (version "1.37.0")
|
| 397 | (source (origin
|
| 398 | (method git-fetch)
|
| 399 | (uri (git-reference
|
| 400 | (url "https://github.com/aria2/aria2")
|
| 401 | (commit (string-append "release-" version))))
|
| 402 | (sha256
|
| 403 | (base32
|
| 404 | "1yr9yxr7z3bdg51afpzj0i63xl2rdk1prl20qws21y6r1x58vf65"))
|
| 405 | (file-name (git-file-name name version))
|
| 406 | (patches (search-patches "aria2-unbundle-wslay.patch"))
|
| 407 | (snippet
|
| 408 | #~(begin (use-modules (guix build utils))
|
| 409 | (delete-file-recursively "deps")))))
|
| 410 | (build-system gnu-build-system)
|
| 411 | (arguments
|
| 412 | (list
|
| 413 | #:configure-flags
|
| 414 | #~(list "--enable-libaria2"
|
| 415 | (string-append "--with-bashcompletiondir="
|
| 416 | #$output "/etc/bash_completion.d/"))
|
| 417 | #:phases
|
| 418 | #~(modify-phases %standard-phases
|
| 419 | (add-after 'unpack 'update-gettext-version
|
| 420 | (lambda _
|
| 421 | (substitute* "configure.ac"
|
| 422 | (("AM_GNU_GETTEXT_VERSION\\(.*\\)")
|
| 423 | (format #f "AM_GNU_GETTEXT_VERSION([~a])"
|
| 424 | #$(package-version (this-package-native-input
|
| 425 | "gettext-minimal")))))))
|
| 426 | (add-after 'unpack 'delete-socket-tests
|
| 427 | (lambda _
|
| 428 | (substitute* "test/LpdMessageDispatcherTest.cc"
|
| 429 | (("CPPUNIT_TEST_SUITE_REGISTRATION\\(LpdMessageDispatcherTest\\);" text)
|
| 430 | (string-append "// " text)))
|
| 431 | (substitute* "test/LpdMessageReceiverTest.cc"
|
| 432 | (("CPPUNIT_TEST_SUITE_REGISTRATION\\(LpdMessageReceiverTest\\);" text)
|
| 433 | (string-append "// " text))))))))
|
| 434 | (native-inputs
|
| 435 | (list autoconf |
| 436 | automake
|
| 437 | gettext-minimal
|
| 438 | libtool
|
| 439 | cppunit |
| 440 | pkg-config))
|
| 441 | (inputs
|
| 442 | (list c-ares
|
| 443 | gnutls
|
| 444 | gmp
|
| 445 | libssh2
|
| 446 | libxml2
|
| 447 | nettle
|
| 448 | sqlite
|
| 449 | wslay
|
| 450 | zlib))
|
| 451 | (home-page "https://aria2.github.io/")
|
| 452 | (synopsis "Utility for parallel downloading files")
|
| 453 | (description
|
| 454 | "Aria2 is a lightweight, multi-protocol & multi-source command-line
|
| 455 | download utility. It supports HTTP/HTTPS, FTP, SFTP, BitTorrent and Metalink.
|
| 456 | Aria2 can be manipulated via built-in JSON-RPC and XML-RPC interfaces.")
|
| 457 | (license license:gpl2+)))
|
| 458 |
|
| 459 | (define-public uget
|
| 460 | (package
|
| 461 | (name "uget")
|
| 462 | (version "2.2.1")
|
| 463 | (source
|
| 464 | (origin
|
| 465 | (method url-fetch)
|
| 466 | (uri (string-append "mirror://sourceforge/urlget/"
|
| 467 | "uget%20%28stable%29/" version "/uget-"
|
| 468 | version ".tar.gz"))
|
| 469 | (sha256
|
| 470 | (base32 "0dlrjhnm1pg2vwmp7nl2xv1aia5hyirb3021rl46x859k63zap24"))))
|
| 471 | (build-system gnu-build-system)
|
| 472 | (arguments
|
| 473 | `(#:configure-flags '("CFLAGS=-fcommon")))
|
| 474 | (inputs
|
| 475 | (list curl
|
| 476 | gtk+
|
| 477 | glib
|
| 478 | gnutls
|
| 479 | gstreamer
|
| 480 | libgcrypt
|
| 481 | libnotify
|
| 482 | openssl))
|
| 483 | (native-inputs
|
| 484 | (list intltool pkg-config))
|
| 485 | (home-page "https://ugetdm.com/")
|
| 486 | (synopsis "Universal download manager with GTK+ interface")
|
| 487 | (description
|
| 488 | "uGet is portable download manager with GTK+ interface supporting
|
| 489 | HTTP, HTTPS, BitTorrent and Metalink, supporting multi-connection
|
| 490 | downloads, download scheduling, download rate limiting.")
|
| 491 | (license license:lgpl2.1+)))
|
| 492 |
|
| 493 | (define-public mktorrent
|
| 494 | (package
|
| 495 | (name "mktorrent")
|
| 496 | (version "1.1")
|
| 497 | (source (origin
|
| 498 | (method git-fetch)
|
| 499 | (uri (git-reference
|
| 500 | (url "https://github.com/Rudde/mktorrent")
|
| 501 | (commit (string-append "v" version))))
|
| 502 | (file-name (git-file-name name version))
|
| 503 | (sha256
|
| 504 | (base32
|
| 505 | "17pdc5mandl739f8q26n5is8ga56s83aqcrwhlnnplbxwx2inidr"))))
|
| 506 | (build-system gnu-build-system)
|
| 507 | (arguments
|
| 508 | `(#:phases (modify-phases %standard-phases
|
| 509 | (delete 'configure)) |
| 510 | #:make-flags (list (string-append "CC=" ,(cc-for-target))
|
| 511 | (string-append "PREFIX=" (assoc-ref %outputs "out"))
|
| 512 | "NO_HASH_CHECK=1"
|
| 513 | "USE_LARGE_FILES=1"
|
| 514 | "USE_LONG_OPTIONS=1"
|
| 515 | "USE_PTHREADS=1")
|
| 516 | #:tests? #f)) |
| 517 | (home-page "https://github.com/Rudde/mktorrent")
|
| 518 | (synopsis "Utility to create BitTorrent metainfo files")
|
| 519 | (description
|
| 520 | "mktorrent is a simple command-line utility to create BitTorrent
|
| 521 | @dfn{metainfo} files, often known simply as @dfn{torrents}, from both single
|
| 522 | files and whole directories. It can add multiple trackers and web seed URLs,
|
| 523 | and set the @code{private} flag to disallow advertisement through the
|
| 524 | distributed hash table (@dfn{DHT}) and Peer Exchange. Hashing is multi-threaded
|
| 525 | and will take advantage of multiple processor cores where possible.")
|
| 526 | (license (list license:public-domain |
| 527 | license:gpl2+)))) |
| 528 |
|
| 529 | (define-public libtorrent-rasterbar
|
| 530 | (package
|
| 531 | (name "libtorrent-rasterbar")
|
| 532 | (version "2.1.2")
|
| 533 | (source
|
| 534 | |
| 535 | (origin
|
| 536 | (method url-fetch)
|
| 537 | (uri
|
| 538 | (string-append "https://github.com/arvidn/libtorrent/"
|
| 539 | "releases/download/v" version "/"
|
| 540 | "libtorrent-rasterbar-" version ".tar.gz"))
|
| 541 | (sha256
|
| 542 | (base32 "1g2d6g8bwb5jsminpj0pnb6yjk4i3wzpvb3cxr4rw6ypkinm8qik"))))
|
| 543 | (build-system cmake-build-system)
|
| 544 | (arguments
|
| 545 | (list
|
| 546 | #:configure-flags
|
| 547 | #~(list "-Dpython-bindings=ON"
|
| 548 | "-Dbuild_tests=ON"
|
| 549 | |
| 550 | |
| 551 | |
| 552 | "-Dwebtorrent=OFF")
|
| 553 | |
| 554 | #:parallel-tests? #f
|
| 555 | #:phases
|
| 556 | #~(modify-phases %standard-phases
|
| 557 | (replace 'check
|
| 558 | (lambda* (#:key tests? parallel-tests? #:allow-other-keys)
|
| 559 | (let* ((disabled-tests
|
| 560 | |
| 561 | (list "test_rtc"
|
| 562 | "test_tracker"
|
| 563 | "test_upnp"
|
| 564 | "test_webtorrent_transfer"))
|
| 565 | (exclude-regex
|
| 566 | (string-append "^("
|
| 567 | (string-join disabled-tests "|")
|
| 568 | ")$"))
|
| 569 | (jobs (if parallel-tests?
|
| 570 | (number->string (parallel-job-count))
|
| 571 | "1")))
|
| 572 | (when tests?
|
| 573 | (invoke "ctest"
|
| 574 | "-E" exclude-regex
|
| 575 | "-j" jobs
|
| 576 | "--output-on-failure"))))))))
|
| 577 | (inputs (list boost-1.83 openssl))
|
| 578 | (native-inputs
|
| 579 | (list libfaketime
|
| 580 | pkg-config
|
| 581 | python-setuptools
|
| 582 | python-wrapper))
|
| 583 | (home-page "https://www.libtorrent.org/")
|
| 584 | (synopsis "Feature-complete BitTorrent implementation")
|
| 585 | (description
|
| 586 | "libtorrent-rasterbar is a feature-complete C++ BitTorrent implementation
|
| 587 | focusing on efficiency and scalability. It runs on embedded devices as well as
|
| 588 | desktops.")
|
| 589 | (license license:bsd-2)))
|
| 590 |
|
| 591 | (define-public libtorrent-rasterbar-2.0
|
| 592 | (package/inherit libtorrent-rasterbar
|
| 593 | (name "libtorrent-rasterbar")
|
| 594 | (version "2.0.15")
|
| 595 | (source
|
| 596 | (origin
|
| 597 | (method url-fetch)
|
| 598 | (uri
|
| 599 | (string-append "https://github.com/arvidn/libtorrent/"
|
| 600 | "releases/download/v" version "/"
|
| 601 | "libtorrent-rasterbar-" version ".tar.gz"))
|
| 602 | (sha256
|
| 603 | (base32 "00mv4ygv41b71w804m9vfgyx70xgb8mw6r0if94fmdr3k097jbjy"))))
|
| 604 | (arguments
|
| 605 | (substitute-keyword-arguments arguments
|
| 606 | ((#:configure-flags flags)
|
| 607 | #~(list "-Dpython-bindings=ON"
|
| 608 | "-Dbuild_tests=ON"))
|
| 609 | ((#:phases phases)
|
| 610 | #~(modify-phases #$phases
|
| 611 | (replace 'check
|
| 612 | (lambda* (#:key tests? parallel-tests? #:allow-other-keys)
|
| 613 | (let* ((disabled-tests
|
| 614 | (list
|
| 615 | |
| 616 | |
| 617 | "test_upnp"))
|
| 618 | (exclude-regex
|
| 619 | (string-append "^("
|
| 620 | (string-join disabled-tests "|")
|
| 621 | ")$"))
|
| 622 | (jobs (if parallel-tests?
|
| 623 | (number->string (parallel-job-count))
|
| 624 | "1")))
|
| 625 | (when tests?
|
| 626 | (invoke "ctest"
|
| 627 | "-E" exclude-regex
|
| 628 | "-j" jobs
|
| 629 | "--output-on-failure")))))))))))
|
| 630 |
|
| 631 | (define-public qbittorrent
|
| 632 | (package
|
| 633 | (name "qbittorrent")
|
| 634 | (version "5.2.3")
|
| 635 | (source
|
| 636 | (origin
|
| 637 | (method git-fetch)
|
| 638 | (uri (git-reference
|
| 639 | (url "https://github.com/qbittorrent/qBittorrent")
|
| 640 | (commit (string-append "release-" version))))
|
| 641 | (file-name (git-file-name name version))
|
| 642 | (sha256
|
| 643 | (base32 "01hid15dzbw3gcha7n0sj1rc8l1pviycdjmqnplfk8yml6l2g9ib"))))
|
| 644 | (build-system qt-build-system)
|
| 645 | (arguments
|
| 646 | (list
|
| 647 | #:qtbase qtbase
|
| 648 | #:configure-flags
|
| 649 | #~(list "-DTESTING=ON")
|
| 650 | #:phases
|
| 651 | #~(modify-phases %standard-phases
|
| 652 | (replace 'check
|
| 653 | (lambda* (#:rest args)
|
| 654 | |
| 655 | (with-directory-excursion "test"
|
| 656 | (apply (assoc-ref %standard-phases 'check) args)))))))
|
| 657 | (native-inputs
|
| 658 | (list qttools))
|
| 659 | (inputs
|
| 660 | (list boost
|
| 661 | libtorrent-rasterbar-2.0
|
| 662 | openssl
|
| 663 | python-wrapper
|
| 664 | qtsvg
|
| 665 | zlib))
|
| 666 | (home-page "https://www.qbittorrent.org/")
|
| 667 | (synopsis "Graphical BitTorrent client")
|
| 668 | (description
|
| 669 | "qBittorrent is a BitTorrent client programmed in C++/Qt that uses
|
| 670 | libtorrent (sometimes called libtorrent-rasterbar) by Arvid Norberg.
|
| 671 |
|
| 672 | It aims to be a good alternative to all other BitTorrent clients out there.
|
| 673 | qBittorrent is fast, stable and provides unicode support as well as many
|
| 674 | features.")
|
| 675 | (license license:gpl2+)))
|
| 676 |
|
| 677 | (define-public qbittorrent-no-x
|
| 678 | (let ((base qbittorrent))
|
| 679 | (package
|
| 680 | (inherit base)
|
| 681 | (name "qbittorrent-no-x")
|
| 682 | (arguments
|
| 683 | (substitute-keyword-arguments arguments
|
| 684 | ((#:configure-flags configure-flags)
|
| 685 | #~(cons "-DGUI=OFF" #$configure-flags))))
|
| 686 | (inputs
|
| 687 | (modify-inputs inputs
|
| 688 | (delete "qtsvg"))))))
|
| 689 |
|
| 690 | (define-public qbittorrent-enhanced
|
| 691 | (package
|
| 692 | (inherit qbittorrent)
|
| 693 | (name "qbittorrent-enhanced")
|
| 694 | (version "5.2.3.10")
|
| 695 | (source
|
| 696 | (origin
|
| 697 | (method git-fetch)
|
| 698 | (uri (git-reference
|
| 699 | (url "https://github.com/c0re100/qBittorrent-Enhanced-Edition")
|
| 700 | (commit (string-append "release-" version))))
|
| 701 | (file-name (git-file-name name version))
|
| 702 | (sha256
|
| 703 | (base32 "1lakv5wah6n3qw6pyy7vm2xkjdlm81ssi4k7h744r40yhj4jdc3y"))))
|
| 704 | (home-page "https://github.com/c0re100/qBittorrent-Enhanced-Edition")
|
| 705 | (description
|
| 706 | "qBittorrent Enhanced is a bittorrent client based on qBittorrent with
|
| 707 | the following features:
|
| 708 |
|
| 709 | @itemize
|
| 710 | @item Auto Ban Xunlei, QQ, Baidu, Xfplay, DLBT and Offline downloader
|
| 711 | @item Auto Ban Unknown Peer from China Option (Default: OFF)
|
| 712 | @item Auto Update Public Trackers List (Default: OFF)
|
| 713 | @item Auto Ban BitTorrent Media Player Peer Option (Default: OFF)
|
| 714 | @item Peer whitelist/blacklist
|
| 715 | @end itemize")))
|
| 716 |
|
| 717 | (define-public qbittorrent-enhanced-no-x
|
| 718 | (package
|
| 719 | (inherit qbittorrent-enhanced)
|
| 720 | (name "qbittorrent-enhanced-no-x")
|
| 721 | (arguments (package-arguments qbittorrent-no-x))
|
| 722 | (inputs (package-inputs qbittorrent-no-x))))
|
| 723 |
|
| 724 | (define-public deluge
|
| 725 | (package
|
| 726 | (name "deluge")
|
| 727 | (version "2.2.0")
|
| 728 | (source
|
| 729 | (origin
|
| 730 | (method url-fetch)
|
| 731 | (uri (string-append
|
| 732 | "https://ftp.osuosl.org/pub/deluge/source/"
|
| 733 | (version-major+minor version) "/deluge-" version ".tar.xz"))
|
| 734 | (sha256
|
| 735 | (base32
|
| 736 | "1kbac1qjbddcib0bldqaf0dcq5mqi9i2jv2fd4fayam4bcmjgfmr"))))
|
| 737 | (build-system pyproject-build-system)
|
| 738 | (inputs (list bash-minimal
|
| 739 | gtk+
|
| 740 | libtorrent-rasterbar-2.0
|
| 741 | nss-certs
|
| 742 | python-pycairo
|
| 743 | python-chardet
|
| 744 | python-dbus-1.2
|
| 745 | python-mako
|
| 746 | python-pygobject-3.50
|
| 747 | python-pillow
|
| 748 | python-pyopenssl
|
| 749 | python-pyxdg
|
| 750 | python-rencode
|
| 751 | python-service-identity
|
| 752 | python-setproctitle
|
| 753 | python-twisted
|
| 754 | python-zope-interface))
|
| 755 | (native-inputs
|
| 756 | (list intltool
|
| 757 | python-pytest
|
| 758 | python-pytest-twisted
|
| 759 | python-setuptools
|
| 760 | python-wheel
|
| 761 | xorg-server-for-tests))
|
| 762 | (native-search-paths
|
| 763 | (list $SSL_CERT_DIR
|
| 764 | $SSL_CERT_FILE))
|
| 765 | (arguments
|
| 766 | (list
|
| 767 | #:test-flags
|
| 768 | #~(list "-m" "not internet and not slow" |
| 769 | "-k" (string-append "not "
|
| 770 | (string-join
|
| 771 | |
| 772 | (list "TestClient"
|
| 773 | "TestJSON"
|
| 774 | "TestJSONCustomUserCase"
|
| 775 | "TestRPCRaiseDelugeErrorJSON"
|
| 776 | "TestConsoleScriptEntryWithDaemon"
|
| 777 | |
| 778 | "TestWebAPI"
|
| 779 | "TestWebServer"
|
| 780 | |
| 781 | "test_is_interface_name"
|
| 782 | "test_is_interface")
|
| 783 | " and not ")))
|
| 784 | #:phases
|
| 785 | #~(modify-phases %standard-phases
|
| 786 | (add-before 'check 'pre-check
|
| 787 | (lambda _
|
| 788 | |
| 789 | (system "Xvfb &")
|
| 790 | (setenv "DISPLAY" ":0")
|
| 791 | (setenv "HOME" "/tmp")))
|
| 792 | (add-before 'wrap 'wrap-deluge
|
| 793 | (lambda _
|
| 794 | (for-each
|
| 795 | (lambda (program)
|
| 796 | (wrap-program program
|
| 797 | `("GI_TYPELIB_PATH" ":" prefix (,(getenv "GI_TYPELIB_PATH")))))
|
| 798 | (map (lambda (name)
|
| 799 | (string-append #$output "/bin/" name))
|
| 800 | (list "deluge" "deluge-gtk"))))))))
|
| 801 | (home-page "https://www.deluge-torrent.org/")
|
| 802 | (synopsis "Fully-featured cross-platform BitTorrent client")
|
| 803 | (description
|
| 804 | "Deluge contains the common features to BitTorrent clients such as
|
| 805 | Protocol Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange
|
| 806 | (PEX), UPnP, NAT-PMP, Proxy support, Web seeds, global and per-torrent
|
| 807 | speed limits. Deluge heavily utilises the libtorrent library. It is
|
| 808 | designed to run as both a normal standalone desktop application and as a
|
| 809 | client-server.")
|
| 810 | (license license:gpl3+)))
|