gnu: Add python-git-hammer.
[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>
369114be 9;;; Copyright © 2017, 2018, 2019, 2020 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>
c1d79b49 12;;; Copyright © 2018, 2019, 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr>
948e888d 13;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
230e5db7 14;;; Copyright © 2019, 2020 Guillaume Le Vaillant <glv@posteo.net>
90bb244f 15;;; Copyright © 2019 Tanguy Le Carrour <tanguy@bioneland.org>
abb37b3c 16;;; Copyright © 2019, 2020 Martin Becze <mjbecze@riseup.net>
66b707a7 17;;; Copyright © 2019 Sebastian Schott <sschott@mailbox.org>
63ca1a89 18;;; Copyright © 2020 Kei Kebreau <kkebreau@posteo.net>
f1f72484 19;;; Copyright © 2020 Christopher Lemmer Webber <cwebber@dustycloud.org>
3e6aa0ce 20;;; Copyright © 2020 Tom Zander <tomz@freedommail.ch>
795b4bca 21;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
c7210b96 22;;; Copyright © 2020 Vinicius Monego <monego@posteo.net>
e6bfb02e 23;;; Copyright © 2020 Carlo Holl <carloholl@gmail.com>
20c6b9da
AE
24;;;
25;;; This file is part of GNU Guix.
26;;;
27;;; GNU Guix is free software; you can redistribute it and/or modify it
28;;; under the terms of the GNU General Public License as published by
29;;; the Free Software Foundation; either version 3 of the License, or (at
30;;; your option) any later version.
31;;;
32;;; GNU Guix is distributed in the hope that it will be useful, but
33;;; WITHOUT ANY WARRANTY; without even the implied warranty of
34;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
35;;; GNU General Public License for more details.
36;;;
37;;; You should have received a copy of the GNU General Public License
38;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
39
40(define-module (gnu packages finance)
fa4f95a7
CB
41 #:use-module ((guix licenses) #:prefix license:)
42 #:use-module (guix packages)
43 #:use-module (guix download)
730553d7 44 #:use-module (guix git-download)
fa4f95a7
CB
45 #:use-module (guix build-system gnu)
46 #:use-module (guix build-system cmake)
0639a240 47 #:use-module (guix build-system copy)
805d7021 48 #:use-module (guix build-system emacs)
e6bfb02e 49 #:use-module (guix build-system haskell)
fa4f95a7 50 #:use-module (guix build-system python)
90bb244f 51 #:use-module (guix build-system glib-or-gtk)
01b37d0f 52 #:use-module (guix build-system go)
230e5db7 53 #:use-module (guix build-system qt)
90bb244f 54 #:use-module (guix utils)
5424f9bc 55 #:use-module (gnu packages)
054ff198
GLV
56 #:use-module (gnu packages aidc)
57 #:use-module (gnu packages autotools)
fa4f95a7
CB
58 #:use-module (gnu packages base)
59 #:use-module (gnu packages boost)
60 #:use-module (gnu packages check)
fc54da1d 61 #:use-module (gnu packages compression)
0a551443 62 #:use-module (gnu packages crypto)
952fe2da 63 #:use-module (gnu packages curl)
fa4f95a7 64 #:use-module (gnu packages databases)
63ca1a89 65 #:use-module (gnu packages docbook)
fa4f95a7
CB
66 #:use-module (gnu packages documentation)
67 #:use-module (gnu packages dns)
68 #:use-module (gnu packages emacs)
255d1bbe 69 #:use-module (gnu packages dbm)
63ca1a89 70 #:use-module (gnu packages gettext)
90bb244f
TLC
71 #:use-module (gnu packages gnome)
72 #:use-module (gnu packages glib)
df724c9c 73 #:use-module (gnu packages gnupg)
fa4f95a7
CB
74 #:use-module (gnu packages graphviz)
75 #:use-module (gnu packages groff)
90bb244f 76 #:use-module (gnu packages gtk)
e6bfb02e
CH
77 #:use-module (gnu packages haskell-check)
78 #:use-module (gnu packages haskell-web)
79 #:use-module (gnu packages haskell-xyz)
59668de4 80 #:use-module (gnu packages jemalloc)
fa4f95a7
CB
81 #:use-module (gnu packages libedit)
82 #:use-module (gnu packages libevent)
83 #:use-module (gnu packages libunwind)
96f5e2e9 84 #:use-module (gnu packages libusb)
fa4f95a7 85 #:use-module (gnu packages linux)
952fe2da 86 #:use-module (gnu packages man)
fa4f95a7 87 #:use-module (gnu packages multiprecision)
0a551443 88 #:use-module (gnu packages networking)
fa4f95a7 89 #:use-module (gnu packages pkg-config)
952fe2da 90 #:use-module (gnu packages popt)
fa4f95a7
CB
91 #:use-module (gnu packages protobuf)
92 #:use-module (gnu packages python)
cc6f4912 93 #:use-module (gnu packages python-crypto)
589e3f4e 94 #:use-module (gnu packages python-web)
44d10b1f 95 #:use-module (gnu packages python-xyz)
fa4f95a7 96 #:use-module (gnu packages qt)
1d0865c1 97 #:use-module (gnu packages readline)
9d0c291e 98 #:use-module (gnu packages sphinx)
fa4f95a7
CB
99 #:use-module (gnu packages texinfo)
100 #:use-module (gnu packages textutils)
1ea8b3b1 101 #:use-module (gnu packages time)
fa4f95a7
CB
102 #:use-module (gnu packages tls)
103 #:use-module (gnu packages upnp)
104 #:use-module (gnu packages web)
105 #:use-module (gnu packages xml)
106 #:use-module (gnu packages gnuzilla))
20c6b9da
AE
107
108(define-public bitcoin-core
109 (package
110 (name "bitcoin-core")
90799c35 111 (version "0.19.1")
20c6b9da 112 (source (origin
8ba4d8a3
CB
113 (method url-fetch)
114 (uri
115 (string-append "https://bitcoincore.org/bin/bitcoin-core-"
116 version "/bitcoin-" version ".tar.gz"))
117 (sha256
118 (base32
119 "1h3w7brc18145np920vy7j5ms5hym59hvr40swdjx34fbdaisngj"))
120 (patches (search-patches "bitcoin-core-python-compat.patch"))))
20c6b9da
AE
121 (build-system gnu-build-system)
122 (native-inputs
123 `(("pkg-config" ,pkg-config)
1219a7cc
TGR
124 ("python" ,python) ; for the tests
125 ("util-linux" ,util-linux) ; provides the hexdump command for tests
0193812a 126 ("qttools" ,qttools)))
20c6b9da 127 (inputs
1219a7cc 128 `(("bdb" ,bdb-4.8) ; 4.8 required for compatibility
20c6b9da 129 ("boost" ,boost)
14ea30e4 130 ("libevent" ,libevent)
20c6b9da
AE
131 ("miniupnpc" ,miniupnpc)
132 ("openssl" ,openssl)
133 ("protobuf" ,protobuf)
0193812a 134 ("qtbase" ,qtbase)))
20c6b9da
AE
135 (arguments
136 `(#:configure-flags
8ba4d8a3
CB
137 (list
138 ;; Boost is not found unless specified manually.
139 (string-append "--with-boost="
140 (assoc-ref %build-inputs "boost"))
141 ;; XXX: The configure script looks up Qt paths by
142 ;; `pkg-config --variable=host_bins Qt5Core`, which fails to pick
143 ;; up executables residing in 'qttools', so we specify them here.
144 (string-append "ac_cv_path_LRELEASE="
145 (assoc-ref %build-inputs "qttools")
146 "/bin/lrelease")
147 (string-append "ac_cv_path_LUPDATE="
148 (assoc-ref %build-inputs "qttools")
149 "/bin/lupdate"))
20c6b9da 150 #:phases
8ba4d8a3
CB
151 (modify-phases %standard-phases
152 (add-before 'configure 'make-qt-deterministic
99629e5a 153 (lambda _
8ba4d8a3
CB
154 ;; Make Qt deterministic.
155 (setenv "QT_RCC_SOURCE_DATE_OVERRIDE" "1")
156 #t))
157 (add-before 'check 'set-home
20c6b9da 158 (lambda _
8ba4d8a3
CB
159 (setenv "HOME" (getenv "TMPDIR")) ; tests write to $HOME
160 #t))
161 (add-after 'check 'check-functional
bcfc54ff 162 (lambda _
8ba4d8a3
CB
163 (invoke
164 "python3" "./test/functional/test_runner.py"
165 (string-append "--jobs=" (number->string (parallel-job-count))))
166 #t)))))
20c6b9da
AE
167 (home-page "https://bitcoin.org/en/")
168 (synopsis "Bitcoin peer-to-peer client")
169 (description
170 "Bitcoin is a digital currency that enables instant payments to anyone
171anywhere in the world. It uses peer-to-peer technology to operate without
172central authority: managing transactions and issuing money are carried out
173collectively by the network. Bitcoin Core is the reference implementation
174of the bitcoin protocol. This package provides the Bitcoin Core command
175line client and a client based on Qt.")
176 (license license:expat)))
d3699b31 177
e6bfb02e
CH
178(define-public hledger
179 (package
180 (name "hledger")
181 (version "1.19.1")
182 (source
183 (origin
184 (method url-fetch)
185 (uri (string-append
186 "https://hackage.haskell.org/package/hledger/hledger-"
187 version
188 ".tar.gz"))
189 (sha256
190 (base32
191 "0wfsyf2q1kf90mj3lxs0m5ghj153axmpkc8xfy12vkz5imnyphfm"))))
192 (build-system haskell-build-system)
193 (inputs
194 `(("ghc-decimal" ,ghc-decimal)
195 ("ghc-diff" ,ghc-diff)
196 ("ghc-aeson" ,ghc-aeson)
197 ("ghc-ansi-terminal" ,ghc-ansi-terminal)
198 ("ghc-base-compat-batteries" ,ghc-base-compat-batteries)
199 ("ghc-cmdargs" ,ghc-cmdargs)
200 ("ghc-data-default" ,ghc-data-default)
201 ("ghc-extra" ,ghc-extra)
202 ("ghc-hashable" ,ghc-hashable)
203 ("ghc-hledger-lib" ,ghc-hledger-lib)
204 ("ghc-lucid" ,ghc-lucid)
205 ("ghc-math-functions" ,ghc-math-functions)
206 ("ghc-megaparsec" ,ghc-megaparsec)
207 ("ghc-old-time" ,ghc-old-time)
208 ("ghc-pretty-show" ,ghc-pretty-show)
209 ("ghc-regex-tdfa" ,ghc-regex-tdfa)
210 ("ghc-safe" ,ghc-safe)
211 ("ghc-shakespeare" ,ghc-shakespeare)
212 ("ghc-split" ,ghc-split)
213 ("ghc-tabular" ,ghc-tabular)
214 ("ghc-tasty" ,ghc-tasty)
215 ("ghc-temporary" ,ghc-temporary)
216 ("ghc-timeit" ,ghc-timeit)
217 ("ghc-unordered-containers" ,ghc-unordered-containers)
218 ("ghc-utf8-string" ,ghc-utf8-string)
219 ("ghc-utility-ht" ,ghc-utility-ht)
220 ("ghc-wizards" ,ghc-wizards)))
221 (home-page "https://hledger.org")
222 (synopsis "Command-line interface for the hledger accounting system")
223 (description
224 "The command-line interface for the hledger accounting system. Its basic
225function is to read a plain text file describing financial transactions and
226produce useful reports.
227
228hledger is a robust, cross-platform set of tools for tracking money, time, or
229any other commodity, using double-entry accounting and a simple, editable file
230format, with command-line, terminal and web interfaces. It is a Haskell
231rewrite of Ledger, and one of the leading implementations of Plain Text
232Accounting.")
233 (license license:gpl3)))
234
66b707a7
SS
235(define-public homebank
236 (package
237 (name "homebank")
fac43c92 238 (version "5.4.3")
66b707a7
SS
239 (source (origin
240 (method url-fetch)
241 (uri (string-append "http://homebank.free.fr/public/homebank-"
242 version ".tar.gz"))
243 (sha256
244 (base32
fac43c92 245 "02wd569viwy6ncy0144z9nxr3zmpl4shkqhz7zzwyky4gknxf8lj"))))
66b707a7
SS
246 (build-system glib-or-gtk-build-system)
247 (native-inputs
248 `(("pkg-config" ,pkg-config)
249 ("intltool" ,intltool)))
250 (inputs
251 `(("gtk+" ,gtk+)
c7210b96 252 ("libofx" ,libofx)
66b707a7 253 ("libsoup" ,libsoup)))
66b707a7
SS
254 (home-page "http://homebank.free.fr/")
255 (synopsis "Graphical personal accounting application")
256 (description "HomeBank allows you to manage your personal accounts at
257home. The seeks to be lightweight, simple and easy to use. It brings
258features that allow you to analyze your finances in a detailed way instantly
259and dynamically with report tools based on filtering and graphical charts.")
260 (license license:gpl2+)))
261
d3699b31
AG
262(define-public ledger
263 (package
264 (name "ledger")
e957bab7 265 (version "3.2.1")
8b7ac58c
TGR
266 (source
267 (origin
268 (method git-fetch)
269 (uri (git-reference
b0e7b699 270 (url "https://github.com/ledger/ledger")
8b7ac58c
TGR
271 (commit (string-append "v" version))))
272 (file-name (git-file-name name version))
273 (sha256
e957bab7 274 (base32 "0x6jxwss3wwzbzlwmnwb8yzjk8f9wfawif4f1b74z2qg6hc4r7f6"))))
d3699b31
AG
275 (build-system cmake-build-system)
276 (arguments
795b4bca
MB
277 `(#:modules (,@%cmake-build-system-modules
278 ((guix build python-build-system) #:select (python-version)))
279 #:imported-modules (,@%cmake-build-system-modules
280 (guix build python-build-system))
281 #:configure-flags
d3699b31
AG
282 `("-DBUILD_DOCS:BOOL=ON"
283 "-DBUILD_WEB_DOCS:BOOL=ON"
d3699b31 284 "-DUSE_PYTHON:BOOL=ON"
f90ed028 285 "-DCMAKE_INSTALL_LIBDIR:PATH=lib")
d3699b31 286 #:phases
795b4bca
MB
287 (modify-phases (@ (guix build cmake-build-system) %standard-phases)
288 (add-after 'unpack 'fix-python-installation-directory
289 (lambda* (#:key inputs outputs #:allow-other-keys)
290 ;; By default the package attempts to install its Python bindings
291 ;; to the Python store directory, which obviously does not work.
292 ;; Passing -DPython_SITEARCH in #:configure-flags has no effect.
293 (let ((python-version (python-version (assoc-ref inputs "python")))
294 (out (assoc-ref outputs "out")))
295 (substitute* "src/CMakeLists.txt"
296 (("DESTINATION \\$\\{Python_SITEARCH\\}")
297 (string-append "DESTINATION " out "/lib/python"
298 python-version "/site-packages")))
299 #t)))
d3699b31
AG
300 (add-before 'configure 'install-examples
301 (lambda* (#:key outputs #:allow-other-keys)
302 (let ((examples (string-append (assoc-ref outputs "out")
303 "/share/doc/ledger/examples")))
304 (install-file "test/input/sample.dat" examples)
305 (install-file "test/input/demo.ledger" examples))
306 #t))
307 (add-after 'build 'build-doc
1f3c4ba8 308 (lambda _ (invoke "make" "doc")))
d3699b31
AG
309 (add-before 'check 'check-setup
310 ;; One test fails if it can't set the timezone.
311 (lambda* (#:key inputs #:allow-other-keys)
312 (setenv "TZDIR"
313 (string-append (assoc-ref inputs "tzdata")
314 "/share/zoneinfo"))
f90ed028
RW
315 ;; Skip failing test BaselineTest_cmd-org.
316 ;; This is a known upstream issue. See
317 ;; https://github.com/ledger/ledger/issues/550
318 (setenv "ARGS" "-E BaselineTest_cmd-org")
319 #t)))))
d3699b31
AG
320 (inputs
321 `(("boost" ,boost)
322 ("gmp" ,gmp)
323 ("libedit" ,libedit)
324 ("mpfr" ,mpfr)
7b07852d 325 ("python" ,python)
d3699b31
AG
326 ("utfcpp" ,utfcpp)))
327 (native-inputs
f90ed028 328 `(("groff" ,groff)
5a8ef3c1
LF
329 ("texinfo" ,texinfo)
330 ("tzdata" ,tzdata-for-tests)))
b53a0c88 331 (home-page "https://ledger-cli.org/")
d3699b31
AG
332 (synopsis "Command-line double-entry accounting program")
333 (description
334 "Ledger is a powerful, double-entry accounting system that is
335accessed from the UNIX command-line. This may put off some users, since
336there is no flashy UI, but for those who want unparalleled reporting
337access to their data there are few alternatives.
338
339Ledger uses text files for input. It reads the files and generates
340reports; there is no other database or stored state. To use Ledger,
341you create a file of your account names and transactions, run from the
342command line with some options to specify input and requested reports, and
343get output. The output is generally plain text, though you could generate
344a graph or html instead. Ledger is simple in concept, surprisingly rich
345in ability, and easy to use.")
346 ;; There are some extra licenses in files which do not presently get
347 ;; installed when you build this package. Different versions of the GPL
348 ;; are used in the contrib and python subdirectories. The bundled version
349 ;; of utfcpp is under the Boost 1.0 license. Also the file
350 ;; `tools/update_copyright_year` has an Expat license.
351 (license (list license:bsd-3
352 license:asl2.0 ; src/strptime.cc
353 (license:non-copyleft
354 "file://src/wcwidth.cc"
f90ed028 355 "See src/wcwidth.cc in the distribution.")))))
cb0866c3 356
0df201c0 357(define-public emacs-ledger-mode
31b97a08 358 (package
359 (name "emacs-ledger-mode")
360 (version "4.0.0")
361 (source
362 (origin
363 (method git-fetch)
364 (uri (git-reference
365 (url "https://github.com/ledger/ledger-mode")
366 (commit (string-append "v" version))))
367 (file-name (git-file-name name version))
368 (sha256
369 (base32 "1r5rcyxd6d1rqwamzpvqdbkbdf1zbj75aaciqijrklnm59ps244y"))))
370 (build-system cmake-build-system)
371 (arguments
372 `(#:modules ((guix build cmake-build-system)
373 (guix build utils)
374 (guix build emacs-utils))
375 #:imported-modules (,@%cmake-build-system-modules
376 (guix build emacs-utils))
377 #:phases
378 (modify-phases %standard-phases
379 (add-after 'unpack 'patch-site-dir
380 (lambda _
381 (substitute* "CMakeLists.txt"
382 (("DESTINATION share/emacs/site-lisp/ledger-mode")
383 "DESTINATION share/emacs/site-lisp"))
384 #t))
385 (add-before 'build 'patch-path
386 (lambda* (#:key inputs #:allow-other-keys)
387 (let ((ledger (assoc-ref inputs "ledger")))
388 (make-file-writable "ledger-exec.el")
389 (emacs-substitute-variables "ledger-exec.el"
390 ("ledger-binary-path" (string-append ledger "/bin/ledger"))))
391 #t))
392 (add-after 'build 'build-doc
393 (lambda* (#:key outputs #:allow-other-keys)
394 (let ((target (string-append (assoc-ref outputs "out")
395 "/share/info")))
396 (mkdir-p target)
397 (invoke "makeinfo" "-o" target
398 "../source/doc/ledger-mode.texi"))
399 #t))
400 (add-after 'install 'generate-autoload
401 (lambda* (#:key outputs #:allow-other-keys)
402 (let* ((site-dir (string-append (assoc-ref outputs "out")
403 "/share/emacs/site-lisp")))
404 (emacs-generate-autoloads ,name site-dir))
405 #t))
406 (replace 'check
407 (lambda _
408 (with-directory-excursion "../source/test"
409 (invoke "make" "test-batch")))))))
410 (inputs
411 `(("ledger" ,ledger)))
412 (native-inputs
413 `(("emacs-minimal" ,emacs-minimal)
414 ("texinfo" ,texinfo)))
415 (home-page "https://ledger-cli.org/")
416 (synopsis "Command-line double-entry accounting program")
417 (description
418 "Ledger is a powerful, double-entry accounting system that is
0df201c0
RW
419accessed from the UNIX command-line. This may put off some users, since
420there is no flashy UI, but for those who want unparalleled reporting
421access to their data there are few alternatives.
422
423Ledger uses text files for input. It reads the files and generates
424reports; there is no other database or stored state. To use Ledger,
425you create a file of your account names and transactions, run from the
426command line with some options to specify input and requested reports, and
427get output. The output is generally plain text, though you could generate
428a graph or html instead. Ledger is simple in concept, surprisingly rich
429in ability, and easy to use.
430
431This package provides the Emacs mode.")
31b97a08 432 (license license:gpl2+)))
0df201c0 433
cb0866c3
HG
434(define-public geierlein
435 (package
436 (name "geierlein")
1c21e734 437 (version "0.9.13")
cb0866c3
HG
438 (source
439 (origin
1fd71120
TGR
440 (method git-fetch)
441 (uri (git-reference
b0e7b699 442 (url "https://github.com/stesie/geierlein")
1fd71120
TGR
443 (commit (string-append "V" version))))
444 (file-name (git-file-name name version))
cb0866c3 445 (sha256
1fd71120 446 (base32 "00zpwr3lk2vdmd60fgdwdk0xxs52wvnm19ln2m75yfphydvkglic"))))
cb0866c3
HG
447 (build-system gnu-build-system)
448 (arguments
1fd71120 449 `(#:tests? #f ; would require npm, python and a lot more
cb0866c3
HG
450 #:phases
451 (modify-phases %standard-phases
1c21e734 452 (delete 'configure) ; no configure script
cb0866c3
HG
453 (add-after 'unpack 'override-target-directory-and-tool-paths
454 (lambda* (#:key inputs outputs #:allow-other-keys)
455 (substitute* "Makefile"
456 (("prefix := .*")
457 (string-append "prefix := " (assoc-ref outputs "out") "\n"))
458 ;; Required for tests, unused for now:
459 ;;(("PYTHON := .*")
460 ;; (string-append (which "python") "\n")))
461 (("INSTALL := .*")
462 (string-append "INSTALL := " (which "install") "\n")))
463 (substitute* "bin/xgeierlein.in"
464 ;; Use icecat as XULRUNNER
465 (("^for search ")
466 (string-append "XULRUNNER=" (which "icecat") "\n"
467 "for search ")))
468 #t)))))
469 (inputs
470 `(("icecat" ,icecat)))
1e41bb1b 471 (home-page "https://stesie.github.io/geierlein/")
cb0866c3
HG
472 (synopsis "Free Elster client, for sending Germany VAT declarations")
473 (description
474 "Geierlein is a free Elster client, i.e. an application that
0fed2984 475sends VAT declarations to Germany's fiscal authorities.
cb0866c3
HG
476
477Currently it is *not* possible to send returns that are due annually
478(especially the income tax return) since the fiscal authority doesn't
2918485c 479allow doing that off the ERiC library (which is proprietary however).
cb0866c3
HG
480It's not clear at the moment whether one day it will be possible to
481do so.")
482 (license license:agpl3+)))
9475fd92
CZ
483
484(define-public electrum
485 (package
486 (name "electrum")
fae0a777 487 (version "3.3.8")
9475fd92
CZ
488 (source
489 (origin
490 (method url-fetch)
491 (uri (string-append "https://download.electrum.org/"
492 version "/Electrum-"
493 version ".tar.gz"))
494 (sha256
fae0a777 495 (base32 "1g00cj1pmckd4xis8r032wmraiv3vd3zc803hnyxa2bnhj8z3bg2"))
9475fd92
CZ
496 (modules '((guix build utils)))
497 (snippet
498 '(begin
499 ;; Delete the bundled dependencies.
500 (delete-file-recursively "packages")
501 #t))))
502 (build-system python-build-system)
503 (inputs
47bd32d9
CZ
504 `(("python-pyaes" ,python-pyaes)
505 ("python-pysocks" ,python-pysocks)
506 ("python-sip" ,python-sip)
507 ("python-pyqt" ,python-pyqt)
508 ("python-ecdsa" ,python-ecdsa)
509 ("python-pbkdf2" ,python-pbkdf2)
510 ("python-requests" ,python-requests)
511 ("python-qrcode" ,python-qrcode)
512 ("python-protobuf" ,python-protobuf)
81d59f44
VC
513 ("python-aiohttp" ,python-aiohttp)
514 ("python-aiohttp-socks" ,python-aiohttp-socks)
515 ("python-aiorpcx" ,python-aiorpcx)
516 ("python-certifi" ,python-certifi)
47bd32d9
CZ
517 ("python-dnspython" ,python-dnspython)
518 ("python-jsonrpclib-pelix" ,python-jsonrpclib-pelix)))
9475fd92 519 (arguments
8ee3e4d9 520 `(#:tests? #f ; no tests
9475fd92
CZ
521 #:phases
522 (modify-phases %standard-phases
a2765029 523 (add-after 'unpack 'fix-prefix
9475fd92 524 (lambda* (#:key outputs #:allow-other-keys)
a2765029
TGR
525 (let ((out (assoc-ref outputs "out")))
526 ;; setup.py installs to ~/.local/share if sys.prefix/share isn't
527 ;; writable. sys.prefix points to Python's, not our, --prefix.
528 (mkdir-p (string-append out "/share"))
529 (substitute* "setup.py"
530 (("sys\\.prefix")
531 (format #f "\"~a\"" out)))
532 #t))))))
9475fd92
CZ
533 (home-page "https://electrum.org/")
534 (synopsis "Bitcoin wallet")
535 (description
536 "Electrum is a lightweight Bitcoin client, based on a client-server
537protocol. It supports Simple Payment Verification (SPV) and deterministic key
538generation from a seed. Your secret keys are encrypted and are never sent to
539other machines/servers. Electrum does not download the Bitcoin blockchain.")
540 (license license:expat)))
8514662b 541
a0bb0217
VC
542(define-public electron-cash
543 (package
a0bb0217 544 (name "electron-cash")
70ef8b24 545 (version "4.1.1")
a0bb0217
VC
546 (source
547 (origin
d08c3e51
VC
548 (method git-fetch)
549 (uri (git-reference
b0e7b699 550 (url "https://github.com/Electron-Cash/Electron-Cash")
d08c3e51
VC
551 (commit version)))
552 (file-name (git-file-name name version))
a0bb0217 553 (sha256
70ef8b24 554 (base32 "1fllz2s20lg4hrppzmnlgjy9mrq7gaq66l2apb3vz1avzvsjw3gm"))))
e6a0cd9a 555 (build-system python-build-system)
1ea8b3b1 556 (inputs
e6a0cd9a 557 `(("libevent" ,libevent)
1628d57b 558 ("libsecp256k1" ,libsecp256k1-bitcoin-cash)
e6a0cd9a
GLV
559 ("openssl" ,openssl)
560 ("python-cython" ,python-cython)
1628d57b 561 ("python-dateutil" ,python-dateutil)
e6a0cd9a
GLV
562 ("python-dnspython" ,python-dnspython)
563 ("python-ecdsa" ,python-ecdsa)
564 ("python-hidapi" ,python-hidapi)
565 ("python-jsonrpclib-pelix" ,python-jsonrpclib-pelix)
566 ("python-keepkey" ,python-keepkey)
567 ("python-protobuf" ,python-protobuf)
568 ("python-pyaes" ,python-pyaes)
569 ("python-pyqt" ,python-pyqt)
570 ("python-pysocks" ,python-pysocks)
571 ("python-qrcode" ,python-qrcode)
572 ("python-requests" ,python-requests)
573 ("python-stem" ,python-stem)
574 ("python-trezor" ,python-trezor)
575 ("qtsvg" ,qtsvg)
576 ("zlib" ,zlib)))
d08c3e51 577 (arguments
110888f8 578 `(#:tests? #f ; no tests
e6a0cd9a
GLV
579 #:modules ((guix build python-build-system)
580 (guix build qt-utils)
581 (guix build utils))
582 #:imported-modules (,@%python-build-system-modules
583 (guix build qt-utils))
584 #:phases
585 (modify-phases %standard-phases
44da8733 586 (add-after 'unpack 'create-output-directories
e6a0cd9a 587 (lambda* (#:key outputs #:allow-other-keys)
44da8733
TGR
588 ;; setup.py installs to ~/.local/share if this doesn't exist.
589 (mkdir-p (string-append (assoc-ref outputs "out") "/share"))
110888f8 590 #t))
e6a0cd9a
GLV
591 (add-after 'unpack 'use-libsecp256k1-input
592 (lambda* (#:key inputs #:allow-other-keys)
593 (substitute* "lib/secp256k1.py"
594 (("library_paths = .* 'libsecp256k1.so.0'.")
24890787
GLV
595 (string-append "library_paths = ('"
596 (assoc-ref inputs "libsecp256k1")
597 "/lib/libsecp256k1.so.0'")))
110888f8 598 #t))
e6a0cd9a
GLV
599 (add-after 'install 'wrap-qt
600 (lambda* (#:key outputs #:allow-other-keys)
601 (wrap-qt-program (assoc-ref outputs "out") "electron-cash")
602 #t)))))
a0bb0217
VC
603 (home-page "https://electroncash.org/")
604 (synopsis "Bitcoin Cash wallet")
605 (description
606 "Electroncash is a lightweight Bitcoin Cash client, based on a client-server
607protocol. It supports Simple Payment Verification (SPV) and deterministic key
608generation from a seed. Your secret keys are encrypted and are never sent to
609other machines/servers. Electroncash does not download the Bitcoin Cash blockchain.")
610 (license license:expat)))
611
8514662b
TF
612(define-public monero
613 ;; This package bundles easylogging++ and lmdb.
fc54da1d
GLV
614 ;; The bundled easylogging++ is modified, and the changes will not be
615 ;; upstreamed.
8514662b
TF
616 ;; The devs deem the lmdb driver too critical a consenus component, to use
617 ;; the system's dynamically linked library.
618 (package
619 (name "monero")
d450b77a 620 (version "0.17.1.3")
8514662b
TF
621 (source
622 (origin
0a551443
TF
623 (method git-fetch)
624 (uri (git-reference
b0e7b699 625 (url "https://github.com/monero-project/monero")
fc54da1d
GLV
626 (commit (string-append "v" version))
627 (recursive? #t)))
136ff9a2 628 (file-name (git-file-name name version))
0a551443 629 (patches (search-patches "monero-use-system-miniupnpc.patch"))
fc54da1d
GLV
630 (modules '((guix build utils)))
631 (snippet
632 '(begin
633 ;; Delete bundled dependencies.
634 (for-each
635 delete-file-recursively
636 '("external/miniupnp" "external/rapidjson"
637 "external/unbound"))
638 #t))
8514662b 639 (sha256
d450b77a 640 (base32 "1ddkdfd8i5q509qziwcx1f6nm8axs4a1ppzv2y5lgsqpq375if6j"))))
8514662b
TF
641 (build-system cmake-build-system)
642 (native-inputs
643 `(("doxygen" ,doxygen)
8514662b 644 ("graphviz" ,graphviz)
fc54da1d 645 ("pkg-config" ,pkg-config)
b7a07bbd
GLV
646 ("protobuf" ,protobuf)
647 ("python" ,python)
fc54da1d 648 ("qttools" ,qttools)))
8514662b 649 (inputs
fc54da1d 650 `(("boost" ,boost)
0a551443 651 ("cppzmq" ,cppzmq)
8514662b 652 ("expat" ,expat)
fc54da1d 653 ("hidapi" ,hidapi)
fc54da1d 654 ("libsodium" ,libsodium)
b7a07bbd
GLV
655 ("libunwind" ,libunwind)
656 ("libusb" ,libusb)
fc54da1d 657 ("miniupnpc" ,miniupnpc)
8514662b 658 ("openssl" ,openssl)
b7a07bbd 659 ("protobuf" ,protobuf)
8514662b 660 ("rapidjson" ,rapidjson)
fc54da1d
GLV
661 ("readline" ,readline)
662 ("unbound" ,unbound)
663 ("xz" ,xz)
664 ("zeromq" ,zeromq)))
8514662b
TF
665 (arguments
666 `(#:out-of-source? #t
44554d86
GLV
667 #:configure-flags
668 (list "-DARCH=default"
669 "-DBUILD_TESTS=ON"
44554d86
GLV
670 (string-append "-DReadline_ROOT_DIR="
671 (assoc-ref %build-inputs "readline")))
8514662b
TF
672 #:phases
673 (modify-phases %standard-phases
674 ;; tests/core_tests need a valid HOME
675 (add-before 'configure 'set-home
676 (lambda _
677 (setenv "HOME" (getcwd))
678 #t))
fc54da1d 679 (add-after 'set-home 'change-log-path
8514662b
TF
680 (lambda _
681 (substitute* "contrib/epee/src/mlog.cpp"
682 (("epee::string_tools::get_current_module_folder\\(\\)")
fc54da1d
GLV
683 "\".bitmonero\"")
684 (("return \\(")
685 "return ((std::string(getenv(\"HOME\"))) / "))
8514662b 686 #t))
f8f2a944
GLV
687 (add-after 'change-log-path 'fix-file-permissions-for-tests
688 (lambda _
689 (for-each make-file-writable
690 (find-files "tests/data/" "wallet_9svHk1.*"))
691 #t))
fc54da1d 692 ;; Only try tests that don't need access to network or system
8514662b
TF
693 (replace 'check
694 (lambda _
2e5044cf
GLV
695 ;; Core tests sometimes fail, at least on i686-linux.
696 ;; Let's disable them for now and just try hash tests
697 ;; and unit tests.
698 ;; (invoke "make" "ARGS=-R 'hash|core_tests' --verbose" "test")))
699 (invoke "make" "ARGS=-R 'hash' --verbose" "test")))
8514662b
TF
700 (add-after 'check 'unit-tests
701 (lambda _
702 (let ((excluded-unit-tests
703 (string-join
704 '("AddressFromURL.Success"
705 "AddressFromURL.Failure"
706 "DNSResolver.IPv4Success"
707 "DNSResolver.DNSSECSuccess"
708 "DNSResolver.DNSSECFailure"
fc54da1d 709 "DNSResolver.GetTXTRecord"
fc54da1d 710 "is_hdd.linux_os_root")
8514662b 711 ":")))
797445be
TF
712 (invoke "tests/unit_tests/unit_tests"
713 (string-append "--gtest_filter=-"
b7a07bbd 714 excluded-unit-tests)))))
5aa7d764 715 (add-after 'install 'delete-unused-files
b7a07bbd
GLV
716 (lambda* (#:key outputs #:allow-other-keys)
717 (let ((out (assoc-ref outputs "out")))
5aa7d764
GLV
718 (delete-file-recursively (string-append out "/include")))
719 #t)))))
df90b6e7 720 (home-page "https://web.getmonero.org/")
8514662b
TF
721 (synopsis "Command-line interface to the Monero currency")
722 (description
fc54da1d
GLV
723 "Monero is a secure, private, untraceable currency. This package provides
724the Monero command line client and daemon.")
8514662b 725 (license license:bsd-3)))
79228a52 726
f7e24839 727(define-public monero-gui
79228a52 728 (package
f7e24839 729 (name "monero-gui")
903ff425 730 (version "0.17.1.4")
79228a52
TF
731 (source
732 (origin
3902bc5c
TF
733 (method git-fetch)
734 (uri (git-reference
b0e7b699 735 (url "https://github.com/monero-project/monero-gui")
3902bc5c 736 (commit (string-append "v" version))))
398a96a2 737 (file-name (git-file-name name version))
79228a52 738 (sha256
903ff425 739 (base32 "1ixjfdlvwr2an2s9jaql240bk7jpq5hhm5c4hww0bicyy3fp12ng"))))
230e5db7 740 (build-system qt-build-system)
79228a52 741 (native-inputs
5aa7d764
GLV
742 `(,@(package-native-inputs monero)
743 ("monero-source" ,(package-source monero))))
79228a52 744 (inputs
5aa7d764 745 `(,@(package-inputs monero)
51bd1f5b 746 ("libgcrypt" ,libgcrypt)
5aa7d764 747 ("monero" ,monero)
6915d20f
EF
748 ("qtbase" ,qtbase)
749 ("qtdeclarative" ,qtdeclarative)
750 ("qtgraphicaleffects" ,qtgraphicaleffects)
751 ("qtquickcontrols" ,qtquickcontrols)
1362e529
GLV
752 ("qtquickcontrols2",qtquickcontrols2)
753 ("qtsvg" ,qtsvg)
5aa7d764 754 ("qtxmlpatterns" ,qtxmlpatterns)))
79228a52 755 (arguments
230e5db7 756 `(#:tests? #f ; No tests
5aa7d764
GLV
757 #:configure-flags
758 (list "-DARCH=default"
759 "-DENABLE_PASS_STRENGTH_METER=ON"
760 (string-append "-DReadline_ROOT_DIR="
761 (assoc-ref %build-inputs "readline"))
903ff425 762 "-DCMAKE_PREFIX_PATH=\"\"")
1362e529 763 #:phases
79228a52 764 (modify-phases %standard-phases
5aa7d764
GLV
765 (add-after 'unpack 'extract-monero-sources
766 ;; Some of the monero package source code is required
767 ;; to build the GUI.
51bd1f5b 768 (lambda* (#:key inputs #:allow-other-keys)
5aa7d764 769 (invoke "tar" "-xv" "--strip-components=1"
51bd1f5b 770 "-C" "monero"
5aa7d764 771 "-f" (assoc-ref inputs "monero-source"))
51bd1f5b 772 #t))
5aa7d764 773 (add-after 'extract-monero-sources 'fix-build
79228a52 774 (lambda _
5aa7d764
GLV
775 (substitute* "src/version.js.in"
776 (("@VERSION_TAG_GUI@")
777 ,version))
79228a52
TF
778 (substitute* "src/zxcvbn-c/makefile"
779 (("\\?=") "="))
780 #t))
5aa7d764 781 (add-before 'configure 'generate-zxcvbn-c-header
1362e529 782 (lambda _
5aa7d764
GLV
783 (invoke "make" "-C" "src/zxcvbn-c" "dict-src.h")))
784 (replace 'install
785 (lambda* (#:key outputs #:allow-other-keys)
786 (let ((bin (string-append (assoc-ref outputs "out") "/bin")))
787 (mkdir-p bin)
788 (install-file "../build/bin/monero-wallet-gui" bin))
1362e529 789 #t))
5aa7d764
GLV
790 (add-after 'qt-wrap 'install-monerod-link
791 ;; The monerod program must be available so that monero-wallet-gui
792 ;; can start a Monero daemon if necessary.
793 (lambda* (#:key inputs outputs #:allow-other-keys)
794 (symlink (string-append (assoc-ref inputs "monero")
795 "/bin/monerod")
796 (string-append (assoc-ref outputs "out")
797 "/bin/monerod"))
798 #t)))))
61fe56fc 799 (home-page "https://web.getmonero.org/")
79228a52
TF
800 (synopsis "Graphical user interface for the Monero currency")
801 (description
1362e529
GLV
802 "Monero is a secure, private, untraceable currency. This package provides
803the Monero GUI client.")
79228a52 804 (license license:bsd-3)))
00d3f022
DM
805
806(define-public python-trezor-agent
807 (package
808 (name "python-trezor-agent")
37cff994 809 (version "0.13.1")
00d3f022
DM
810 (source
811 (origin
39a7b720
TGR
812 (method git-fetch)
813 (uri (git-reference
b0e7b699 814 (url "https://github.com/romanz/trezor-agent")
39a7b720
TGR
815 (commit (string-append "v" version))))
816 (file-name (git-file-name name version))
00d3f022 817 (sha256
37cff994 818 (base32 "0q99vbfd3h85s8rnjipnmldixabqmmlk5w9karv6f0rhyi54f4zv"))))
00d3f022
DM
819 (build-system python-build-system)
820 (arguments
821 `(#:phases
822 (modify-phases %standard-phases
df724c9c
VC
823 (add-after 'unpack 'remove-requires-backports-shutil-which
824 ;; Remove requires on backport of shutil_which, as python 3.4+ has
825 ;; a built-in implementation supported in python-trezor-agent.
826 (lambda _
827 (substitute* "setup.py"
828 (("'backports.shutil_which>=3.5.1',") ""))
829 #t))
00d3f022
DM
830 (delete 'check)
831 (add-after 'install 'check
832 (lambda* (#:key outputs inputs #:allow-other-keys)
39a7b720 833 ;; Make installed package available for running the tests.
00d3f022
DM
834 (add-installed-pythonpath inputs outputs)
835 (invoke "py.test"))))))
836 (propagated-inputs
df724c9c
VC
837 `(("python-configargparse" ,python-configargparse)
838 ("python-daemon" ,python-daemon)
839 ("python-docutils" ,python-docutils)
840 ("python-ecdsa" ,python-ecdsa)
00d3f022 841 ("python-ed25519" ,python-ed25519)
df724c9c
VC
842 ("python-mnemonic" ,python-mnemonic)
843 ("python-pymsgbox" ,python-pymsgbox)
00d3f022 844 ("python-semver" ,python-semver)
df724c9c
VC
845 ("python-unidecode" ,python-unidecode)
846 ("python-wheel" ,python-wheel)))
00d3f022 847 (native-inputs
df724c9c
VC
848 `(("gnupg" ,gnupg)
849 ("python-mock" ,python-mock)
00d3f022
DM
850 ("python-pytest" ,python-pytest)))
851 (home-page "https://github.com/romanz/trezor-agent")
df724c9c 852 (synopsis "Use hardware wallets as SSH and GPG agent")
00d3f022
DM
853 (description
854 "@code{libagent} is a library that allows using TREZOR, Keepkey and
855Ledger Nano as a hardware SSH/GPG agent.")
856 (license license:lgpl3)))
857
6e9749ef
DM
858(define-public python-mnemonic
859 (package
860 (name "python-mnemonic")
011ec062 861 (version "0.19")
6e9749ef
DM
862 (source
863 (origin
864 (method url-fetch)
865 (uri (pypi-uri "mnemonic" version))
866 (sha256
011ec062 867 (base32 "0cd9prmdj8wzdmc7lxbf9lz0xrlkvak5ignag406mmfbn81fndsf"))))
6e9749ef
DM
868 (build-system python-build-system)
869 (propagated-inputs
870 `(("python-pbkdf2" ,python-pbkdf2)))
871 (home-page "https://github.com/trezor/python-mnemonic")
872 (synopsis "Implementation of Bitcoin BIP-0039")
873 (description "@code{mnemonic} is a library that provides an implementation
874of Bitcoin BIP-0039.")
875 (license license:expat)))
876
877(define-public python2-mnemonic
878 (package-with-python2 python-mnemonic))
96f5e2e9
DM
879
880(define-public python-ledgerblue
881 (package
882 (name "python-ledgerblue")
883 (version "0.1.16")
884 (source
885 (origin
886 (method url-fetch)
887 (uri (pypi-uri "ledgerblue" version))
888 (sha256
889 (base32
890 "010mghaqh1cmz3a0ifc3f40mmyplilwlw7kpha2mzyrrff46p9gb"))))
891 (build-system python-build-system)
892 (propagated-inputs
893 `(("python-ecpy" ,python-ecpy)
894 ("python-future" ,python-future)
895 ("python-hidapi" ,python-hidapi)
896 ("python-pillow" ,python-pillow)
897 ("python-protobuf" ,python-protobuf)
898 ("python-pycrypto" ,python-pycrypto)))
899 (home-page "https://github.com/LedgerHQ/blue-loader-python")
900 (synopsis "Python library to communicate with Ledger Blue/Nano S")
901 (description "@code{ledgerblue} is a Python library to communicate with
902Ledger Blue/Nano S.")
903 (license license:asl2.0)))
904
905(define-public python2-ledgerblue
906 (package-with-python2 python-ledgerblue))
907
1dca32e3
DM
908(define-public python-trezor
909 (package
910 (name "python-trezor")
9e7fccda 911 (version "0.12.1")
1dca32e3
DM
912 (source
913 (origin
914 (method url-fetch)
915 (uri (pypi-uri "trezor" version))
916 (sha256
9e7fccda 917 (base32 "1w19m9lws55k9sjhras47hpfpqwq1jm5vy135nj65yhkblygqg19"))))
1dca32e3
DM
918 (build-system python-build-system)
919 (propagated-inputs
b4c698c8 920 `(("python-click" ,python-click)
8c16b8a4 921 ("python-construct" ,python-construct)
b4c698c8 922 ("python-ecdsa" ,python-ecdsa)
b4c698c8 923 ("python-libusb1" ,python-libusb1)
1dca32e3 924 ("python-mnemonic" ,python-mnemonic)
b4c698c8 925 ("python-requests" ,python-requests)
8c16b8a4 926 ("python-typing-extensions" ,python-typing-extensions)))
1dca32e3 927 (native-inputs
61497aa4
TGR
928 ;; For tests.
929 `(("protobuf" ,protobuf)
930 ("python-black" ,python-black)
931 ("python-protobuf" ,python-protobuf)
932 ("python-isort" ,python-isort)
933 ("python-pyqt" ,python-pyqt)
934 ("python-pytest" ,python-pytest)))
1dca32e3
DM
935 (home-page "https://github.com/trezor/python-trezor")
936 (synopsis "Python library for communicating with TREZOR Hardware Wallet")
937 (description "@code{trezor} is a Python library for communicating with
938TREZOR Hardware Wallet.")
939 (license license:lgpl3)))
940
d6ddeffc
DM
941(define-public python-keepkey
942 (package
943 (name "python-keepkey")
52311b51 944 (version "6.0.3")
d6ddeffc
DM
945 (source
946 (origin
947 (method url-fetch)
948 (uri (pypi-uri "keepkey" version))
949 (sha256
950 (base32
52311b51 951 "0z3d0m6364v9dv0njs4cd5m5ai6j6v35xaaxfxl90m9vmyxy81vd"))))
d6ddeffc
DM
952 (build-system python-build-system)
953 (arguments
954 `(#:phases
955 (modify-phases %standard-phases
956 (delete 'check)
957 (add-after 'install 'check
958 (lambda* (#:key inputs outputs #:allow-other-keys)
959 (add-installed-pythonpath inputs outputs)
960 (apply invoke "python" (find-files "tests/unit" "\\.py$")))))))
961 (propagated-inputs
962 `(("python-ecdsa" ,python-ecdsa)
963 ("python-hidapi" ,python-hidapi)
02d9e5d2 964 ("python-libusb1" ,python-libusb1)
d6ddeffc
DM
965 ("python-mnemonic" ,python-mnemonic)
966 ("python-protobuf" ,python-protobuf)))
967 (home-page "https://github.com/keepkey/python-keepkey")
968 (synopsis "Python library for communicating with KeepKey Hardware Wallet")
969 (description "@code{keepkey} is a Python library for communicating with
970the KeepKey Hardware Wallet.")
971 (license license:lgpl3)))
972
973(define-public python2-keepkey
974 (package-with-python2 python-keepkey))
975
d596fea5
DM
976(define-public ledger-agent
977 (package
978 (name "ledger-agent")
979 (version "0.9.0")
980 (source
981 (origin
982 (method url-fetch)
983 (uri (pypi-uri "ledger_agent" version))
984 (sha256
985 (base32
986 "03zj602m2rln9yvr08dswy56vzkbldp8b074ixwzz525dafblr92"))))
987 (build-system python-build-system)
988 (inputs
989 `(("python-ledgerblue" ,python-ledgerblue)
990 ("python-trezor-agent" ,python-trezor-agent)))
702a1012 991 (home-page "https://github.com/romanz/trezor-agent")
d596fea5
DM
992 (synopsis "Ledger as hardware SSH/GPG agent")
993 (description "This package allows using Ledger as hardware SSH/GPG agent.
994
5859fd6c
MB
995Usage for SSH: trezor-agent foo@@example.com --connect
996Usage for GPG: Initialize using trezor-gpg init \"Foo <foo@@example.com>\"
d596fea5
DM
997Then set the environment variable GNUPGHOME to
998\"${HOME}/.gnupg/trezor\".")
999 (license license:lgpl3)))
47c8ea99
DM
1000
1001(define-public trezor-agent
1002 (package
1003 (name "trezor-agent")
7fafdadd 1004 (version "0.10.0")
47c8ea99
DM
1005 (source
1006 (origin
1007 (method url-fetch)
1008 (uri (pypi-uri "trezor_agent" version))
1009 (sha256
1010 (base32
7fafdadd
VC
1011 "144657c7bn0a667dq5fv5r6j7iilxf3h9agj29v1m2qpq40g0az8"))))
1012 (arguments
1013 ;; Tests fail with "AttributeError: module 'attr' has no attribute 's'".
1014 `(#:phases
1015 (modify-phases %standard-phases
1016 (add-after 'wrap 'fixup-agent-py
1017 (lambda* (#:key inputs outputs #:allow-other-keys)
1018 (let* ((out (assoc-ref outputs "out")))
1019 ;; overwrite the wrapper with the real thing.
1020 (install-file "./trezor_agent.py"
1021 (string-append out "/bin"))
1022 #t))))))
47c8ea99
DM
1023 (build-system python-build-system)
1024 (inputs
1025 `(("python-trezor" ,python-trezor)
1026 ("python-trezor-agent" ,python-trezor-agent)))
7fafdadd
VC
1027 (native-inputs
1028 `(("python-hidapi" ,python-hidapi)))
1029 (home-page "https://github.com/romanz/trezor-agent")
47c8ea99
DM
1030 (synopsis "Using Trezor as hardware SSH/GPG agent")
1031 (description "This package allows using Trezor as a hardware SSH/GPG
1032agent.")
1033 (license license:lgpl3)))
50c4d676
DM
1034
1035(define-public keepkey-agent
1036 (package
1037 (name "keepkey-agent")
1038 (version "0.9.0")
1039 (source
1040 (origin
1041 (method url-fetch)
1042 (uri (pypi-uri "keepkey_agent" version))
1043 (sha256
1044 (base32
1045 "03779gvlx70i0nnry98i4pl1d92604ix5x6jgdfkrdgzqbh5vj27"))))
1046 (build-system python-build-system)
1047 (inputs
1048 `(("python-keepkey" ,python-keepkey)
1049 ("python-trezor-agent" ,python-trezor-agent)))
702a1012 1050 (home-page "https://github.com/romanz/trezor-agent")
50c4d676
DM
1051 (synopsis "KeepKey as hardware SSH/GPG agent")
1052 (description "This package allows using KeepKey as a hardware SSH/GPG
1053agent.")
1054 (license license:lgpl3)))
3da86c52
AP
1055
1056(define-public python-stdnum
1057 (package
1058 (name "python-stdnum")
e918eaf5 1059 (version "1.14")
3da86c52
AP
1060 (source
1061 (origin
1062 (method url-fetch)
1063 (uri (pypi-uri "python-stdnum" version))
1064 (sha256
e918eaf5 1065 (base32 "070vd9zgvq0jchs4xc4j1h4r1l1lg4wwb8xs3p25k8c2xjw94fpx"))))
3da86c52 1066 (build-system python-build-system)
200acbc3
MB
1067 (arguments
1068 '(#:phases (modify-phases %standard-phases
1069 (replace 'check
1070 (lambda _
1071 (invoke "nosetests"))))))
1072 (native-inputs
1073 `(("python-nose" ,python-nose)))
e918eaf5
TGR
1074 (home-page "https://arthurdejong.org/python-stdnum/")
1075 (synopsis "Python module to handle standardized number and code formats")
3da86c52
AP
1076 (description
1077 "This is a Python library that aims to provide functions to handle,
1078parse and validate standard numbers.
1079The module supports more than 100 different number formats
1080amongst which a great number of VAT and other tax numbers,
1081personal identity and company identification codes,
1082international standard numbers (ISBN, IBAN, EAN, etc.)
1083and various other formats.
7230f6d5 1084The module also includes implementations of the Verhoeff,
3da86c52
AP
1085Luhn and family of ISO/IEC 7064 check digit algorithms. ")
1086 (license license:lgpl2.1+)))
1087
1088(define-public python2-stdnum
1089 (package-with-python2 python-stdnum))
730553d7 1090
c7299015
NG
1091(define-public python-duniterpy
1092 (package
1093 (name "python-duniterpy")
7214dc84 1094 (version "0.60.1")
c7299015
NG
1095 (source
1096 (origin
c1d79b49
NG
1097 (method url-fetch)
1098 (uri (pypi-uri "duniterpy" version))
c7299015 1099 (sha256
7214dc84 1100 (base32 "1cwda5mk05zmpar7fpk9m4bziyz2s5pd0922h22fns5hw7vfsybh"))))
c7299015 1101 (build-system python-build-system)
1427d888 1102 (arguments
b75ef68a
NG
1103 ;; FIXME: Tests fail with: "TypeError: block_uid() missing 1 required
1104 ;; positional argument: 'value'".
1105 `(#:tests? #f))
c7299015 1106 (propagated-inputs
352033f3 1107 `(("aiohttp" ,python-aiohttp)
c1d79b49 1108 ("attrs" ,python-attrs)
352033f3
NG
1109 ("base58" ,python-base58)
1110 ("jsonschema" ,python-jsonschema)
1111 ("libnacl" ,python-libnacl)
1112 ("pyaes" ,python-pyaes)
1113 ("pylibscrypt" ,python-pylibscrypt)
1114 ("pypeg2" ,python-pypeg2)))
9f1a2be2 1115 (home-page "https://git.duniter.org/clients/python/duniterpy")
c7299015
NG
1116 (synopsis "Python implementation of Duniter API")
1117 (description "@code{duniterpy} is an implementation of
207a79b2 1118@uref{https://github.com/duniter/duniter/, duniter} API. Its
c7299015
NG
1119main features are:
1120@itemize
207a79b2
NG
1121@item Support Duniter's Basic Merkle API and protocol
1122@item Asynchronous/synchronous without threads
1123@item Support HTTP, HTTPS and Web Socket transport for Basic Merkle API
1124@item Support Elasticsearch Duniter4j API
c7299015 1125@item Duniter signing key
207a79b2 1126@item Sign/verify and encrypt/decrypt messages with the Duniter credentials
c7299015
NG
1127@end itemize")
1128 (license license:gpl3+)))
1129
730553d7
NG
1130(define-public silkaj
1131 (package
1132 (name "silkaj")
293bc15d 1133 (version "0.7.6")
730553d7
NG
1134 (source
1135 (origin
293bc15d
NG
1136 (method url-fetch)
1137 (uri (pypi-uri "silkaj" version))
730553d7 1138 (sha256
293bc15d 1139 (base32 "0hrn0jwg415z7wjkp0myvw85wszlfi18f56j03075xxakr4dmi2j"))))
730553d7
NG
1140 (build-system python-build-system)
1141 (arguments
e627052f 1142 `(#:tests? #f)) ;no test
730553d7 1143 (inputs
c14b3a8d
NG
1144 `(("click" ,python-click)
1145 ("duniterpy" ,python-duniterpy)
c14b3a8d 1146 ("pynacl" ,python-pynacl)
f41378b7
NG
1147 ("tabulate" ,python-tabulate)
1148 ("texttable" ,python-texttable)))
293bc15d 1149 (home-page "https://git.duniter.org/clients/python/silkaj")
730553d7
NG
1150 (synopsis "Command line client for Duniter network")
1151 (description "@code{Silkaj} is a command line client for the
1152@uref{https://github.com/duniter/duniter/, Duniter} network.
1153
1154Its features are:
1155@itemize
1156@item information about currency,
1157@item issuers difficulty to generate next block,
1158@item network view of nodes,
1159@item list of last issuers,
1160@item send transactions,
1161@item get account amount.
1162@end itemize")
1163 (license license:agpl3+)))
90bb244f
TLC
1164
1165(define-public grisbi
1166 (package
1167 (name "grisbi")
1168 (version "1.2.2")
1169 (source
1170 (origin
1171 (method url-fetch)
1172 (uri (string-append
1173 "mirror://sourceforge/grisbi/grisbi%20stable/"
1174 (version-major+minor version) ".x/" version
1175 "/grisbi-" version ".tar.bz2"))
1176 (sha256
1177 (base32
1178 "1piiyyxjsjbw9gcqydvknzxmmfgh8kdqal12ywrxyxih2afwnvbw"))))
1179 (build-system glib-or-gtk-build-system)
1180 (arguments
1181 `(#:configure-flags (list "--without-ofx")))
1182 (propagated-inputs
1183 `(("dconf" ,dconf)))
1184 (native-inputs
1185 `(("glib" ,glib "bin") ; glib-compile-schemas
1186 ("pkg-config" ,pkg-config)
1187 ("intltool" ,intltool)))
1188 (inputs
1189 `(("gtk+" ,gtk+)
1190 ("libgsf" ,libgsf)))
1191 (synopsis "Personal accounting application")
1192 (description "Grisbi is a personal accounting application written by
1193French developers that is designed to follow French accounting rules.
1194Grisbi can manage multiple accounts, currencies and users. It manages
1195third party, expenditure and receipt categories, budgetary lines,
1196financial years, budget estimates, bankcard management and other
1197information.")
9c99cb22 1198 (home-page "https://grisbi.org")
90bb244f 1199 (license license:gpl2+)))
01b37d0f 1200
0639a240
MB
1201(define-public trezord-udev-rules
1202 (let ((commit "bff7fdfe436c727982cc553bdfb29a9021b423b0")
1203 (revision "0"))
1204 (package
1205 (name "trezord-udev-rules")
1206 (version (git-version "0.0.0" revision commit))
1207 (source
1208 (origin
1209 (method git-fetch)
1210 (uri (git-reference
b0e7b699 1211 (url "https://github.com/trezor/trezor-common")
0639a240
MB
1212 (commit commit)))
1213 (sha256
1214 (base32
1215 "14mrirrn68if7ja6qdk9qlxs1hv0f21vrxy5ncnms0gx9iwakp2l"))
1216 (file-name (git-file-name name version))))
1217 (build-system copy-build-system)
1218 (arguments
1219 '(#:install-plan
1220 '(("./udev/51-trezor.rules" "lib/udev/rules.d/"))))
1221 (home-page "https://github.com/trezor/trezor-common")
1222 (synopsis "Udev rules for trezord")
1223 (description
1224 "This contains the udev rules for trezord. This will let a user run
1225trezord as a regular user instead of needing to it run as root.")
1226 (license license:lgpl3+))))
1227
01b37d0f 1228(define-public trezord
1229 (package
1230 (name "trezord")
abb37b3c 1231 (version "2.0.29")
01b37d0f 1232 (source
1233 (origin
1234 (method git-fetch)
1235 (uri (git-reference
b0e7b699 1236 (url "https://github.com/trezor/trezord-go")
01b37d0f 1237 (commit (string-append "v" version))))
1238 (sha256
1239 (base32
abb37b3c 1240 "1ks1fa0027s3xp0z6qp0dxmayvrb4dwwscfhbx7da0khp153f2cp"))
01b37d0f 1241 (file-name (git-file-name name version))))
1242 (build-system go-build-system)
1243 (arguments
1244 '(#:import-path "github.com/trezor/trezord-go"))
1245 (home-page "https://trezor.io")
1246 (synopsis "Trezor Communication Daemon aka Trezor Bridge (written in Go)")
1247 (description "This allows a Trezor hardware wallet to communicate to the
1248Trezor wallet.")
1249 (license license:lgpl3+)))
af012922 1250
1251(define-public bitcoin-abc
1252 (package
af012922 1253 (name "bitcoin-abc")
4338d974 1254 (version "0.21.12")
af012922 1255 (source (origin
1256 (method url-fetch)
1257 (uri (string-append "https://download.bitcoinabc.org/"
28d46d9d 1258 version "/src/bitcoin-abc-"
af012922 1259 version ".tar.gz"))
1260 (sha256
1261 (base32
4338d974 1262 "1amzwy3gpl8ai90dsy7g0z51qq8vxfzbf642wn4bfynb8jmw3kx5"))))
f7237a2e 1263 (build-system cmake-build-system)
054ff198 1264 (native-inputs
f7237a2e 1265 `(("pkg-config" ,pkg-config)
054ff198
GLV
1266 ("python" ,python) ; for the tests
1267 ("util-linux" ,util-linux) ; provides the hexdump command for tests
1268 ("qttools" ,qttools)))
28d46d9d
GLV
1269 (inputs
1270 `(("bdb" ,bdb-5.3)
1271 ("boost" ,boost)
59668de4 1272 ("jemalloc" ,jemalloc)
28d46d9d
GLV
1273 ("libevent" ,libevent)
1274 ("miniupnpc" ,miniupnpc)
1275 ("openssl" ,openssl)
1276 ("protobuf" ,protobuf)
054ff198
GLV
1277 ("qrencode" ,qrencode)
1278 ("qtbase" ,qtbase)
f7237a2e 1279 ("zeromq" ,zeromq)
054ff198 1280 ("zlib" ,zlib)))
f7237a2e
GLV
1281 (arguments
1282 `(#:phases
1283 (modify-phases %standard-phases
1284 (add-before 'configure 'make-qt-deterministic
1285 (lambda _
1286 ;; Make Qt deterministic.
1287 (setenv "QT_RCC_SOURCE_DATE_OVERRIDE" "1")
1288 #t))
1289 (add-before 'check 'set-home
1290 (lambda _
1291 (setenv "HOME" (getenv "TMPDIR")) ; tests write to $HOME
1292 #t))
1293 (add-after 'check 'check-functional
1294 (lambda _
1295 (invoke
1296 "python3" "./test/functional/test_runner.py"
1297 (string-append "--jobs=" (number->string (parallel-job-count)))
1298 ;; TODO: find why the abc-miner-fund test fails.
1299 "--exclude=abc-miner-fund")
1300 #t)))))
af012922 1301 (home-page "https://www.bitcoinabc.org/")
1302 (synopsis "Bitcoin ABC peer-to-peer full node for the Bitcoin Cash protocol")
1303 (description
1304 "Bitcoin Cash brings sound money to the world, fulfilling the original
1305promise of Bitcoin as Peer-to-Peer Electronic Cash. Merchants and users are
1306empowered with low fees and reliable confirmations is a digital currency that
1307enables instant payments to anyone anywhere in the world. It uses
1308peer-to-peer technology to operate without central authority: managing
1309transactions and issuing money are carried out collectively by the network.
1310As a fork it implemented changes lowering the time between blocks and now
1311offers confimations after less than 5 seconds and have significantly lower
1312fees that BTC. Bitcoin ABC is the reference implementation of the Bitcoin
1313Cash protocol. This package provides the Bitcoin Cash command line client and
f7237a2e
GLV
1314a client based on Qt. This is a fork of Bitcoin Core.")
1315 (license license:expat)))
63ca1a89 1316
952fe2da
KK
1317(define-public libofx
1318 (package
1319 (name "libofx")
1320 (version "0.9.15")
1321 (source (origin
1322 (method git-fetch)
1323 (uri (git-reference
1324 (url "https://github.com/libofx/libofx")
1325 (commit version)))
1326 (file-name (git-file-name name version))
1327 (sha256
1328 (base32
1329 "1jx56ma351p8af8dvavygjwf6ipa7qbgq7bpdsymwj27apdnixfy"))))
1330 (build-system gnu-build-system)
1331 (arguments
c17fb659
MB
1332 '(#:parallel-build? #f ;fails with -j64
1333 #:configure-flags
952fe2da
KK
1334 (list (string-append "--with-opensp-includes="
1335 (assoc-ref %build-inputs "opensp")
1336 "/include/OpenSP"))))
1337 (native-inputs
1338 `(("autoconf" ,autoconf)
1339 ("automake" ,automake)
1340 ("gengetopt" ,gengetopt)
1341 ("help2man" ,help2man)
1342 ("libtool" ,libtool)
1343 ("pkg-config" ,pkg-config)))
1344 (inputs
1345 `(("curl" ,curl)
1346 ("libxml++-2" ,libxml++-2)
1347 ("opensp" ,opensp)))
1348 (home-page "http://libofx.sourceforge.net/")
1349 (synopsis "Library supporting the Open Financial Exchange format")
1350 (description
8b08cf4f 1351 "The LibOFX library is an API designed to allow applications to very easily
952fe2da
KK
1352support OFX command responses, usually provided by financial institutions. The
1353following three utilities are included with the library:
1354@enumerate
1355@item @code{ofxdump}
1356@item @code{ofx2qif}
1357@item @code{ofxconnect}
1358@end enumerate")
1359 (license license:gpl2+)))
1360
63ca1a89
KK
1361(define-public opensp
1362 (package
1363 (name "opensp")
1364 (version "1.5.2")
1365 (source (origin
1366 (method url-fetch)
1367 (uri (string-append "mirror://sourceforge/openjade/opensp/"
1368 version "/OpenSP-" version ".tar.gz"))
1369 (sha256
1370 (base32
1371 "1khpasr6l0a8nfz6kcf3s81vgdab8fm2dj291n5r2s53k228kx2p"))))
1372 (build-system gnu-build-system)
1373 (native-inputs
1374 `(("gettext" ,gettext-minimal)))
1375 (inputs
1376 `(("docbook-xml" ,docbook-xml-4.1.2)
1377 ("docbook-xsl" ,docbook-xsl)
1378 ("xmlto" ,xmlto)))
1379 (arguments
1380 `(;; TODO: Fix and enable tests.
1381 #:tests? #f
1382 #:phases
1383 (modify-phases %standard-phases
1384 (add-after 'unpack 'patch-docbook-paths
1385 (lambda* (#:key inputs #:allow-other-keys)
1386 (let ((xmldoc (string-append (assoc-ref inputs "docbook-xml")
1387 "/xml/dtd/docbook"))
1388 (xsldoc (string-append (assoc-ref inputs "docbook-xsl")
1389 "/xml/xsl/docbook-xsl-"
1390 ,(package-version docbook-xsl))))
1391 (substitute* (find-files "docsrc" "\\.xml$")
1392 (("/usr/share/sgml/docbook/xml-dtd-4.1.2") xmldoc)
1393 (("http://.*/docbookx\\.dtd")
1394 (string-append xmldoc "/docbookx.dtd")))
1395 ;; Directly pass the path to the stylesheet to xmlto.
1396 (substitute* "docsrc/Makefile.in"
1397 (("\\$\\(XMLTO\\)")
1398 (string-append "$(XMLTO) -x " xsldoc
1399 "/manpages/docbook.xsl")))
1400 #t))))))
1401 (home-page "http://openjade.sourceforge.net/")
1402 (synopsis "Suite of SGML/XML processing tools")
1403 (description "OpenSP is an object-oriented toolkit for SGML parsing and
1404entity management.")
1405 (license
1406 ;; expat license with added clause regarding advertising
1407 (license:non-copyleft
1408 "file://COPYING"
1409 "See COPYING in the distribution."))))
0edbb65d
GLV
1410
1411(define-public bitcoin-unlimited
1412 (package
1413 (name "bitcoin-unlimited")
51027813 1414 (version "1.9.0.1")
0edbb65d
GLV
1415 (source
1416 (origin
1417 (method git-fetch)
1418 (uri (git-reference
b0e7b699 1419 (url "https://github.com/BitcoinUnlimited/BitcoinUnlimited")
89c5b924 1420 (commit (string-append "BCHunlimited" version))))
0edbb65d
GLV
1421 (file-name (git-file-name name version))
1422 (sha256
51027813 1423 (base32 "1pan24g3d5csa004d7zvlizj4mv58ly5i579341isp944phl3g5v"))))
0edbb65d
GLV
1424 (build-system gnu-build-system)
1425 (native-inputs
1426 `(("autoconf" ,autoconf)
1427 ("automake" ,automake)
1428 ("libtool" ,libtool)
1429 ("pkg-config" ,pkg-config)
1430 ("python" ,python) ; for the tests
1431 ("util-linux" ,util-linux) ; provides the hexdump command for tests
1432 ("qttools" ,qttools)))
1433 (inputs
1434 `(("bdb" ,bdb-4.8)
1435 ("boost" ,boost)
1436 ("libevent" ,libevent)
1437 ("miniupnpc" ,miniupnpc)
1438 ("openssl" ,openssl)
1439 ("protobuf" ,protobuf)
1440 ("qrencode" ,qrencode)
1441 ("qtbase" ,qtbase)
1442 ("zeromq" ,zeromq)
1443 ("zlib" ,zlib)))
1444 (arguments
1445 `(#:configure-flags
1446 (list
1447 ;; Boost is not found unless specified manually.
1448 (string-append "--with-boost="
1449 (assoc-ref %build-inputs "boost"))
1450 ;; XXX: The configure script looks up Qt paths by
1451 ;; `pkg-config --variable=host_bins Qt5Core`, which fails to pick
1452 ;; up executables residing in 'qttools', so we specify them here.
1453 (string-append "ac_cv_path_LRELEASE="
1454 (assoc-ref %build-inputs "qttools")
1455 "/bin/lrelease")
1456 (string-append "ac_cv_path_LUPDATE="
1457 (assoc-ref %build-inputs "qttools")
51027813
GLV
1458 "/bin/lupdate")
1459 "--disable-static")
0edbb65d
GLV
1460 #:phases
1461 (modify-phases %standard-phases
1462 (add-after 'unpack 'fix-tests
1463 (lambda _
51027813
GLV
1464 ;; Disable utilprocess_tests because it never ends.
1465 ;; It looks like it tries to start /bin/sleep and waits until it
1466 ;; is in the list of running processes, but /bin/sleep doesn't
1467 ;; exist.
89c5b924 1468 (substitute* "src/Makefile.test.include"
89c5b924
GLV
1469 (("test/utilprocess_tests.cpp")
1470 ""))
0edbb65d 1471 #t))
0edbb65d
GLV
1472 (add-before 'check 'set-home
1473 (lambda _
1474 (setenv "HOME" (getenv "TMPDIR")) ; tests write to $HOME
1475 #t)))))
1476 (home-page "https://www.bitcoinunlimited.info/")
1477 (synopsis "Client for the Bitcoin Cash protocol")
1478 (description
1479 "Bitcoin Unlimited is a client for the Bitcoin Cash peer-to-peer
1480electronic cash system. This package provides a command line client and
1481a Qt GUI.")
1482 (license license:expat)))
f1f72484 1483
3e6aa0ce
T
1484(define-public fulcrum
1485 (package
1486 (name "fulcrum")
737b87ce 1487 (version "1.1.1")
3e6aa0ce
T
1488 (source
1489 (origin
1490 (method url-fetch)
1491 (uri (string-append "https://gitlab.com/FloweeTheHub/fulcrum/-/archive/v"
1492 version "/fulcrum-v" version ".tar.gz"))
1493 (sha256
737b87ce 1494 (base32 "04w5gw02d39caa8a0l6wkn87kc43zzad2prqsyrcq97vlbkdx6x6"))))
3e6aa0ce
T
1495 (build-system gnu-build-system)
1496 (arguments
1497 `(#:phases
1498 (modify-phases %standard-phases
1499 ;; Call qmake instead of configure to create a Makefile.
1500 (replace 'configure
1501 (lambda _
1502 (invoke
1503 "qmake"
1504 (string-append "PREFIX=" %output)
1505 "features="))))))
1506 (native-inputs
1507 `(("qttools" ,qttools)))
1508 (inputs
1509 `(("python" ,python)
1510 ("qtbase" ,qtbase)
1511 ("rocksdb" ,rocksdb)
1512 ("zlib" ,zlib)))
1513 (home-page "https://gitlab.com/FloweeTheHub/fulcrum/")
1514 (synopsis "Fast and nimble SPV server for Bitcoin Cash")
1515 (description
1516 "Flowee Fulcrum is a server that is the back-end for @acronym{SPV,
1517Simplified Payment Verification} wallets, it provides the full API for those
1518walets in a fast and small server. The full data is stored in a full node,
1519like Flowee the Hub, which Fulcrum connects to over RPC.")
1520 (license license:gpl3+)))
1521
87b343f7
T
1522(define-public flowee
1523 (package
1524 (name "flowee")
1bea1b35 1525 (version "2020.04.1")
87b343f7
T
1526 (source
1527 (origin
1528 (method url-fetch)
1529 (uri (string-append "https://gitlab.com/FloweeTheHub/thehub/-/archive/"
1530 version "/thehub-" version ".tar.gz"))
1531 (sha256
1bea1b35 1532 (base32 "1vwvaxm3b71pfx8l4rrv06wqks6xdf2333w856b36s1bzvj53rhc"))))
87b343f7
T
1533 (build-system cmake-build-system)
1534 (arguments
1535 `(#:configure-flags '("-Dbuild_tests=ON" "-Denable_gui=OFF")
1536 #:phases
1537 (modify-phases %standard-phases
1538 (add-before 'configure 'make-qt-deterministic
1539 (lambda _
1540 ;; Make Qt deterministic.
1541 (setenv "QT_RCC_SOURCE_DATE_OVERRIDE" "1")
1542 #t))
1543 (add-before 'configure 'disable-black-box
1544 ;; the black-box testing runs full hubs and lets them interact.
1545 ;; this is more fragile and a slow machine, or low memory machine, may
1546 ;; make the tests timeout and fail. We just disable them here.
1547 (lambda _
1548 (substitute* "testing/CMakeLists.txt"
1549 (("test_api") ""))
cc6653e7
T
1550 (substitute* "testing/CMakeLists.txt"
1551 (("add_subdirectory\\(api\\)") ""))
87b343f7
T
1552 #t))
1553 (add-after 'configure 'set-build-info
1554 ;; Their genbuild.sh to generate a build.h fails in guix (no .git dir) .
1555 ;; Its purpose is to write the tag name in the build.h file. We do that
1556 ;; here instead.
1557 (lambda _
1558 (with-output-to-file "include/build.h"
1559 (lambda _
1560 (display
1561 (string-append "#define BUILD_DESC " "\"", version "\""))))))
1562 (add-before 'check 'set-home
1563 (lambda _
1564 (setenv "HOME" (getenv "TMPDIR")) ; tests write to $HOME
1565 #t))
1566 (replace 'check
1567 (lambda _
1568 (invoke "make" "check" "-C" "testing"))))))
1569 (inputs
1570 `(("boost" ,boost)
1571 ("gmp" ,gmp)
1572 ("libevent" ,libevent)
1573 ("miniupnpc" ,miniupnpc)
1574 ("openssl" ,openssl)
1575 ("qtbase" ,qtbase)))
1576 (native-inputs
1577 `(("pkg-config" ,pkg-config)
1578 ("qttools" ,qttools)
1579 ("util-linux" ,util-linux))) ; provides the hexdump command for tests
1580 (home-page "https://flowee.org")
1581 (synopsis "Flowee infrastructure tools and services")
1582 (description
1583 "Flowee packages all tier-1 applications and services from the Flowee group.
1584This includes components like The Hub and Indexer which and various others
1585that allows you to run services and through them access the Bitcoin Cash networks.")
1586 (license license:gpl3+)))
1587
1588
f1f72484
CLW
1589(define-public beancount
1590 (package
1591 (name "beancount")
1592 (version "2.2.3")
1593 (source
1594 (origin
1595 (method url-fetch)
1596 (uri (pypi-uri "beancount" version))
1597 (sha256
1598 (base32
1599 "0pcfl2rx2ng06i4f9izdpnlnb1k0rdzsckbzzn4cn4ixfzyssm0m"))
1600 (patches (search-patches "beancount-disable-googleapis-fonts.patch"))))
1601 (build-system python-build-system)
1602 (arguments
1603 `(#:tests? #f ; Says test is missing, not sure why
1604 #:phases
1605 (modify-phases %standard-phases
1606 ;; Not importing the googleapis package for now
1607 (add-after 'unpack 'ignore-googleapis
1608 (lambda _
1609 (substitute* "setup.py"
1610 (("'google-api-python-client',") ""))
1611 #t)))))
9afc618e 1612 (inputs
f1f72484
CLW
1613 `(("python-beautifulsoup4" ,python-beautifulsoup4)
1614 ("python-bottle" ,python-bottle)
1615 ("python-chardet" ,python-chardet)
1616 ("python-dateutil" ,python-dateutil)
1617 ("python-lxml" ,python-lxml)
1618 ("python-magic" ,python-magic)
1619 ("python-ply" ,python-ply)
f1f72484 1620 ("python-requests" ,python-requests)))
74b992fb
MB
1621 (native-inputs
1622 `(("python-pytest" ,python-pytest)))
f1f72484
CLW
1623 (home-page "http://furius.ca/beancount")
1624 (synopsis "Command-line double-entry accounting tool")
1625 (description
1626 "Beancount is a double-entry bookkeeping computer language that lets you
1627define financial transaction records in a text file, read them in memory,
1628generate a variety of reports from them, and provides a web interface.")
1629 (license license:gpl2)))
805d7021
MB
1630
1631;; The beancount source ships with elisp in a subdirectory
1632(define-public emacs-beancount
1633 (package
1634 (inherit beancount)
1635 (name "emacs-beancount")
1636 (build-system emacs-build-system)
1637 (arguments
1638 `(#:tests? #f ;no tests
1639 #:phases
1640 (modify-phases %standard-phases
1641 (add-before 'install 'chdir-emacs
1642 (lambda _
1643 (chdir "editors/emacs")
1644 #t)))))
48cb6408
MB
1645 (inputs '())
1646 (native-inputs '())
805d7021
MB
1647 (synopsis "Emacs mode for beancount")
1648 (description
1649 "Emacs-beancount is an Emacs mode for the Beancount accounting tool.")))