gnu: Update to 0.18.0.
[jackhill/guix/guix.git] / gnu / packages / finance.scm
CommitLineData
20c6b9da 1;;; GNU Guix --- Functional package management for GNU
fe7fa353 2;;; Copyright © 2015, 2016 Andreas Enge <andreas@enge.fr>
136ff9a2 3;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
d3699b31 4;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
cb0866c3 5;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
9475fd92 6;;; Copyright © 2017 Carlo Zancanaro <carlo@zancanaro.id.au>
8514662b 7;;; Copyright © 2017 Theodoros Foradis <theodoros@foradis.org>
14e09e90 8;;; Copyright © 2017 Vasile Dumitrascu <va511e@yahoo.com>
9859800f 9;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
5424f9bc 10;;; Copyright © 2018 Eric Bavier <bavier@member.fsf.org>
3da86c52 11;;; Copyright © 2018 Adriano Peluso <catonano@gmail.com>
8f4d15f1 12;;; Copyright © 2018, 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr>
948e888d 13;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
fc54da1d 14;;; Copyright © 2019 Guillaume Le Vaillant <glv@posteo.net>
20c6b9da
AE
15;;;
16;;; This file is part of GNU Guix.
17;;;
18;;; GNU Guix is free software; you can redistribute it and/or modify it
19;;; under the terms of the GNU General Public License as published by
20;;; the Free Software Foundation; either version 3 of the License, or (at
21;;; your option) any later version.
22;;;
23;;; GNU Guix is distributed in the hope that it will be useful, but
24;;; WITHOUT ANY WARRANTY; without even the implied warranty of
25;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
26;;; GNU General Public License for more details.
27;;;
28;;; You should have received a copy of the GNU General Public License
29;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
30
31(define-module (gnu packages finance)
fa4f95a7
CB
32 #:use-module ((guix licenses) #:prefix license:)
33 #:use-module (guix packages)
34 #:use-module (guix download)
730553d7 35 #:use-module (guix git-download)
fa4f95a7
CB
36 #:use-module (guix build-system gnu)
37 #:use-module (guix build-system cmake)
38 #:use-module (guix build-system python)
5424f9bc 39 #:use-module (gnu packages)
fa4f95a7
CB
40 #:use-module (gnu packages base)
41 #:use-module (gnu packages boost)
42 #:use-module (gnu packages check)
fc54da1d 43 #:use-module (gnu packages compression)
0a551443 44 #:use-module (gnu packages crypto)
fa4f95a7
CB
45 #:use-module (gnu packages databases)
46 #:use-module (gnu packages documentation)
47 #:use-module (gnu packages dns)
48 #:use-module (gnu packages emacs)
255d1bbe 49 #:use-module (gnu packages dbm)
df724c9c 50 #:use-module (gnu packages gnupg)
fa4f95a7
CB
51 #:use-module (gnu packages graphviz)
52 #:use-module (gnu packages groff)
53 #:use-module (gnu packages libedit)
54 #:use-module (gnu packages libevent)
55 #:use-module (gnu packages libunwind)
96f5e2e9 56 #:use-module (gnu packages libusb)
fa4f95a7
CB
57 #:use-module (gnu packages linux)
58 #:use-module (gnu packages multiprecision)
0a551443 59 #:use-module (gnu packages networking)
fa4f95a7
CB
60 #:use-module (gnu packages pkg-config)
61 #:use-module (gnu packages protobuf)
62 #:use-module (gnu packages python)
cc6f4912 63 #:use-module (gnu packages python-crypto)
589e3f4e 64 #:use-module (gnu packages python-web)
44d10b1f 65 #:use-module (gnu packages python-xyz)
fa4f95a7 66 #:use-module (gnu packages qt)
1d0865c1 67 #:use-module (gnu packages readline)
9d0c291e 68 #:use-module (gnu packages sphinx)
fa4f95a7
CB
69 #:use-module (gnu packages texinfo)
70 #:use-module (gnu packages textutils)
71 #:use-module (gnu packages tls)
72 #:use-module (gnu packages upnp)
fc54da1d 73 #:use-module (gnu packages version-control)
fa4f95a7
CB
74 #:use-module (gnu packages web)
75 #:use-module (gnu packages xml)
76 #:use-module (gnu packages gnuzilla))
20c6b9da
AE
77
78(define-public bitcoin-core
79 (package
80 (name "bitcoin-core")
bcfc54ff 81 (version "0.18.0")
20c6b9da
AE
82 (source (origin
83 (method url-fetch)
84 (uri
0a59cc6e 85 (string-append "https://bitcoincore.org/bin/bitcoin-core-"
14ea30e4 86 version "/bitcoin-" version ".tar.gz"))
20c6b9da
AE
87 (sha256
88 (base32
bcfc54ff 89 "0ps0vw9iknz1b1sx74rabd1yhlxvwbd0aimjzn9hlqkvw286hkjy"))))
20c6b9da
AE
90 (build-system gnu-build-system)
91 (native-inputs
92 `(("pkg-config" ,pkg-config)
e49e74f5 93 ("python" ,python) ; for the tests
0193812a
MB
94 ("util-linux" ,util-linux) ; provides the hexdump command for tests
95 ("qttools" ,qttools)))
20c6b9da 96 (inputs
bcfc54ff 97 `(("bdb" ,bdb-4.8) ; Bitcoin Core requires bdb 4.8 for compatibility
20c6b9da 98 ("boost" ,boost)
14ea30e4 99 ("libevent" ,libevent)
20c6b9da
AE
100 ("miniupnpc" ,miniupnpc)
101 ("openssl" ,openssl)
102 ("protobuf" ,protobuf)
0193812a 103 ("qtbase" ,qtbase)))
20c6b9da
AE
104 (arguments
105 `(#:configure-flags
106 (list
20c6b9da
AE
107 ;; Boost is not found unless specified manually.
108 (string-append "--with-boost="
0193812a
MB
109 (assoc-ref %build-inputs "boost"))
110 ;; XXX: The configure script looks up Qt paths by
111 ;; `pkg-config --variable=host_bins Qt5Core`, which fails to pick
112 ;; up executables residing in 'qttools', so we specify them here.
113 (string-append "ac_cv_path_LRELEASE="
114 (assoc-ref %build-inputs "qttools")
115 "/bin/lrelease")
116 (string-append "ac_cv_path_LUPDATE="
117 (assoc-ref %build-inputs "qttools")
118 "/bin/lupdate"))
20c6b9da
AE
119 #:phases
120 (modify-phases %standard-phases
99629e5a
CD
121 (add-before 'configure 'make-qt-deterministic
122 (lambda _
123 ;; Make Qt deterministic.
124 (setenv "QT_RCC_SOURCE_DATE_OVERRIDE" "1")
125 #t))
20c6b9da
AE
126 (add-before 'check 'set-home
127 (lambda _
0e9600cb 128 (setenv "HOME" (getenv "TMPDIR")) ; Tests write to $HOME.
bcfc54ff
CD
129 #t))
130 (add-after 'check 'check-functional
131 (lambda _
132 (invoke "python3" "./test/functional/test_runner.py"
133 (string-append "--jobs=" (number->string (parallel-job-count))))
0e9600cb 134 #t)))))
20c6b9da
AE
135 (home-page "https://bitcoin.org/en/")
136 (synopsis "Bitcoin peer-to-peer client")
137 (description
138 "Bitcoin is a digital currency that enables instant payments to anyone
139anywhere in the world. It uses peer-to-peer technology to operate without
140central authority: managing transactions and issuing money are carried out
141collectively by the network. Bitcoin Core is the reference implementation
142of the bitcoin protocol. This package provides the Bitcoin Core command
143line client and a client based on Qt.")
144 (license license:expat)))
d3699b31
AG
145
146(define-public ledger
147 (package
148 (name "ledger")
9859800f 149 (version "3.1.3")
8b7ac58c
TGR
150 (source
151 (origin
152 (method git-fetch)
153 (uri (git-reference
154 (url "https://github.com/ledger/ledger.git")
155 (commit (string-append "v" version))))
156 (file-name (git-file-name name version))
157 (sha256
9859800f 158 (base32 "0bfnrqrd6wqgsngfpqi30xh6yy86pwl25iwzrqy44q31r0zl4mm3"))))
d3699b31
AG
159 (build-system cmake-build-system)
160 (arguments
f90ed028 161 `(#:configure-flags
d3699b31
AG
162 `("-DBUILD_DOCS:BOOL=ON"
163 "-DBUILD_WEB_DOCS:BOOL=ON"
d3699b31 164 "-DUSE_PYTHON:BOOL=ON"
f90ed028 165 "-DCMAKE_INSTALL_LIBDIR:PATH=lib")
d3699b31
AG
166 #:phases
167 (modify-phases %standard-phases
168 (add-before 'configure 'install-examples
169 (lambda* (#:key outputs #:allow-other-keys)
170 (let ((examples (string-append (assoc-ref outputs "out")
171 "/share/doc/ledger/examples")))
172 (install-file "test/input/sample.dat" examples)
173 (install-file "test/input/demo.ledger" examples))
174 #t))
175 (add-after 'build 'build-doc
1f3c4ba8 176 (lambda _ (invoke "make" "doc")))
d3699b31
AG
177 (add-before 'check 'check-setup
178 ;; One test fails if it can't set the timezone.
179 (lambda* (#:key inputs #:allow-other-keys)
180 (setenv "TZDIR"
181 (string-append (assoc-ref inputs "tzdata")
182 "/share/zoneinfo"))
f90ed028
RW
183 ;; Skip failing test BaselineTest_cmd-org.
184 ;; This is a known upstream issue. See
185 ;; https://github.com/ledger/ledger/issues/550
186 (setenv "ARGS" "-E BaselineTest_cmd-org")
187 #t)))))
d3699b31
AG
188 (inputs
189 `(("boost" ,boost)
190 ("gmp" ,gmp)
191 ("libedit" ,libedit)
192 ("mpfr" ,mpfr)
193 ("python" ,python-2)
194 ("tzdata" ,tzdata)
195 ("utfcpp" ,utfcpp)))
196 (native-inputs
f90ed028 197 `(("groff" ,groff)
d3699b31 198 ("texinfo" ,texinfo)))
b53a0c88 199 (home-page "https://ledger-cli.org/")
d3699b31
AG
200 (synopsis "Command-line double-entry accounting program")
201 (description
202 "Ledger is a powerful, double-entry accounting system that is
203accessed from the UNIX command-line. This may put off some users, since
204there is no flashy UI, but for those who want unparalleled reporting
205access to their data there are few alternatives.
206
207Ledger uses text files for input. It reads the files and generates
208reports; there is no other database or stored state. To use Ledger,
209you create a file of your account names and transactions, run from the
210command line with some options to specify input and requested reports, and
211get output. The output is generally plain text, though you could generate
212a graph or html instead. Ledger is simple in concept, surprisingly rich
213in ability, and easy to use.")
214 ;; There are some extra licenses in files which do not presently get
215 ;; installed when you build this package. Different versions of the GPL
216 ;; are used in the contrib and python subdirectories. The bundled version
217 ;; of utfcpp is under the Boost 1.0 license. Also the file
218 ;; `tools/update_copyright_year` has an Expat license.
219 (license (list license:bsd-3
220 license:asl2.0 ; src/strptime.cc
221 (license:non-copyleft
222 "file://src/wcwidth.cc"
f90ed028 223 "See src/wcwidth.cc in the distribution.")))))
cb0866c3 224
0df201c0
RW
225(define-public emacs-ledger-mode
226 ;; There have been no new releases since 2016.
227 (let ((commit "253a20dc62e137ed0ed8e1dd8614ecba116610ea")
228 (revision "1"))
229 (package
230 (name "emacs-ledger-mode")
231 (version (git-version "3.1.1" revision commit))
232 (source
233 (origin
234 (method git-fetch)
235 (uri (git-reference
236 (url "https://github.com/ledger/ledger-mode.git")
237 (commit commit)))
238 (file-name (git-file-name name version))
239 (sha256
240 (base32 "06wrgkqpgvk17vibrk2qikdlqn8y63jg86marp1wgmram92mb3jk"))))
241 (build-system cmake-build-system)
242 (arguments
243 `(#:modules ((guix build cmake-build-system)
244 (guix build utils)
245 (guix build emacs-utils))
246 #:imported-modules (,@%cmake-build-system-modules
247 (guix build emacs-utils))
248 #:tests? #f ; there are none
249 #:phases
250 (modify-phases %standard-phases
1c0dd730
PN
251 (add-before 'build 'patch-path
252 (lambda* (#:key inputs #:allow-other-keys)
253 (let ((ledger (assoc-ref inputs "ledger")))
254 (make-file-writable "ledger-exec.el")
255 (emacs-substitute-variables "ledger-exec.el"
256 ("ledger-binary-path" (string-append ledger "/bin/ledger"))))
257 #t))
0df201c0
RW
258 (add-after 'build 'build-doc
259 (lambda* (#:key outputs #:allow-other-keys)
260 (let ((target (string-append (assoc-ref outputs "out")
261 "/share/info")))
262 (mkdir-p target)
263 (invoke "makeinfo" "-o" target
264 "../source/doc/ledger-mode.texi"))
265 #t))
266 (add-after 'install 'relocate-elisp
267 (lambda* (#:key outputs #:allow-other-keys)
268 (let* ((site-dir (string-append (assoc-ref outputs "out")
269 "/share/emacs/site-lisp"))
270 (guix-dir (string-append site-dir "/guix.d"))
271 (orig-dir (string-append site-dir "/ledger-mode"))
272 (dest-dir (string-append guix-dir "/ledger-mode")))
273 (mkdir-p guix-dir)
274 (rename-file orig-dir dest-dir)
275 (emacs-generate-autoloads ,name dest-dir)
276 #t))))))
1c0dd730
PN
277 (inputs
278 `(("ledger" ,ledger)))
0df201c0
RW
279 (native-inputs
280 `(("emacs-minimal" ,emacs-minimal)
281 ("texinfo" ,texinfo)))
282 (home-page "https://ledger-cli.org/")
283 (synopsis "Command-line double-entry accounting program")
284 (description
285 "Ledger is a powerful, double-entry accounting system that is
286accessed from the UNIX command-line. This may put off some users, since
287there is no flashy UI, but for those who want unparalleled reporting
288access to their data there are few alternatives.
289
290Ledger uses text files for input. It reads the files and generates
291reports; there is no other database or stored state. To use Ledger,
292you create a file of your account names and transactions, run from the
293command line with some options to specify input and requested reports, and
294get output. The output is generally plain text, though you could generate
295a graph or html instead. Ledger is simple in concept, surprisingly rich
296in ability, and easy to use.
297
298This package provides the Emacs mode.")
299 (license license:gpl2+))))
300
cb0866c3
HG
301(define-public geierlein
302 (package
303 (name "geierlein")
1c21e734 304 (version "0.9.13")
cb0866c3
HG
305 (source
306 (origin
1fd71120
TGR
307 (method git-fetch)
308 (uri (git-reference
309 (url "https://github.com/stesie/geierlein.git")
310 (commit (string-append "V" version))))
311 (file-name (git-file-name name version))
cb0866c3 312 (sha256
1fd71120 313 (base32 "00zpwr3lk2vdmd60fgdwdk0xxs52wvnm19ln2m75yfphydvkglic"))))
cb0866c3
HG
314 (build-system gnu-build-system)
315 (arguments
1fd71120 316 `(#:tests? #f ; would require npm, python and a lot more
cb0866c3
HG
317 #:phases
318 (modify-phases %standard-phases
1c21e734 319 (delete 'configure) ; no configure script
cb0866c3
HG
320 (add-after 'unpack 'override-target-directory-and-tool-paths
321 (lambda* (#:key inputs outputs #:allow-other-keys)
322 (substitute* "Makefile"
323 (("prefix := .*")
324 (string-append "prefix := " (assoc-ref outputs "out") "\n"))
325 ;; Required for tests, unused for now:
326 ;;(("PYTHON := .*")
327 ;; (string-append (which "python") "\n")))
328 (("INSTALL := .*")
329 (string-append "INSTALL := " (which "install") "\n")))
330 (substitute* "bin/xgeierlein.in"
331 ;; Use icecat as XULRUNNER
332 (("^for search ")
333 (string-append "XULRUNNER=" (which "icecat") "\n"
334 "for search ")))
335 #t)))))
336 (inputs
337 `(("icecat" ,icecat)))
1e41bb1b 338 (home-page "https://stesie.github.io/geierlein/")
cb0866c3
HG
339 (synopsis "Free Elster client, for sending Germany VAT declarations")
340 (description
341 "Geierlein is a free Elster client, i.e. an application that
342allows to send VAT declarations to Germany's fiscal authorities.
343
344Currently it is *not* possible to send returns that are due annually
345(especially the income tax return) since the fiscal authority doesn't
346allow to do that off the ERiC library (which is proprietary however).
347It's not clear at the moment whether one day it will be possible to
348do so.")
349 (license license:agpl3+)))
9475fd92
CZ
350
351(define-public electrum
352 (package
353 (name "electrum")
7b725203 354 (version "3.3.6")
9475fd92
CZ
355 (source
356 (origin
357 (method url-fetch)
358 (uri (string-append "https://download.electrum.org/"
359 version "/Electrum-"
360 version ".tar.gz"))
361 (sha256
7b725203 362 (base32 "0am5ki3z0yvhrz16vp2jjy5fkxxqph0mj9qqpbw3kpql65shykwz"))
9475fd92
CZ
363 (modules '((guix build utils)))
364 (snippet
365 '(begin
366 ;; Delete the bundled dependencies.
367 (delete-file-recursively "packages")
368 #t))))
369 (build-system python-build-system)
370 (inputs
47bd32d9
CZ
371 `(("python-pyaes" ,python-pyaes)
372 ("python-pysocks" ,python-pysocks)
373 ("python-sip" ,python-sip)
374 ("python-pyqt" ,python-pyqt)
375 ("python-ecdsa" ,python-ecdsa)
376 ("python-pbkdf2" ,python-pbkdf2)
377 ("python-requests" ,python-requests)
378 ("python-qrcode" ,python-qrcode)
379 ("python-protobuf" ,python-protobuf)
81d59f44
VC
380 ("python-aiohttp" ,python-aiohttp)
381 ("python-aiohttp-socks" ,python-aiohttp-socks)
382 ("python-aiorpcx" ,python-aiorpcx)
383 ("python-certifi" ,python-certifi)
47bd32d9
CZ
384 ("python-dnspython" ,python-dnspython)
385 ("python-jsonrpclib-pelix" ,python-jsonrpclib-pelix)))
9475fd92 386 (arguments
47bd32d9 387 `(#:tests? #f ;; package doesn't have any tests
9475fd92
CZ
388 #:phases
389 (modify-phases %standard-phases
390 (add-before 'build 'patch-home
391 (lambda* (#:key outputs #:allow-other-keys)
392 (substitute* "setup.py"
393 (("~/.local/share")
394 (string-append (assoc-ref outputs "out") "/local/share"))))))))
395 (home-page "https://electrum.org/")
396 (synopsis "Bitcoin wallet")
397 (description
398 "Electrum is a lightweight Bitcoin client, based on a client-server
399protocol. It supports Simple Payment Verification (SPV) and deterministic key
400generation from a seed. Your secret keys are encrypted and are never sent to
401other machines/servers. Electrum does not download the Bitcoin blockchain.")
402 (license license:expat)))
8514662b 403
a0bb0217
VC
404(define-public electron-cash
405 (package
406 (inherit electrum)
407 (name "electron-cash")
7a70e7ca 408 (version "4.0.7")
a0bb0217
VC
409 (source
410 (origin
411 (method url-fetch)
412 (uri (string-append "https://electroncash.org/downloads/"
413 version
4e86e9d7 414 "/win-linux/Electron-Cash-"
a0bb0217
VC
415 version
416 ".tar.gz"))
417 (sha256
418 (base32
7a70e7ca 419 "0xswmr68cm1c77lzisi3z812jzqczm9dfrshfhdq42zz5kaz4gnn"))
a0bb0217
VC
420 (modules '((guix build utils)))
421 (snippet
422 '(begin
423 ;; Delete the bundled dependencies.
424 (delete-file-recursively "packages")
425 #t))))
426 (home-page "https://electroncash.org/")
427 (synopsis "Bitcoin Cash wallet")
428 (description
429 "Electroncash is a lightweight Bitcoin Cash client, based on a client-server
430protocol. It supports Simple Payment Verification (SPV) and deterministic key
431generation from a seed. Your secret keys are encrypted and are never sent to
432other machines/servers. Electroncash does not download the Bitcoin Cash blockchain.")
433 (license license:expat)))
434
8514662b
TF
435(define-public monero
436 ;; This package bundles easylogging++ and lmdb.
fc54da1d
GLV
437 ;; The bundled easylogging++ is modified, and the changes will not be
438 ;; upstreamed.
8514662b
TF
439 ;; The devs deem the lmdb driver too critical a consenus component, to use
440 ;; the system's dynamically linked library.
441 (package
442 (name "monero")
fc54da1d 443 (version "0.14.1.0")
8514662b
TF
444 (source
445 (origin
0a551443
TF
446 (method git-fetch)
447 (uri (git-reference
fc54da1d
GLV
448 (url "https://github.com/monero-project/monero.git")
449 (commit (string-append "v" version))
450 (recursive? #t)))
136ff9a2 451 (file-name (git-file-name name version))
0a551443 452 (patches (search-patches "monero-use-system-miniupnpc.patch"))
fc54da1d
GLV
453 (modules '((guix build utils)))
454 (snippet
455 '(begin
456 ;; Delete bundled dependencies.
457 (for-each
458 delete-file-recursively
459 '("external/miniupnp" "external/rapidjson"
460 "external/unbound"))
461 #t))
8514662b
TF
462 (sha256
463 (base32
fc54da1d 464 "1asa197fad81jfv12qgaa7y7pdr1r1pda96m9pvivkh4v30cx0nh"))))
8514662b
TF
465 (build-system cmake-build-system)
466 (native-inputs
467 `(("doxygen" ,doxygen)
fc54da1d 468 ("git" ,git)
8514662b 469 ("graphviz" ,graphviz)
fc54da1d
GLV
470 ("pkg-config" ,pkg-config)
471 ("qttools" ,qttools)))
8514662b 472 (inputs
fc54da1d 473 `(("boost" ,boost)
0a551443 474 ("cppzmq" ,cppzmq)
8514662b 475 ("expat" ,expat)
fc54da1d 476 ("hidapi" ,hidapi)
8514662b 477 ("libunwind" ,libunwind)
fc54da1d
GLV
478 ("libsodium" ,libsodium)
479 ("miniupnpc" ,miniupnpc)
8514662b
TF
480 ("openssl" ,openssl)
481 ("rapidjson" ,rapidjson)
fc54da1d
GLV
482 ("readline" ,readline)
483 ("unbound" ,unbound)
484 ("xz" ,xz)
485 ("zeromq" ,zeromq)))
8514662b
TF
486 (arguments
487 `(#:out-of-source? #t
fc54da1d
GLV
488 #:configure-flags '("-DARCH=default"
489 "-DBUILD_TESTS=ON"
8514662b
TF
490 "-DBUILD_GUI_DEPS=ON")
491 #:phases
492 (modify-phases %standard-phases
493 ;; tests/core_tests need a valid HOME
494 (add-before 'configure 'set-home
495 (lambda _
496 (setenv "HOME" (getcwd))
497 #t))
fc54da1d 498 (add-after 'set-home 'change-log-path
8514662b
TF
499 (lambda _
500 (substitute* "contrib/epee/src/mlog.cpp"
501 (("epee::string_tools::get_current_module_folder\\(\\)")
fc54da1d
GLV
502 "\".bitmonero\"")
503 (("return \\(")
504 "return ((std::string(getenv(\"HOME\"))) / "))
8514662b 505 #t))
fc54da1d 506 ;; Only try tests that don't need access to network or system
8514662b
TF
507 (replace 'check
508 (lambda _
fc54da1d 509 (invoke "make" "ARGS=-R 'hash|core_tests'" "test")))
8514662b
TF
510 (add-after 'check 'unit-tests
511 (lambda _
512 (let ((excluded-unit-tests
513 (string-join
514 '("AddressFromURL.Success"
515 "AddressFromURL.Failure"
516 "DNSResolver.IPv4Success"
517 "DNSResolver.DNSSECSuccess"
518 "DNSResolver.DNSSECFailure"
fc54da1d
GLV
519 "DNSResolver.GetTXTRecord"
520 ;; TODO: Find why portability_wallet test fails
521 ;; Maybe the Boost version used to create the test
522 ;; wallet and the current Boost version are not
523 ;; completely compatible?
524 "Serialization.portability_wallet"
525 "is_hdd.linux_os_root")
8514662b 526 ":")))
797445be
TF
527 (invoke "tests/unit_tests/unit_tests"
528 (string-append "--gtest_filter=-"
fc54da1d 529 excluded-unit-tests))))))))
8514662b
TF
530 (home-page "https://getmonero.org/")
531 (synopsis "Command-line interface to the Monero currency")
532 (description
fc54da1d
GLV
533 "Monero is a secure, private, untraceable currency. This package provides
534the Monero command line client and daemon.")
8514662b 535 (license license:bsd-3)))
79228a52 536
f7e24839 537(define-public monero-gui
79228a52 538 (package
f7e24839 539 (name "monero-gui")
1362e529 540 (version "0.14.1.0")
79228a52
TF
541 (source
542 (origin
3902bc5c
TF
543 (method git-fetch)
544 (uri (git-reference
1362e529 545 (url "https://github.com/monero-project/monero-gui.git")
3902bc5c 546 (commit (string-append "v" version))))
398a96a2 547 (file-name (git-file-name name version))
79228a52
TF
548 (sha256
549 (base32
1362e529 550 "0ilx47771faygf97wilm64xnqxgxa3b43q0g9v014npk0qj8pc31"))))
79228a52
TF
551 (build-system gnu-build-system)
552 (native-inputs
1362e529 553 `(("pkg-config" ,pkg-config)
6915d20f 554 ("qttools" ,qttools)))
79228a52
TF
555 (inputs
556 `(("boost" ,boost)
1362e529 557 ("hidapi" ,hidapi)
79228a52 558 ("libunwind" ,libunwind)
1362e529 559 ("libsodium" ,libsodium)
79228a52 560 ("openssl" ,openssl)
6915d20f
EF
561 ("qtbase" ,qtbase)
562 ("qtdeclarative" ,qtdeclarative)
563 ("qtgraphicaleffects" ,qtgraphicaleffects)
1362e529
GLV
564 ("qtlocation" ,qtlocation)
565 ("qtmultimedia" ,qtmultimedia)
6915d20f 566 ("qtquickcontrols" ,qtquickcontrols)
1362e529
GLV
567 ("qtquickcontrols2",qtquickcontrols2)
568 ("qtsvg" ,qtsvg)
569 ("qtwebchannel" ,qtwebchannel)
570 ("qtx11extras" ,qtx11extras)
571 ("qtxmlpatterns" ,qtxmlpatterns)
79228a52
TF
572 ("unbound" ,unbound)))
573 (propagated-inputs
574 `(("monero" ,monero)))
575 (arguments
1362e529
GLV
576 `(#:modules ((guix build gnu-build-system)
577 (guix build qt-utils)
578 (guix build utils))
579 #:imported-modules (,@%gnu-build-system-modules
580 (guix build qt-utils))
581 #:phases
79228a52
TF
582 (modify-phases %standard-phases
583 (delete 'configure)
584 (delete 'check)
585 (add-before 'build 'fix-makefile-vars
586 (lambda _
587 (substitute* "src/zxcvbn-c/makefile"
588 (("\\?=") "="))
589 #t))
590 (add-after 'fix-makefile-vars 'fix-library-paths
591 (lambda* (#:key inputs #:allow-other-keys)
592 (substitute* "monero-wallet-gui.pro"
1362e529
GLV
593 (("-L/usr/local/lib")
594 "")
79228a52 595 (("-L/usr/local/opt/openssl/lib")
1362e529 596 (string-append "-L" (assoc-ref inputs "openssl") "/lib"))
79228a52 597 (("-L/usr/local/opt/boost/lib")
1362e529 598 (string-append "-L" (assoc-ref inputs "boost") "/lib")))
79228a52
TF
599 #t))
600 (add-after 'fix-library-paths 'fix-monerod-path
601 (lambda* (#:key inputs #:allow-other-keys)
602 (substitute* "src/daemon/DaemonManager.cpp"
603 (("QApplication::applicationDirPath\\(\\) \\+ \"/monerod")
1362e529 604 (string-append "\"" (assoc-ref inputs "monero")
79228a52
TF
605 "/bin/monerod")))
606 #t))
6915d20f
EF
607 (add-after 'fix-monerod-path 'fix-qt-paths
608 (lambda* (#:key inputs #:allow-other-keys)
1362e529
GLV
609 (substitute* "monero-wallet-gui.pro"
610 (("\\$\\$\\[QT_INSTALL_BINS\\]/lrelease")
611 (string-append (assoc-ref inputs "qttools") "/bin/lrelease"))
612 (("\\$\\$\\[QT_INSTALL_BINS\\]/lupdate")
613 (string-append (assoc-ref inputs "qttools") "/bin/lupdate")))
614 #t))
615 (add-after 'fix-qt-paths 'make-qt-deterministic
616 (lambda _
617 (setenv "QT_RCC_SOURCE_DATE_OVERRIDE" "1")
618 #t))
619 (add-after 'make-qt-deterministic 'fix-version
620 (lambda _
621 (substitute* "build.sh"
622 (("echo .*> version.js")
623 ""))
624 (with-output-to-file "version.js"
625 (lambda _
626 (format #t
627 "var GUI_VERSION = \"~a\"~@
628 var GUI_MONERO_VERSION = \"~a\"~%"
629 ,version
630 ,(package-version monero))))
631 #t))
79228a52
TF
632 (replace 'build
633 (lambda _
88d5ee44 634 (invoke "./build.sh")))
79228a52
TF
635 (add-after 'build 'fix-install-path
636 (lambda* (#:key outputs #:allow-other-keys)
637 (substitute* "build/Makefile"
638 (("/opt/monero-wallet-gui")
639 (assoc-ref outputs "out")))
640 #t))
641 (add-before 'install 'change-dir
642 (lambda _
1362e529
GLV
643 (chdir "build")
644 #t))
645 (add-after 'install 'wrap-program
646 (lambda* (#:key outputs #:allow-other-keys)
6915d20f 647 (let ((out (assoc-ref outputs "out")))
1362e529
GLV
648 (wrap-qt-program out "monero-wallet-gui"))
649 #t)))))
79228a52
TF
650 (home-page "https://getmonero.org/")
651 (synopsis "Graphical user interface for the Monero currency")
652 (description
1362e529
GLV
653 "Monero is a secure, private, untraceable currency. This package provides
654the Monero GUI client.")
79228a52 655 (license license:bsd-3)))
00d3f022 656
f7e24839
TF
657(define-public monero-core
658 (deprecated-package "monero-core" monero-gui))
659
00d3f022
DM
660(define-public python-trezor-agent
661 (package
662 (name "python-trezor-agent")
37cff994 663 (version "0.13.1")
00d3f022
DM
664 (source
665 (origin
39a7b720
TGR
666 (method git-fetch)
667 (uri (git-reference
668 (url "https://github.com/romanz/trezor-agent.git")
669 (commit (string-append "v" version))))
670 (file-name (git-file-name name version))
00d3f022 671 (sha256
37cff994 672 (base32 "0q99vbfd3h85s8rnjipnmldixabqmmlk5w9karv6f0rhyi54f4zv"))))
00d3f022
DM
673 (build-system python-build-system)
674 (arguments
675 `(#:phases
676 (modify-phases %standard-phases
df724c9c
VC
677 (add-after 'unpack 'remove-requires-backports-shutil-which
678 ;; Remove requires on backport of shutil_which, as python 3.4+ has
679 ;; a built-in implementation supported in python-trezor-agent.
680 (lambda _
681 (substitute* "setup.py"
682 (("'backports.shutil_which>=3.5.1',") ""))
683 #t))
00d3f022
DM
684 (delete 'check)
685 (add-after 'install 'check
686 (lambda* (#:key outputs inputs #:allow-other-keys)
39a7b720 687 ;; Make installed package available for running the tests.
00d3f022
DM
688 (add-installed-pythonpath inputs outputs)
689 (invoke "py.test"))))))
690 (propagated-inputs
df724c9c
VC
691 `(("python-configargparse" ,python-configargparse)
692 ("python-daemon" ,python-daemon)
693 ("python-docutils" ,python-docutils)
694 ("python-ecdsa" ,python-ecdsa)
00d3f022 695 ("python-ed25519" ,python-ed25519)
df724c9c
VC
696 ("python-mnemonic" ,python-mnemonic)
697 ("python-pymsgbox" ,python-pymsgbox)
00d3f022 698 ("python-semver" ,python-semver)
df724c9c
VC
699 ("python-unidecode" ,python-unidecode)
700 ("python-wheel" ,python-wheel)))
00d3f022 701 (native-inputs
df724c9c
VC
702 `(("gnupg" ,gnupg)
703 ("python-mock" ,python-mock)
00d3f022
DM
704 ("python-pytest" ,python-pytest)))
705 (home-page "https://github.com/romanz/trezor-agent")
df724c9c 706 (synopsis "Use hardware wallets as SSH and GPG agent")
00d3f022
DM
707 (description
708 "@code{libagent} is a library that allows using TREZOR, Keepkey and
709Ledger Nano as a hardware SSH/GPG agent.")
710 (license license:lgpl3)))
711
712(define-public python2-trezor-agent
713 (package-with-python2 python-trezor-agent))
6e9749ef
DM
714
715(define-public python-mnemonic
716 (package
717 (name "python-mnemonic")
718 (version "0.18")
719 (source
720 (origin
721 (method url-fetch)
722 (uri (pypi-uri "mnemonic" version))
723 (sha256
724 (base32
725 "07bzfa5di6nv5xwwcwbypnflpj50wlfczhh6q6hg8w13g5m319q2"))))
726 (build-system python-build-system)
727 (propagated-inputs
728 `(("python-pbkdf2" ,python-pbkdf2)))
729 (home-page "https://github.com/trezor/python-mnemonic")
730 (synopsis "Implementation of Bitcoin BIP-0039")
731 (description "@code{mnemonic} is a library that provides an implementation
732of Bitcoin BIP-0039.")
733 (license license:expat)))
734
735(define-public python2-mnemonic
736 (package-with-python2 python-mnemonic))
96f5e2e9
DM
737
738(define-public python-ledgerblue
739 (package
740 (name "python-ledgerblue")
741 (version "0.1.16")
742 (source
743 (origin
744 (method url-fetch)
745 (uri (pypi-uri "ledgerblue" version))
746 (sha256
747 (base32
748 "010mghaqh1cmz3a0ifc3f40mmyplilwlw7kpha2mzyrrff46p9gb"))))
749 (build-system python-build-system)
750 (propagated-inputs
751 `(("python-ecpy" ,python-ecpy)
752 ("python-future" ,python-future)
753 ("python-hidapi" ,python-hidapi)
754 ("python-pillow" ,python-pillow)
755 ("python-protobuf" ,python-protobuf)
756 ("python-pycrypto" ,python-pycrypto)))
757 (home-page "https://github.com/LedgerHQ/blue-loader-python")
758 (synopsis "Python library to communicate with Ledger Blue/Nano S")
759 (description "@code{ledgerblue} is a Python library to communicate with
760Ledger Blue/Nano S.")
761 (license license:asl2.0)))
762
763(define-public python2-ledgerblue
764 (package-with-python2 python-ledgerblue))
765
1dca32e3
DM
766(define-public python-trezor
767 (package
768 (name "python-trezor")
61497aa4 769 (version "0.11.3")
1dca32e3
DM
770 (source
771 (origin
772 (method url-fetch)
773 (uri (pypi-uri "trezor" version))
774 (sha256
775 (base32
61497aa4 776 "0211m027vlvyqy83kwbjjjxalb04xgf1klv0h0y0f0yhj07516n7"))))
1dca32e3 777 (build-system python-build-system)
b4c698c8
VC
778 (arguments
779 `(#:phases
780 (modify-phases %standard-phases
781 ;; Default tests run device-specific tests which fail, only run specific tests.
782 (replace 'check
783 (lambda* (#:key inputs outputs #:allow-other-keys)
8c16b8a4
VC
784 ;; Delete tests that require network access.
785 (delete-file "trezorlib/tests/unit_tests/test_tx_api.py")
786 (invoke "python" "-m" "pytest" "--pyarg" "trezorlib.tests.unit_tests"))))))
1dca32e3 787 (propagated-inputs
b4c698c8 788 `(("python-click" ,python-click)
8c16b8a4 789 ("python-construct" ,python-construct)
b4c698c8 790 ("python-ecdsa" ,python-ecdsa)
b4c698c8 791 ("python-libusb1" ,python-libusb1)
1dca32e3 792 ("python-mnemonic" ,python-mnemonic)
b4c698c8
VC
793 ("python-pyblake2" ,python-pyblake2)
794 ("python-requests" ,python-requests)
8c16b8a4 795 ("python-typing-extensions" ,python-typing-extensions)))
1dca32e3 796 (native-inputs
61497aa4
TGR
797 ;; For tests.
798 `(("protobuf" ,protobuf)
799 ("python-black" ,python-black)
800 ("python-protobuf" ,python-protobuf)
801 ("python-isort" ,python-isort)
802 ("python-pyqt" ,python-pyqt)
803 ("python-pytest" ,python-pytest)))
1dca32e3
DM
804 (home-page "https://github.com/trezor/python-trezor")
805 (synopsis "Python library for communicating with TREZOR Hardware Wallet")
806 (description "@code{trezor} is a Python library for communicating with
807TREZOR Hardware Wallet.")
808 (license license:lgpl3)))
809
810(define-public python2-trezor
811 (package-with-python2 python-trezor))
d596fea5 812
d6ddeffc
DM
813(define-public python-keepkey
814 (package
815 (name "python-keepkey")
52311b51 816 (version "6.0.3")
d6ddeffc
DM
817 (source
818 (origin
819 (method url-fetch)
820 (uri (pypi-uri "keepkey" version))
821 (sha256
822 (base32
52311b51 823 "0z3d0m6364v9dv0njs4cd5m5ai6j6v35xaaxfxl90m9vmyxy81vd"))))
d6ddeffc
DM
824 (build-system python-build-system)
825 (arguments
826 `(#:phases
827 (modify-phases %standard-phases
828 (delete 'check)
829 (add-after 'install 'check
830 (lambda* (#:key inputs outputs #:allow-other-keys)
831 (add-installed-pythonpath inputs outputs)
832 (apply invoke "python" (find-files "tests/unit" "\\.py$")))))))
833 (propagated-inputs
834 `(("python-ecdsa" ,python-ecdsa)
835 ("python-hidapi" ,python-hidapi)
02d9e5d2 836 ("python-libusb1" ,python-libusb1)
d6ddeffc
DM
837 ("python-mnemonic" ,python-mnemonic)
838 ("python-protobuf" ,python-protobuf)))
839 (home-page "https://github.com/keepkey/python-keepkey")
840 (synopsis "Python library for communicating with KeepKey Hardware Wallet")
841 (description "@code{keepkey} is a Python library for communicating with
842the KeepKey Hardware Wallet.")
843 (license license:lgpl3)))
844
845(define-public python2-keepkey
846 (package-with-python2 python-keepkey))
847
d596fea5
DM
848(define-public ledger-agent
849 (package
850 (name "ledger-agent")
851 (version "0.9.0")
852 (source
853 (origin
854 (method url-fetch)
855 (uri (pypi-uri "ledger_agent" version))
856 (sha256
857 (base32
858 "03zj602m2rln9yvr08dswy56vzkbldp8b074ixwzz525dafblr92"))))
859 (build-system python-build-system)
860 (inputs
861 `(("python-ledgerblue" ,python-ledgerblue)
862 ("python-trezor-agent" ,python-trezor-agent)))
863 (home-page "http://github.com/romanz/trezor-agent")
864 (synopsis "Ledger as hardware SSH/GPG agent")
865 (description "This package allows using Ledger as hardware SSH/GPG agent.
866
5859fd6c
MB
867Usage for SSH: trezor-agent foo@@example.com --connect
868Usage for GPG: Initialize using trezor-gpg init \"Foo <foo@@example.com>\"
d596fea5
DM
869Then set the environment variable GNUPGHOME to
870\"${HOME}/.gnupg/trezor\".")
871 (license license:lgpl3)))
47c8ea99
DM
872
873(define-public trezor-agent
874 (package
875 (name "trezor-agent")
7fafdadd 876 (version "0.10.0")
47c8ea99
DM
877 (source
878 (origin
879 (method url-fetch)
880 (uri (pypi-uri "trezor_agent" version))
881 (sha256
882 (base32
7fafdadd
VC
883 "144657c7bn0a667dq5fv5r6j7iilxf3h9agj29v1m2qpq40g0az8"))))
884 (arguments
885 ;; Tests fail with "AttributeError: module 'attr' has no attribute 's'".
886 `(#:phases
887 (modify-phases %standard-phases
888 (add-after 'wrap 'fixup-agent-py
889 (lambda* (#:key inputs outputs #:allow-other-keys)
890 (let* ((out (assoc-ref outputs "out")))
891 ;; overwrite the wrapper with the real thing.
892 (install-file "./trezor_agent.py"
893 (string-append out "/bin"))
894 #t))))))
47c8ea99
DM
895 (build-system python-build-system)
896 (inputs
897 `(("python-trezor" ,python-trezor)
898 ("python-trezor-agent" ,python-trezor-agent)))
7fafdadd
VC
899 (native-inputs
900 `(("python-hidapi" ,python-hidapi)))
901 (home-page "https://github.com/romanz/trezor-agent")
47c8ea99
DM
902 (synopsis "Using Trezor as hardware SSH/GPG agent")
903 (description "This package allows using Trezor as a hardware SSH/GPG
904agent.")
905 (license license:lgpl3)))
50c4d676
DM
906
907(define-public keepkey-agent
908 (package
909 (name "keepkey-agent")
910 (version "0.9.0")
911 (source
912 (origin
913 (method url-fetch)
914 (uri (pypi-uri "keepkey_agent" version))
915 (sha256
916 (base32
917 "03779gvlx70i0nnry98i4pl1d92604ix5x6jgdfkrdgzqbh5vj27"))))
918 (build-system python-build-system)
919 (inputs
920 `(("python-keepkey" ,python-keepkey)
921 ("python-trezor-agent" ,python-trezor-agent)))
922 (home-page "http://github.com/romanz/trezor-agent")
923 (synopsis "KeepKey as hardware SSH/GPG agent")
924 (description "This package allows using KeepKey as a hardware SSH/GPG
925agent.")
926 (license license:lgpl3)))
3da86c52
AP
927
928(define-public python-stdnum
929 (package
930 (name "python-stdnum")
931 (version "1.8.1")
932 (source
933 (origin
934 (method url-fetch)
935 (uri (pypi-uri "python-stdnum" version))
936 (sha256
937 (base32
938 "0hvr47q32xbyiznpmbg4r8rcvxhnf0lwf33hcpnynyik57djy5np"))))
939 (build-system python-build-system)
940 (home-page
941 "https://arthurdejong.org/python-stdnum/")
942 (synopsis
943 "Python module to handle standardized number and code formats")
944 (description
945 "This is a Python library that aims to provide functions to handle,
946parse and validate standard numbers.
947The module supports more than 100 different number formats
948amongst which a great number of VAT and other tax numbers,
949personal identity and company identification codes,
950international standard numbers (ISBN, IBAN, EAN, etc.)
951and various other formats.
952The module also inclused implementations of the Verhoeff,
953Luhn and family of ISO/IEC 7064 check digit algorithms. ")
954 (license license:lgpl2.1+)))
955
956(define-public python2-stdnum
957 (package-with-python2 python-stdnum))
730553d7 958
c7299015
NG
959(define-public python-duniterpy
960 (package
961 (name "python-duniterpy")
2868804d 962 (version "0.54.3")
c7299015
NG
963 (source
964 (origin
965 (method git-fetch)
966 ;; Pypi's default URI is missing "requirements.txt" file.
967 (uri (git-reference
7dab3e61 968 (url "https://git.duniter.org/clients/python/duniterpy.git")
c7299015
NG
969 (commit version)))
970 (file-name (git-file-name name version))
971 (sha256
972 (base32
2868804d 973 "1k3rpfc9zxj9z50cr4zjfyzdla9ap5mj1v1rlcriqmflgb5cmiba"))))
c7299015 974 (build-system python-build-system)
1427d888
NG
975 (arguments
976 ;; Tests fail with "AttributeError: module 'attr' has no attribute 's'".
42a57df8
NG
977 `(#:tests? #f
978 #:phases
979 (modify-phases %standard-phases
980 (add-after 'build 'build-documentation
981 (lambda _
982 (invoke "make" "docs")))
983 (add-after 'build-documentation 'install-documentation
984 (lambda* (#:key inputs outputs #:allow-other-keys)
985 (let* ((out (assoc-ref outputs "out"))
986 (doc (string-append out "/share/doc/" ,name)))
987 (mkdir-p doc)
988 (copy-recursively "docs/_build/html" doc))
989 #t)))))
990 (native-inputs
352033f3
NG
991 `(("sphinx" ,python-sphinx)
992 ("sphinx-rtd-theme" ,python-sphinx-rtd-theme)))
c7299015 993 (propagated-inputs
352033f3
NG
994 `(("aiohttp" ,python-aiohttp)
995 ("attr" ,python-attr)
996 ("base58" ,python-base58)
997 ("jsonschema" ,python-jsonschema)
998 ("libnacl" ,python-libnacl)
999 ("pyaes" ,python-pyaes)
1000 ("pylibscrypt" ,python-pylibscrypt)
1001 ("pypeg2" ,python-pypeg2)))
9f1a2be2 1002 (home-page "https://git.duniter.org/clients/python/duniterpy")
c7299015
NG
1003 (synopsis "Python implementation of Duniter API")
1004 (description "@code{duniterpy} is an implementation of
207a79b2 1005@uref{https://github.com/duniter/duniter/, duniter} API. Its
c7299015
NG
1006main features are:
1007@itemize
207a79b2
NG
1008@item Support Duniter's Basic Merkle API and protocol
1009@item Asynchronous/synchronous without threads
1010@item Support HTTP, HTTPS and Web Socket transport for Basic Merkle API
1011@item Support Elasticsearch Duniter4j API
c7299015 1012@item Duniter signing key
207a79b2 1013@item Sign/verify and encrypt/decrypt messages with the Duniter credentials
c7299015
NG
1014@end itemize")
1015 (license license:gpl3+)))
1016
730553d7
NG
1017(define-public silkaj
1018 (package
1019 (name "silkaj")
0f065129 1020 (version "0.7.2")
730553d7
NG
1021 (source
1022 (origin
1023 (method git-fetch)
1024 (uri (git-reference
1025 (url "https://git.duniter.org/clients/python/silkaj.git")
1026 (commit (string-append "v" version))))
1027 (file-name (git-file-name name version))
1028 (sha256
1029 (base32
0f065129 1030 "059k2kil2l8jcm4wp86w1z7y8p26rww7d3l5fzds0qq2dzvkvzgs"))))
730553d7
NG
1031 (build-system python-build-system)
1032 (arguments
e627052f 1033 `(#:tests? #f)) ;no test
730553d7 1034 (inputs
c14b3a8d
NG
1035 `(("click" ,python-click)
1036 ("duniterpy" ,python-duniterpy)
1037 ("ipaddress" ,python-ipaddress)
1038 ("pynacl" ,python-pynacl)
f41378b7
NG
1039 ("tabulate" ,python-tabulate)
1040 ("texttable" ,python-texttable)))
730553d7
NG
1041 (home-page "https://silkaj.duniter.org/")
1042 (synopsis "Command line client for Duniter network")
1043 (description "@code{Silkaj} is a command line client for the
1044@uref{https://github.com/duniter/duniter/, Duniter} network.
1045
1046Its features are:
1047@itemize
1048@item information about currency,
1049@item issuers difficulty to generate next block,
1050@item network view of nodes,
1051@item list of last issuers,
1052@item send transactions,
1053@item get account amount.
1054@end itemize")
1055 (license license:agpl3+)))