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