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