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