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