Commit | Line | Data |
---|---|---|
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> |
8f4d15f1 | 12 | ;;; Copyright © 2018, 2019 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> |
01b37d0f | 16 | ;;; Copyright © 2019 Martin Becze <mjbecze@riseup.net> |
66b707a7 | 17 | ;;; Copyright © 2019 Sebastian Schott <sschott@mailbox.org> |
20c6b9da AE |
18 | ;;; |
19 | ;;; This file is part of GNU Guix. | |
20 | ;;; | |
21 | ;;; GNU Guix is free software; you can redistribute it and/or modify it | |
22 | ;;; under the terms of the GNU General Public License as published by | |
23 | ;;; the Free Software Foundation; either version 3 of the License, or (at | |
24 | ;;; your option) any later version. | |
25 | ;;; | |
26 | ;;; GNU Guix is distributed in the hope that it will be useful, but | |
27 | ;;; WITHOUT ANY WARRANTY; without even the implied warranty of | |
28 | ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
29 | ;;; GNU General Public License for more details. | |
30 | ;;; | |
31 | ;;; You should have received a copy of the GNU General Public License | |
32 | ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. | |
33 | ||
34 | (define-module (gnu packages finance) | |
fa4f95a7 CB |
35 | #:use-module ((guix licenses) #:prefix license:) |
36 | #:use-module (guix packages) | |
37 | #:use-module (guix download) | |
730553d7 | 38 | #:use-module (guix git-download) |
fa4f95a7 CB |
39 | #:use-module (guix build-system gnu) |
40 | #:use-module (guix build-system cmake) | |
41 | #:use-module (guix build-system python) | |
90bb244f | 42 | #:use-module (guix build-system glib-or-gtk) |
01b37d0f | 43 | #:use-module (guix build-system go) |
230e5db7 | 44 | #:use-module (guix build-system qt) |
90bb244f | 45 | #:use-module (guix utils) |
5424f9bc | 46 | #:use-module (gnu packages) |
054ff198 GLV |
47 | #:use-module (gnu packages aidc) |
48 | #:use-module (gnu packages autotools) | |
fa4f95a7 CB |
49 | #:use-module (gnu packages base) |
50 | #:use-module (gnu packages boost) | |
51 | #:use-module (gnu packages check) | |
fc54da1d | 52 | #:use-module (gnu packages compression) |
0a551443 | 53 | #:use-module (gnu packages crypto) |
fa4f95a7 CB |
54 | #:use-module (gnu packages databases) |
55 | #:use-module (gnu packages documentation) | |
56 | #:use-module (gnu packages dns) | |
57 | #:use-module (gnu packages emacs) | |
255d1bbe | 58 | #:use-module (gnu packages dbm) |
90bb244f TLC |
59 | #:use-module (gnu packages gnome) |
60 | #:use-module (gnu packages glib) | |
df724c9c | 61 | #:use-module (gnu packages gnupg) |
fa4f95a7 CB |
62 | #:use-module (gnu packages graphviz) |
63 | #:use-module (gnu packages groff) | |
90bb244f | 64 | #:use-module (gnu packages gtk) |
fa4f95a7 CB |
65 | #:use-module (gnu packages libedit) |
66 | #:use-module (gnu packages libevent) | |
67 | #:use-module (gnu packages libunwind) | |
96f5e2e9 | 68 | #:use-module (gnu packages libusb) |
fa4f95a7 CB |
69 | #:use-module (gnu packages linux) |
70 | #:use-module (gnu packages multiprecision) | |
0a551443 | 71 | #:use-module (gnu packages networking) |
fa4f95a7 CB |
72 | #:use-module (gnu packages pkg-config) |
73 | #:use-module (gnu packages protobuf) | |
74 | #:use-module (gnu packages python) | |
cc6f4912 | 75 | #:use-module (gnu packages python-crypto) |
589e3f4e | 76 | #:use-module (gnu packages python-web) |
44d10b1f | 77 | #:use-module (gnu packages python-xyz) |
fa4f95a7 | 78 | #:use-module (gnu packages qt) |
1d0865c1 | 79 | #:use-module (gnu packages readline) |
9d0c291e | 80 | #:use-module (gnu packages sphinx) |
fa4f95a7 CB |
81 | #:use-module (gnu packages texinfo) |
82 | #:use-module (gnu packages textutils) | |
1ea8b3b1 | 83 | #:use-module (gnu packages time) |
fa4f95a7 CB |
84 | #:use-module (gnu packages tls) |
85 | #:use-module (gnu packages upnp) | |
fc54da1d | 86 | #:use-module (gnu packages version-control) |
fa4f95a7 CB |
87 | #:use-module (gnu packages web) |
88 | #:use-module (gnu packages xml) | |
89 | #:use-module (gnu packages gnuzilla)) | |
20c6b9da AE |
90 | |
91 | (define-public bitcoin-core | |
92 | (package | |
93 | (name "bitcoin-core") | |
1219a7cc | 94 | (version "0.18.1") |
20c6b9da AE |
95 | (source (origin |
96 | (method url-fetch) | |
97 | (uri | |
0a59cc6e | 98 | (string-append "https://bitcoincore.org/bin/bitcoin-core-" |
14ea30e4 | 99 | version "/bitcoin-" version ".tar.gz")) |
20c6b9da AE |
100 | (sha256 |
101 | (base32 | |
1219a7cc | 102 | "15mz0gmm058gmq2gdpffbw25jpv7mksyhyfws6i7mqvrapqr6zaw")))) |
20c6b9da AE |
103 | (build-system gnu-build-system) |
104 | (native-inputs | |
105 | `(("pkg-config" ,pkg-config) | |
1219a7cc TGR |
106 | ("python" ,python) ; for the tests |
107 | ("util-linux" ,util-linux) ; provides the hexdump command for tests | |
0193812a | 108 | ("qttools" ,qttools))) |
20c6b9da | 109 | (inputs |
1219a7cc | 110 | `(("bdb" ,bdb-4.8) ; 4.8 required for compatibility |
20c6b9da | 111 | ("boost" ,boost) |
14ea30e4 | 112 | ("libevent" ,libevent) |
20c6b9da AE |
113 | ("miniupnpc" ,miniupnpc) |
114 | ("openssl" ,openssl) | |
115 | ("protobuf" ,protobuf) | |
0193812a | 116 | ("qtbase" ,qtbase))) |
20c6b9da AE |
117 | (arguments |
118 | `(#:configure-flags | |
119 | (list | |
20c6b9da AE |
120 | ;; Boost is not found unless specified manually. |
121 | (string-append "--with-boost=" | |
0193812a MB |
122 | (assoc-ref %build-inputs "boost")) |
123 | ;; XXX: The configure script looks up Qt paths by | |
124 | ;; `pkg-config --variable=host_bins Qt5Core`, which fails to pick | |
125 | ;; up executables residing in 'qttools', so we specify them here. | |
126 | (string-append "ac_cv_path_LRELEASE=" | |
127 | (assoc-ref %build-inputs "qttools") | |
128 | "/bin/lrelease") | |
129 | (string-append "ac_cv_path_LUPDATE=" | |
130 | (assoc-ref %build-inputs "qttools") | |
131 | "/bin/lupdate")) | |
20c6b9da AE |
132 | #:phases |
133 | (modify-phases %standard-phases | |
99629e5a CD |
134 | (add-before 'configure 'make-qt-deterministic |
135 | (lambda _ | |
136 | ;; Make Qt deterministic. | |
137 | (setenv "QT_RCC_SOURCE_DATE_OVERRIDE" "1") | |
138 | #t)) | |
20c6b9da AE |
139 | (add-before 'check 'set-home |
140 | (lambda _ | |
1219a7cc | 141 | (setenv "HOME" (getenv "TMPDIR")) ; tests write to $HOME |
bcfc54ff CD |
142 | #t)) |
143 | (add-after 'check 'check-functional | |
144 | (lambda _ | |
145 | (invoke "python3" "./test/functional/test_runner.py" | |
146 | (string-append "--jobs=" (number->string (parallel-job-count)))) | |
0e9600cb | 147 | #t))))) |
20c6b9da AE |
148 | (home-page "https://bitcoin.org/en/") |
149 | (synopsis "Bitcoin peer-to-peer client") | |
150 | (description | |
151 | "Bitcoin is a digital currency that enables instant payments to anyone | |
152 | anywhere in the world. It uses peer-to-peer technology to operate without | |
153 | central authority: managing transactions and issuing money are carried out | |
154 | collectively by the network. Bitcoin Core is the reference implementation | |
155 | of the bitcoin protocol. This package provides the Bitcoin Core command | |
156 | line client and a client based on Qt.") | |
157 | (license license:expat))) | |
d3699b31 | 158 | |
66b707a7 SS |
159 | (define-public homebank |
160 | (package | |
161 | (name "homebank") | |
162 | (version "5.2.8") | |
163 | (source (origin | |
164 | (method url-fetch) | |
165 | (uri (string-append "http://homebank.free.fr/public/homebank-" | |
166 | version ".tar.gz")) | |
167 | (sha256 | |
168 | (base32 | |
169 | "13ampiv68y30kc0p2560g3yz8whqpwnidfcnb9lndv93b9ca767y")))) | |
170 | (build-system glib-or-gtk-build-system) | |
171 | (native-inputs | |
172 | `(("pkg-config" ,pkg-config) | |
173 | ("intltool" ,intltool))) | |
174 | (inputs | |
175 | `(("gtk+" ,gtk+) | |
176 | ("libsoup" ,libsoup))) | |
177 | (arguments | |
178 | `(#:configure-flags (list "-without-ofx"))) ; libofx is not available yet | |
179 | (home-page "http://homebank.free.fr/") | |
180 | (synopsis "Graphical personal accounting application") | |
181 | (description "HomeBank allows you to manage your personal accounts at | |
182 | home. The seeks to be lightweight, simple and easy to use. It brings | |
183 | features that allow you to analyze your finances in a detailed way instantly | |
184 | and dynamically with report tools based on filtering and graphical charts.") | |
185 | (license license:gpl2+))) | |
186 | ||
d3699b31 AG |
187 | (define-public ledger |
188 | (package | |
189 | (name "ledger") | |
9859800f | 190 | (version "3.1.3") |
8b7ac58c TGR |
191 | (source |
192 | (origin | |
193 | (method git-fetch) | |
194 | (uri (git-reference | |
195 | (url "https://github.com/ledger/ledger.git") | |
196 | (commit (string-append "v" version)))) | |
197 | (file-name (git-file-name name version)) | |
198 | (sha256 | |
9859800f | 199 | (base32 "0bfnrqrd6wqgsngfpqi30xh6yy86pwl25iwzrqy44q31r0zl4mm3")))) |
d3699b31 AG |
200 | (build-system cmake-build-system) |
201 | (arguments | |
f90ed028 | 202 | `(#:configure-flags |
d3699b31 AG |
203 | `("-DBUILD_DOCS:BOOL=ON" |
204 | "-DBUILD_WEB_DOCS:BOOL=ON" | |
d3699b31 | 205 | "-DUSE_PYTHON:BOOL=ON" |
f90ed028 | 206 | "-DCMAKE_INSTALL_LIBDIR:PATH=lib") |
d3699b31 AG |
207 | #:phases |
208 | (modify-phases %standard-phases | |
209 | (add-before 'configure 'install-examples | |
210 | (lambda* (#:key outputs #:allow-other-keys) | |
211 | (let ((examples (string-append (assoc-ref outputs "out") | |
212 | "/share/doc/ledger/examples"))) | |
213 | (install-file "test/input/sample.dat" examples) | |
214 | (install-file "test/input/demo.ledger" examples)) | |
215 | #t)) | |
216 | (add-after 'build 'build-doc | |
1f3c4ba8 | 217 | (lambda _ (invoke "make" "doc"))) |
d3699b31 AG |
218 | (add-before 'check 'check-setup |
219 | ;; One test fails if it can't set the timezone. | |
220 | (lambda* (#:key inputs #:allow-other-keys) | |
221 | (setenv "TZDIR" | |
222 | (string-append (assoc-ref inputs "tzdata") | |
223 | "/share/zoneinfo")) | |
f90ed028 RW |
224 | ;; Skip failing test BaselineTest_cmd-org. |
225 | ;; This is a known upstream issue. See | |
226 | ;; https://github.com/ledger/ledger/issues/550 | |
227 | (setenv "ARGS" "-E BaselineTest_cmd-org") | |
228 | #t))))) | |
d3699b31 AG |
229 | (inputs |
230 | `(("boost" ,boost) | |
231 | ("gmp" ,gmp) | |
232 | ("libedit" ,libedit) | |
233 | ("mpfr" ,mpfr) | |
234 | ("python" ,python-2) | |
235 | ("tzdata" ,tzdata) | |
236 | ("utfcpp" ,utfcpp))) | |
237 | (native-inputs | |
f90ed028 | 238 | `(("groff" ,groff) |
d3699b31 | 239 | ("texinfo" ,texinfo))) |
b53a0c88 | 240 | (home-page "https://ledger-cli.org/") |
d3699b31 AG |
241 | (synopsis "Command-line double-entry accounting program") |
242 | (description | |
243 | "Ledger is a powerful, double-entry accounting system that is | |
244 | accessed from the UNIX command-line. This may put off some users, since | |
245 | there is no flashy UI, but for those who want unparalleled reporting | |
246 | access to their data there are few alternatives. | |
247 | ||
248 | Ledger uses text files for input. It reads the files and generates | |
249 | reports; there is no other database or stored state. To use Ledger, | |
250 | you create a file of your account names and transactions, run from the | |
251 | command line with some options to specify input and requested reports, and | |
252 | get output. The output is generally plain text, though you could generate | |
253 | a graph or html instead. Ledger is simple in concept, surprisingly rich | |
254 | in ability, and easy to use.") | |
255 | ;; There are some extra licenses in files which do not presently get | |
256 | ;; installed when you build this package. Different versions of the GPL | |
257 | ;; are used in the contrib and python subdirectories. The bundled version | |
258 | ;; of utfcpp is under the Boost 1.0 license. Also the file | |
259 | ;; `tools/update_copyright_year` has an Expat license. | |
260 | (license (list license:bsd-3 | |
261 | license:asl2.0 ; src/strptime.cc | |
262 | (license:non-copyleft | |
263 | "file://src/wcwidth.cc" | |
f90ed028 | 264 | "See src/wcwidth.cc in the distribution."))))) |
cb0866c3 | 265 | |
0df201c0 RW |
266 | (define-public emacs-ledger-mode |
267 | ;; There have been no new releases since 2016. | |
268 | (let ((commit "253a20dc62e137ed0ed8e1dd8614ecba116610ea") | |
269 | (revision "1")) | |
270 | (package | |
271 | (name "emacs-ledger-mode") | |
272 | (version (git-version "3.1.1" revision commit)) | |
273 | (source | |
274 | (origin | |
275 | (method git-fetch) | |
276 | (uri (git-reference | |
277 | (url "https://github.com/ledger/ledger-mode.git") | |
278 | (commit commit))) | |
279 | (file-name (git-file-name name version)) | |
280 | (sha256 | |
281 | (base32 "06wrgkqpgvk17vibrk2qikdlqn8y63jg86marp1wgmram92mb3jk")))) | |
282 | (build-system cmake-build-system) | |
283 | (arguments | |
284 | `(#:modules ((guix build cmake-build-system) | |
285 | (guix build utils) | |
286 | (guix build emacs-utils)) | |
287 | #:imported-modules (,@%cmake-build-system-modules | |
288 | (guix build emacs-utils)) | |
289 | #:tests? #f ; there are none | |
290 | #:phases | |
291 | (modify-phases %standard-phases | |
2c50e52a BG |
292 | (add-after 'unpack 'patch-site-dir |
293 | (lambda _ | |
294 | (substitute* "CMakeLists.txt" | |
295 | (("DESTINATION share/emacs/site-lisp/ledger-mode") | |
296 | "DESTINATION share/emacs/site-lisp")) | |
297 | #t)) | |
1c0dd730 PN |
298 | (add-before 'build 'patch-path |
299 | (lambda* (#:key inputs #:allow-other-keys) | |
300 | (let ((ledger (assoc-ref inputs "ledger"))) | |
301 | (make-file-writable "ledger-exec.el") | |
302 | (emacs-substitute-variables "ledger-exec.el" | |
303 | ("ledger-binary-path" (string-append ledger "/bin/ledger")))) | |
304 | #t)) | |
0df201c0 RW |
305 | (add-after 'build 'build-doc |
306 | (lambda* (#:key outputs #:allow-other-keys) | |
307 | (let ((target (string-append (assoc-ref outputs "out") | |
308 | "/share/info"))) | |
309 | (mkdir-p target) | |
310 | (invoke "makeinfo" "-o" target | |
311 | "../source/doc/ledger-mode.texi")) | |
312 | #t)) | |
2c50e52a | 313 | (add-after 'install 'generate-autoload |
0df201c0 RW |
314 | (lambda* (#:key outputs #:allow-other-keys) |
315 | (let* ((site-dir (string-append (assoc-ref outputs "out") | |
2c50e52a BG |
316 | "/share/emacs/site-lisp"))) |
317 | (emacs-generate-autoloads ,name site-dir)) | |
318 | #t))))) | |
1c0dd730 PN |
319 | (inputs |
320 | `(("ledger" ,ledger))) | |
0df201c0 RW |
321 | (native-inputs |
322 | `(("emacs-minimal" ,emacs-minimal) | |
323 | ("texinfo" ,texinfo))) | |
324 | (home-page "https://ledger-cli.org/") | |
325 | (synopsis "Command-line double-entry accounting program") | |
326 | (description | |
327 | "Ledger is a powerful, double-entry accounting system that is | |
328 | accessed from the UNIX command-line. This may put off some users, since | |
329 | there is no flashy UI, but for those who want unparalleled reporting | |
330 | access to their data there are few alternatives. | |
331 | ||
332 | Ledger uses text files for input. It reads the files and generates | |
333 | reports; there is no other database or stored state. To use Ledger, | |
334 | you create a file of your account names and transactions, run from the | |
335 | command line with some options to specify input and requested reports, and | |
336 | get output. The output is generally plain text, though you could generate | |
337 | a graph or html instead. Ledger is simple in concept, surprisingly rich | |
338 | in ability, and easy to use. | |
339 | ||
340 | This package provides the Emacs mode.") | |
341 | (license license:gpl2+)))) | |
342 | ||
cb0866c3 HG |
343 | (define-public geierlein |
344 | (package | |
345 | (name "geierlein") | |
1c21e734 | 346 | (version "0.9.13") |
cb0866c3 HG |
347 | (source |
348 | (origin | |
1fd71120 TGR |
349 | (method git-fetch) |
350 | (uri (git-reference | |
351 | (url "https://github.com/stesie/geierlein.git") | |
352 | (commit (string-append "V" version)))) | |
353 | (file-name (git-file-name name version)) | |
cb0866c3 | 354 | (sha256 |
1fd71120 | 355 | (base32 "00zpwr3lk2vdmd60fgdwdk0xxs52wvnm19ln2m75yfphydvkglic")))) |
cb0866c3 HG |
356 | (build-system gnu-build-system) |
357 | (arguments | |
1fd71120 | 358 | `(#:tests? #f ; would require npm, python and a lot more |
cb0866c3 HG |
359 | #:phases |
360 | (modify-phases %standard-phases | |
1c21e734 | 361 | (delete 'configure) ; no configure script |
cb0866c3 HG |
362 | (add-after 'unpack 'override-target-directory-and-tool-paths |
363 | (lambda* (#:key inputs outputs #:allow-other-keys) | |
364 | (substitute* "Makefile" | |
365 | (("prefix := .*") | |
366 | (string-append "prefix := " (assoc-ref outputs "out") "\n")) | |
367 | ;; Required for tests, unused for now: | |
368 | ;;(("PYTHON := .*") | |
369 | ;; (string-append (which "python") "\n"))) | |
370 | (("INSTALL := .*") | |
371 | (string-append "INSTALL := " (which "install") "\n"))) | |
372 | (substitute* "bin/xgeierlein.in" | |
373 | ;; Use icecat as XULRUNNER | |
374 | (("^for search ") | |
375 | (string-append "XULRUNNER=" (which "icecat") "\n" | |
376 | "for search "))) | |
377 | #t))))) | |
378 | (inputs | |
379 | `(("icecat" ,icecat))) | |
1e41bb1b | 380 | (home-page "https://stesie.github.io/geierlein/") |
cb0866c3 HG |
381 | (synopsis "Free Elster client, for sending Germany VAT declarations") |
382 | (description | |
383 | "Geierlein is a free Elster client, i.e. an application that | |
384 | allows to send VAT declarations to Germany's fiscal authorities. | |
385 | ||
386 | Currently it is *not* possible to send returns that are due annually | |
387 | (especially the income tax return) since the fiscal authority doesn't | |
388 | allow to do that off the ERiC library (which is proprietary however). | |
389 | It's not clear at the moment whether one day it will be possible to | |
390 | do so.") | |
391 | (license license:agpl3+))) | |
9475fd92 CZ |
392 | |
393 | (define-public electrum | |
394 | (package | |
395 | (name "electrum") | |
fae0a777 | 396 | (version "3.3.8") |
9475fd92 CZ |
397 | (source |
398 | (origin | |
399 | (method url-fetch) | |
400 | (uri (string-append "https://download.electrum.org/" | |
401 | version "/Electrum-" | |
402 | version ".tar.gz")) | |
403 | (sha256 | |
fae0a777 | 404 | (base32 "1g00cj1pmckd4xis8r032wmraiv3vd3zc803hnyxa2bnhj8z3bg2")) |
9475fd92 CZ |
405 | (modules '((guix build utils))) |
406 | (snippet | |
407 | '(begin | |
408 | ;; Delete the bundled dependencies. | |
409 | (delete-file-recursively "packages") | |
410 | #t)))) | |
411 | (build-system python-build-system) | |
412 | (inputs | |
47bd32d9 CZ |
413 | `(("python-pyaes" ,python-pyaes) |
414 | ("python-pysocks" ,python-pysocks) | |
415 | ("python-sip" ,python-sip) | |
416 | ("python-pyqt" ,python-pyqt) | |
417 | ("python-ecdsa" ,python-ecdsa) | |
418 | ("python-pbkdf2" ,python-pbkdf2) | |
419 | ("python-requests" ,python-requests) | |
420 | ("python-qrcode" ,python-qrcode) | |
421 | ("python-protobuf" ,python-protobuf) | |
81d59f44 VC |
422 | ("python-aiohttp" ,python-aiohttp) |
423 | ("python-aiohttp-socks" ,python-aiohttp-socks) | |
424 | ("python-aiorpcx" ,python-aiorpcx) | |
425 | ("python-certifi" ,python-certifi) | |
47bd32d9 CZ |
426 | ("python-dnspython" ,python-dnspython) |
427 | ("python-jsonrpclib-pelix" ,python-jsonrpclib-pelix))) | |
9475fd92 | 428 | (arguments |
47bd32d9 | 429 | `(#:tests? #f ;; package doesn't have any tests |
9475fd92 CZ |
430 | #:phases |
431 | (modify-phases %standard-phases | |
432 | (add-before 'build 'patch-home | |
433 | (lambda* (#:key outputs #:allow-other-keys) | |
434 | (substitute* "setup.py" | |
435 | (("~/.local/share") | |
436 | (string-append (assoc-ref outputs "out") "/local/share")))))))) | |
437 | (home-page "https://electrum.org/") | |
438 | (synopsis "Bitcoin wallet") | |
439 | (description | |
440 | "Electrum is a lightweight Bitcoin client, based on a client-server | |
441 | protocol. It supports Simple Payment Verification (SPV) and deterministic key | |
442 | generation from a seed. Your secret keys are encrypted and are never sent to | |
443 | other machines/servers. Electrum does not download the Bitcoin blockchain.") | |
444 | (license license:expat))) | |
8514662b | 445 | |
a0bb0217 VC |
446 | (define-public electron-cash |
447 | (package | |
448 | (inherit electrum) | |
449 | (name "electron-cash") | |
d08c3e51 | 450 | (version "4.0.12") |
a0bb0217 VC |
451 | (source |
452 | (origin | |
d08c3e51 VC |
453 | (method git-fetch) |
454 | (uri (git-reference | |
455 | (url "https://github.com/Electron-Cash/Electron-Cash.git") | |
456 | (commit version))) | |
457 | (file-name (git-file-name name version)) | |
a0bb0217 VC |
458 | (sha256 |
459 | (base32 | |
d08c3e51 | 460 | "0gidrx8499v7rig7ljhd70wssshs1qm0gp1553g70i323hcbf62x")))) |
1ea8b3b1 VC |
461 | (inputs |
462 | `(,@(package-inputs electrum) | |
d08c3e51 | 463 | ("libsecp256k1", libsecp256k1) |
1ea8b3b1 VC |
464 | ("python-dateutil", python-dateutil) |
465 | ("python-dnspython", python-dnspython))) | |
d08c3e51 | 466 | (arguments |
e5c32a3a VC |
467 | (substitute-keyword-arguments (package-arguments electrum) |
468 | ((#:phases phases) | |
469 | `(modify-phases ,phases | |
470 | (add-after 'unpack 'use-libsecp256k1-input | |
471 | (lambda* (#:key inputs #:allow-other-keys) | |
472 | (substitute* "lib/secp256k1.py" | |
473 | (("library_paths = .* 'libsecp256k1.so.0'.") | |
474 | (string-append "library_paths = ('" (assoc-ref inputs "libsecp256k1") "/lib/libsecp256k1.so.0'"))))))))) | |
a0bb0217 VC |
475 | (home-page "https://electroncash.org/") |
476 | (synopsis "Bitcoin Cash wallet") | |
477 | (description | |
478 | "Electroncash is a lightweight Bitcoin Cash client, based on a client-server | |
479 | protocol. It supports Simple Payment Verification (SPV) and deterministic key | |
480 | generation from a seed. Your secret keys are encrypted and are never sent to | |
481 | other machines/servers. Electroncash does not download the Bitcoin Cash blockchain.") | |
482 | (license license:expat))) | |
483 | ||
8514662b TF |
484 | (define-public monero |
485 | ;; This package bundles easylogging++ and lmdb. | |
fc54da1d GLV |
486 | ;; The bundled easylogging++ is modified, and the changes will not be |
487 | ;; upstreamed. | |
8514662b TF |
488 | ;; The devs deem the lmdb driver too critical a consenus component, to use |
489 | ;; the system's dynamically linked library. | |
490 | (package | |
491 | (name "monero") | |
182173b1 | 492 | (version "0.15.0.1") |
8514662b TF |
493 | (source |
494 | (origin | |
0a551443 TF |
495 | (method git-fetch) |
496 | (uri (git-reference | |
fc54da1d GLV |
497 | (url "https://github.com/monero-project/monero.git") |
498 | (commit (string-append "v" version)) | |
499 | (recursive? #t))) | |
136ff9a2 | 500 | (file-name (git-file-name name version)) |
0a551443 | 501 | (patches (search-patches "monero-use-system-miniupnpc.patch")) |
fc54da1d GLV |
502 | (modules '((guix build utils))) |
503 | (snippet | |
504 | '(begin | |
505 | ;; Delete bundled dependencies. | |
506 | (for-each | |
507 | delete-file-recursively | |
508 | '("external/miniupnp" "external/rapidjson" | |
509 | "external/unbound")) | |
510 | #t)) | |
8514662b TF |
511 | (sha256 |
512 | (base32 | |
182173b1 | 513 | "0sypa235lf2bbib4b71xpaw39h9304slgsvnsz8wmy9fq1zx009m")))) |
8514662b TF |
514 | (build-system cmake-build-system) |
515 | (native-inputs | |
516 | `(("doxygen" ,doxygen) | |
fc54da1d | 517 | ("git" ,git) |
8514662b | 518 | ("graphviz" ,graphviz) |
fc54da1d | 519 | ("pkg-config" ,pkg-config) |
b7a07bbd GLV |
520 | ("protobuf" ,protobuf) |
521 | ("python" ,python) | |
fc54da1d | 522 | ("qttools" ,qttools))) |
8514662b | 523 | (inputs |
fc54da1d | 524 | `(("boost" ,boost) |
0a551443 | 525 | ("cppzmq" ,cppzmq) |
8514662b | 526 | ("expat" ,expat) |
fc54da1d | 527 | ("hidapi" ,hidapi) |
fc54da1d | 528 | ("libsodium" ,libsodium) |
b7a07bbd GLV |
529 | ("libunwind" ,libunwind) |
530 | ("libusb" ,libusb) | |
fc54da1d | 531 | ("miniupnpc" ,miniupnpc) |
8514662b | 532 | ("openssl" ,openssl) |
b7a07bbd | 533 | ("protobuf" ,protobuf) |
8514662b | 534 | ("rapidjson" ,rapidjson) |
fc54da1d GLV |
535 | ("readline" ,readline) |
536 | ("unbound" ,unbound) | |
537 | ("xz" ,xz) | |
538 | ("zeromq" ,zeromq))) | |
8514662b TF |
539 | (arguments |
540 | `(#:out-of-source? #t | |
44554d86 GLV |
541 | #:configure-flags |
542 | (list "-DARCH=default" | |
543 | "-DBUILD_TESTS=ON" | |
544 | "-DBUILD_GUI_DEPS=ON" | |
545 | (string-append "-DReadline_ROOT_DIR=" | |
546 | (assoc-ref %build-inputs "readline"))) | |
8514662b TF |
547 | #:phases |
548 | (modify-phases %standard-phases | |
549 | ;; tests/core_tests need a valid HOME | |
550 | (add-before 'configure 'set-home | |
551 | (lambda _ | |
552 | (setenv "HOME" (getcwd)) | |
553 | #t)) | |
fc54da1d | 554 | (add-after 'set-home 'change-log-path |
8514662b TF |
555 | (lambda _ |
556 | (substitute* "contrib/epee/src/mlog.cpp" | |
557 | (("epee::string_tools::get_current_module_folder\\(\\)") | |
fc54da1d GLV |
558 | "\".bitmonero\"") |
559 | (("return \\(") | |
560 | "return ((std::string(getenv(\"HOME\"))) / ")) | |
8514662b | 561 | #t)) |
f8f2a944 GLV |
562 | (add-after 'change-log-path 'fix-file-permissions-for-tests |
563 | (lambda _ | |
564 | (for-each make-file-writable | |
565 | (find-files "tests/data/" "wallet_9svHk1.*")) | |
566 | #t)) | |
fc54da1d | 567 | ;; Only try tests that don't need access to network or system |
8514662b TF |
568 | (replace 'check |
569 | (lambda _ | |
cb45aad9 | 570 | (invoke "make" "ARGS=-R 'hash|core_tests' --verbose" "test"))) |
8514662b TF |
571 | (add-after 'check 'unit-tests |
572 | (lambda _ | |
573 | (let ((excluded-unit-tests | |
574 | (string-join | |
575 | '("AddressFromURL.Success" | |
576 | "AddressFromURL.Failure" | |
577 | "DNSResolver.IPv4Success" | |
578 | "DNSResolver.DNSSECSuccess" | |
579 | "DNSResolver.DNSSECFailure" | |
fc54da1d | 580 | "DNSResolver.GetTXTRecord" |
fc54da1d | 581 | "is_hdd.linux_os_root") |
8514662b | 582 | ":"))) |
797445be TF |
583 | (invoke "tests/unit_tests/unit_tests" |
584 | (string-append "--gtest_filter=-" | |
b7a07bbd | 585 | excluded-unit-tests))))) |
df90b6e7 GLV |
586 | (add-after 'install 'install-librandomx |
587 | (lambda* (#:key outputs #:allow-other-keys) | |
588 | (let ((lib (string-append (assoc-ref outputs "out") "/lib"))) | |
589 | (install-file "external/randomx/librandomx.a" lib) | |
590 | #t))) | |
b7a07bbd GLV |
591 | (add-after 'install 'delete-dead-links |
592 | (lambda* (#:key outputs #:allow-other-keys) | |
593 | (let ((out (assoc-ref outputs "out"))) | |
594 | (delete-file (string-append out "/lib/libprotobuf.so")) | |
595 | (delete-file (string-append out "/lib/libusb-1.0.so")) | |
596 | #t)))))) | |
df90b6e7 | 597 | (home-page "https://web.getmonero.org/") |
8514662b TF |
598 | (synopsis "Command-line interface to the Monero currency") |
599 | (description | |
fc54da1d GLV |
600 | "Monero is a secure, private, untraceable currency. This package provides |
601 | the Monero command line client and daemon.") | |
8514662b | 602 | (license license:bsd-3))) |
79228a52 | 603 | |
f7e24839 | 604 | (define-public monero-gui |
79228a52 | 605 | (package |
f7e24839 | 606 | (name "monero-gui") |
230e5db7 | 607 | (version "0.15.0.3") |
79228a52 TF |
608 | (source |
609 | (origin | |
3902bc5c TF |
610 | (method git-fetch) |
611 | (uri (git-reference | |
1362e529 | 612 | (url "https://github.com/monero-project/monero-gui.git") |
3902bc5c | 613 | (commit (string-append "v" version)))) |
398a96a2 | 614 | (file-name (git-file-name name version)) |
79228a52 TF |
615 | (sha256 |
616 | (base32 | |
230e5db7 GLV |
617 | "1v2mk6qp7dfdj4j4cilxp0s0phfwwnmjvpvjrz6jzzlpvbnavkr0")))) |
618 | (build-system qt-build-system) | |
79228a52 | 619 | (native-inputs |
1362e529 | 620 | `(("pkg-config" ,pkg-config) |
6915d20f | 621 | ("qttools" ,qttools))) |
79228a52 TF |
622 | (inputs |
623 | `(("boost" ,boost) | |
1362e529 | 624 | ("hidapi" ,hidapi) |
1362e529 | 625 | ("libsodium" ,libsodium) |
b7a07bbd GLV |
626 | ("libunwind" ,libunwind) |
627 | ("libusb" ,libusb) | |
79228a52 | 628 | ("openssl" ,openssl) |
b7a07bbd | 629 | ("protobuf" ,protobuf) |
6915d20f EF |
630 | ("qtbase" ,qtbase) |
631 | ("qtdeclarative" ,qtdeclarative) | |
632 | ("qtgraphicaleffects" ,qtgraphicaleffects) | |
1362e529 GLV |
633 | ("qtlocation" ,qtlocation) |
634 | ("qtmultimedia" ,qtmultimedia) | |
6915d20f | 635 | ("qtquickcontrols" ,qtquickcontrols) |
1362e529 GLV |
636 | ("qtquickcontrols2",qtquickcontrols2) |
637 | ("qtsvg" ,qtsvg) | |
1362e529 | 638 | ("qtxmlpatterns" ,qtxmlpatterns) |
79228a52 TF |
639 | ("unbound" ,unbound))) |
640 | (propagated-inputs | |
641 | `(("monero" ,monero))) | |
642 | (arguments | |
230e5db7 | 643 | `(#:tests? #f ; No tests |
1362e529 | 644 | #:phases |
79228a52 | 645 | (modify-phases %standard-phases |
230e5db7 | 646 | (add-after 'unpack 'fix-makefile-vars |
79228a52 TF |
647 | (lambda _ |
648 | (substitute* "src/zxcvbn-c/makefile" | |
649 | (("\\?=") "=")) | |
650 | #t)) | |
230e5db7 GLV |
651 | (add-after 'fix-makefile-vars 'fix-paths |
652 | (lambda* (#:key inputs outputs #:allow-other-keys) | |
653 | (let ((boost (assoc-ref inputs "boost")) | |
654 | (monero (assoc-ref inputs "monero")) | |
655 | (openssl (assoc-ref inputs "openssl")) | |
656 | (qttools (assoc-ref inputs "qttools")) | |
657 | (out (assoc-ref outputs "out"))) | |
658 | (substitute* "monero-wallet-gui.pro" | |
659 | (("-L/usr/local/lib") | |
660 | "") | |
661 | (("-L/usr/local/opt/openssl/lib") | |
662 | (string-append "-L" openssl "/lib")) | |
663 | (("-L/usr/local/opt/boost/lib") | |
664 | (string-append "-L" boost "/lib")) | |
665 | (("\\$\\$\\[QT_INSTALL_BINS\\]/lrelease") | |
666 | (string-append qttools "/bin/lrelease")) | |
667 | (("\\$\\$\\[QT_INSTALL_BINS\\]/lupdate") | |
668 | (string-append qttools "/bin/lupdate"))) | |
669 | (substitute* "deployment.pri" | |
670 | (("/opt/\\$\\$\\{TARGET\\}/bin") | |
671 | (string-append out "/bin"))) | |
672 | (substitute* "src/daemon/DaemonManager.cpp" | |
673 | (("QApplication::applicationDirPath\\(\\) \\+ \"/monerod") | |
674 | (string-append "\"" monero "/bin/monerod"))) | |
675 | #t))) | |
676 | (add-after 'fix-paths 'make-qt-deterministic | |
1362e529 GLV |
677 | (lambda _ |
678 | (setenv "QT_RCC_SOURCE_DATE_OVERRIDE" "1") | |
679 | #t)) | |
680 | (add-after 'make-qt-deterministic 'fix-version | |
681 | (lambda _ | |
682 | (substitute* "build.sh" | |
683 | (("echo .*> version.js") | |
684 | "")) | |
685 | (with-output-to-file "version.js" | |
686 | (lambda _ | |
687 | (format #t | |
688 | "var GUI_VERSION = \"~a\"~@ | |
689 | var GUI_MONERO_VERSION = \"~a\"~%" | |
690 | ,version | |
691 | ,(package-version monero)))) | |
692 | #t)) | |
230e5db7 | 693 | (replace 'configure |
79228a52 | 694 | (lambda _ |
230e5db7 | 695 | (mkdir-p "build") |
1362e529 | 696 | (chdir "build") |
230e5db7 GLV |
697 | (invoke "qmake" "../monero-wallet-gui.pro" "CONFIG+=release"))) |
698 | (add-before 'build 'build-zxcvbn-c | |
699 | (lambda _ | |
700 | (invoke "make" "-C" "../src/zxcvbn-c")))))) | |
61fe56fc | 701 | (home-page "https://web.getmonero.org/") |
79228a52 TF |
702 | (synopsis "Graphical user interface for the Monero currency") |
703 | (description | |
1362e529 GLV |
704 | "Monero is a secure, private, untraceable currency. This package provides |
705 | the Monero GUI client.") | |
79228a52 | 706 | (license license:bsd-3))) |
00d3f022 | 707 | |
f7e24839 TF |
708 | (define-public monero-core |
709 | (deprecated-package "monero-core" monero-gui)) | |
710 | ||
00d3f022 DM |
711 | (define-public python-trezor-agent |
712 | (package | |
713 | (name "python-trezor-agent") | |
37cff994 | 714 | (version "0.13.1") |
00d3f022 DM |
715 | (source |
716 | (origin | |
39a7b720 TGR |
717 | (method git-fetch) |
718 | (uri (git-reference | |
719 | (url "https://github.com/romanz/trezor-agent.git") | |
720 | (commit (string-append "v" version)))) | |
721 | (file-name (git-file-name name version)) | |
00d3f022 | 722 | (sha256 |
37cff994 | 723 | (base32 "0q99vbfd3h85s8rnjipnmldixabqmmlk5w9karv6f0rhyi54f4zv")))) |
00d3f022 DM |
724 | (build-system python-build-system) |
725 | (arguments | |
726 | `(#:phases | |
727 | (modify-phases %standard-phases | |
df724c9c VC |
728 | (add-after 'unpack 'remove-requires-backports-shutil-which |
729 | ;; Remove requires on backport of shutil_which, as python 3.4+ has | |
730 | ;; a built-in implementation supported in python-trezor-agent. | |
731 | (lambda _ | |
732 | (substitute* "setup.py" | |
733 | (("'backports.shutil_which>=3.5.1',") "")) | |
734 | #t)) | |
00d3f022 DM |
735 | (delete 'check) |
736 | (add-after 'install 'check | |
737 | (lambda* (#:key outputs inputs #:allow-other-keys) | |
39a7b720 | 738 | ;; Make installed package available for running the tests. |
00d3f022 DM |
739 | (add-installed-pythonpath inputs outputs) |
740 | (invoke "py.test")))))) | |
741 | (propagated-inputs | |
df724c9c VC |
742 | `(("python-configargparse" ,python-configargparse) |
743 | ("python-daemon" ,python-daemon) | |
744 | ("python-docutils" ,python-docutils) | |
745 | ("python-ecdsa" ,python-ecdsa) | |
00d3f022 | 746 | ("python-ed25519" ,python-ed25519) |
df724c9c VC |
747 | ("python-mnemonic" ,python-mnemonic) |
748 | ("python-pymsgbox" ,python-pymsgbox) | |
00d3f022 | 749 | ("python-semver" ,python-semver) |
df724c9c VC |
750 | ("python-unidecode" ,python-unidecode) |
751 | ("python-wheel" ,python-wheel))) | |
00d3f022 | 752 | (native-inputs |
df724c9c VC |
753 | `(("gnupg" ,gnupg) |
754 | ("python-mock" ,python-mock) | |
00d3f022 DM |
755 | ("python-pytest" ,python-pytest))) |
756 | (home-page "https://github.com/romanz/trezor-agent") | |
df724c9c | 757 | (synopsis "Use hardware wallets as SSH and GPG agent") |
00d3f022 DM |
758 | (description |
759 | "@code{libagent} is a library that allows using TREZOR, Keepkey and | |
760 | Ledger Nano as a hardware SSH/GPG agent.") | |
761 | (license license:lgpl3))) | |
762 | ||
6e9749ef DM |
763 | (define-public python-mnemonic |
764 | (package | |
765 | (name "python-mnemonic") | |
011ec062 | 766 | (version "0.19") |
6e9749ef DM |
767 | (source |
768 | (origin | |
769 | (method url-fetch) | |
770 | (uri (pypi-uri "mnemonic" version)) | |
771 | (sha256 | |
011ec062 | 772 | (base32 "0cd9prmdj8wzdmc7lxbf9lz0xrlkvak5ignag406mmfbn81fndsf")))) |
6e9749ef DM |
773 | (build-system python-build-system) |
774 | (propagated-inputs | |
775 | `(("python-pbkdf2" ,python-pbkdf2))) | |
776 | (home-page "https://github.com/trezor/python-mnemonic") | |
777 | (synopsis "Implementation of Bitcoin BIP-0039") | |
778 | (description "@code{mnemonic} is a library that provides an implementation | |
779 | of Bitcoin BIP-0039.") | |
780 | (license license:expat))) | |
781 | ||
782 | (define-public python2-mnemonic | |
783 | (package-with-python2 python-mnemonic)) | |
96f5e2e9 DM |
784 | |
785 | (define-public python-ledgerblue | |
786 | (package | |
787 | (name "python-ledgerblue") | |
788 | (version "0.1.16") | |
789 | (source | |
790 | (origin | |
791 | (method url-fetch) | |
792 | (uri (pypi-uri "ledgerblue" version)) | |
793 | (sha256 | |
794 | (base32 | |
795 | "010mghaqh1cmz3a0ifc3f40mmyplilwlw7kpha2mzyrrff46p9gb")))) | |
796 | (build-system python-build-system) | |
797 | (propagated-inputs | |
798 | `(("python-ecpy" ,python-ecpy) | |
799 | ("python-future" ,python-future) | |
800 | ("python-hidapi" ,python-hidapi) | |
801 | ("python-pillow" ,python-pillow) | |
802 | ("python-protobuf" ,python-protobuf) | |
803 | ("python-pycrypto" ,python-pycrypto))) | |
804 | (home-page "https://github.com/LedgerHQ/blue-loader-python") | |
805 | (synopsis "Python library to communicate with Ledger Blue/Nano S") | |
806 | (description "@code{ledgerblue} is a Python library to communicate with | |
807 | Ledger Blue/Nano S.") | |
808 | (license license:asl2.0))) | |
809 | ||
810 | (define-public python2-ledgerblue | |
811 | (package-with-python2 python-ledgerblue)) | |
812 | ||
1dca32e3 DM |
813 | (define-public python-trezor |
814 | (package | |
815 | (name "python-trezor") | |
61497aa4 | 816 | (version "0.11.3") |
1dca32e3 DM |
817 | (source |
818 | (origin | |
819 | (method url-fetch) | |
820 | (uri (pypi-uri "trezor" version)) | |
821 | (sha256 | |
822 | (base32 | |
61497aa4 | 823 | "0211m027vlvyqy83kwbjjjxalb04xgf1klv0h0y0f0yhj07516n7")))) |
1dca32e3 | 824 | (build-system python-build-system) |
b4c698c8 VC |
825 | (arguments |
826 | `(#:phases | |
827 | (modify-phases %standard-phases | |
828 | ;; Default tests run device-specific tests which fail, only run specific tests. | |
829 | (replace 'check | |
830 | (lambda* (#:key inputs outputs #:allow-other-keys) | |
8c16b8a4 VC |
831 | ;; Delete tests that require network access. |
832 | (delete-file "trezorlib/tests/unit_tests/test_tx_api.py") | |
833 | (invoke "python" "-m" "pytest" "--pyarg" "trezorlib.tests.unit_tests")))))) | |
1dca32e3 | 834 | (propagated-inputs |
b4c698c8 | 835 | `(("python-click" ,python-click) |
8c16b8a4 | 836 | ("python-construct" ,python-construct) |
b4c698c8 | 837 | ("python-ecdsa" ,python-ecdsa) |
b4c698c8 | 838 | ("python-libusb1" ,python-libusb1) |
1dca32e3 | 839 | ("python-mnemonic" ,python-mnemonic) |
b4c698c8 VC |
840 | ("python-pyblake2" ,python-pyblake2) |
841 | ("python-requests" ,python-requests) | |
8c16b8a4 | 842 | ("python-typing-extensions" ,python-typing-extensions))) |
1dca32e3 | 843 | (native-inputs |
61497aa4 TGR |
844 | ;; For tests. |
845 | `(("protobuf" ,protobuf) | |
846 | ("python-black" ,python-black) | |
847 | ("python-protobuf" ,python-protobuf) | |
848 | ("python-isort" ,python-isort) | |
849 | ("python-pyqt" ,python-pyqt) | |
850 | ("python-pytest" ,python-pytest))) | |
1dca32e3 DM |
851 | (home-page "https://github.com/trezor/python-trezor") |
852 | (synopsis "Python library for communicating with TREZOR Hardware Wallet") | |
853 | (description "@code{trezor} is a Python library for communicating with | |
854 | TREZOR Hardware Wallet.") | |
855 | (license license:lgpl3))) | |
856 | ||
d6ddeffc DM |
857 | (define-public python-keepkey |
858 | (package | |
859 | (name "python-keepkey") | |
52311b51 | 860 | (version "6.0.3") |
d6ddeffc DM |
861 | (source |
862 | (origin | |
863 | (method url-fetch) | |
864 | (uri (pypi-uri "keepkey" version)) | |
865 | (sha256 | |
866 | (base32 | |
52311b51 | 867 | "0z3d0m6364v9dv0njs4cd5m5ai6j6v35xaaxfxl90m9vmyxy81vd")))) |
d6ddeffc DM |
868 | (build-system python-build-system) |
869 | (arguments | |
870 | `(#:phases | |
871 | (modify-phases %standard-phases | |
872 | (delete 'check) | |
873 | (add-after 'install 'check | |
874 | (lambda* (#:key inputs outputs #:allow-other-keys) | |
875 | (add-installed-pythonpath inputs outputs) | |
876 | (apply invoke "python" (find-files "tests/unit" "\\.py$"))))))) | |
877 | (propagated-inputs | |
878 | `(("python-ecdsa" ,python-ecdsa) | |
879 | ("python-hidapi" ,python-hidapi) | |
02d9e5d2 | 880 | ("python-libusb1" ,python-libusb1) |
d6ddeffc DM |
881 | ("python-mnemonic" ,python-mnemonic) |
882 | ("python-protobuf" ,python-protobuf))) | |
883 | (home-page "https://github.com/keepkey/python-keepkey") | |
884 | (synopsis "Python library for communicating with KeepKey Hardware Wallet") | |
885 | (description "@code{keepkey} is a Python library for communicating with | |
886 | the KeepKey Hardware Wallet.") | |
887 | (license license:lgpl3))) | |
888 | ||
889 | (define-public python2-keepkey | |
890 | (package-with-python2 python-keepkey)) | |
891 | ||
d596fea5 DM |
892 | (define-public ledger-agent |
893 | (package | |
894 | (name "ledger-agent") | |
895 | (version "0.9.0") | |
896 | (source | |
897 | (origin | |
898 | (method url-fetch) | |
899 | (uri (pypi-uri "ledger_agent" version)) | |
900 | (sha256 | |
901 | (base32 | |
902 | "03zj602m2rln9yvr08dswy56vzkbldp8b074ixwzz525dafblr92")))) | |
903 | (build-system python-build-system) | |
904 | (inputs | |
905 | `(("python-ledgerblue" ,python-ledgerblue) | |
906 | ("python-trezor-agent" ,python-trezor-agent))) | |
907 | (home-page "http://github.com/romanz/trezor-agent") | |
908 | (synopsis "Ledger as hardware SSH/GPG agent") | |
909 | (description "This package allows using Ledger as hardware SSH/GPG agent. | |
910 | ||
5859fd6c MB |
911 | Usage for SSH: trezor-agent foo@@example.com --connect |
912 | Usage for GPG: Initialize using trezor-gpg init \"Foo <foo@@example.com>\" | |
d596fea5 DM |
913 | Then set the environment variable GNUPGHOME to |
914 | \"${HOME}/.gnupg/trezor\".") | |
915 | (license license:lgpl3))) | |
47c8ea99 DM |
916 | |
917 | (define-public trezor-agent | |
918 | (package | |
919 | (name "trezor-agent") | |
7fafdadd | 920 | (version "0.10.0") |
47c8ea99 DM |
921 | (source |
922 | (origin | |
923 | (method url-fetch) | |
924 | (uri (pypi-uri "trezor_agent" version)) | |
925 | (sha256 | |
926 | (base32 | |
7fafdadd VC |
927 | "144657c7bn0a667dq5fv5r6j7iilxf3h9agj29v1m2qpq40g0az8")))) |
928 | (arguments | |
929 | ;; Tests fail with "AttributeError: module 'attr' has no attribute 's'". | |
930 | `(#:phases | |
931 | (modify-phases %standard-phases | |
932 | (add-after 'wrap 'fixup-agent-py | |
933 | (lambda* (#:key inputs outputs #:allow-other-keys) | |
934 | (let* ((out (assoc-ref outputs "out"))) | |
935 | ;; overwrite the wrapper with the real thing. | |
936 | (install-file "./trezor_agent.py" | |
937 | (string-append out "/bin")) | |
938 | #t)))))) | |
47c8ea99 DM |
939 | (build-system python-build-system) |
940 | (inputs | |
941 | `(("python-trezor" ,python-trezor) | |
942 | ("python-trezor-agent" ,python-trezor-agent))) | |
7fafdadd VC |
943 | (native-inputs |
944 | `(("python-hidapi" ,python-hidapi))) | |
945 | (home-page "https://github.com/romanz/trezor-agent") | |
47c8ea99 DM |
946 | (synopsis "Using Trezor as hardware SSH/GPG agent") |
947 | (description "This package allows using Trezor as a hardware SSH/GPG | |
948 | agent.") | |
949 | (license license:lgpl3))) | |
50c4d676 DM |
950 | |
951 | (define-public keepkey-agent | |
952 | (package | |
953 | (name "keepkey-agent") | |
954 | (version "0.9.0") | |
955 | (source | |
956 | (origin | |
957 | (method url-fetch) | |
958 | (uri (pypi-uri "keepkey_agent" version)) | |
959 | (sha256 | |
960 | (base32 | |
961 | "03779gvlx70i0nnry98i4pl1d92604ix5x6jgdfkrdgzqbh5vj27")))) | |
962 | (build-system python-build-system) | |
963 | (inputs | |
964 | `(("python-keepkey" ,python-keepkey) | |
965 | ("python-trezor-agent" ,python-trezor-agent))) | |
966 | (home-page "http://github.com/romanz/trezor-agent") | |
967 | (synopsis "KeepKey as hardware SSH/GPG agent") | |
968 | (description "This package allows using KeepKey as a hardware SSH/GPG | |
969 | agent.") | |
970 | (license license:lgpl3))) | |
3da86c52 AP |
971 | |
972 | (define-public python-stdnum | |
973 | (package | |
974 | (name "python-stdnum") | |
975 | (version "1.8.1") | |
976 | (source | |
977 | (origin | |
978 | (method url-fetch) | |
979 | (uri (pypi-uri "python-stdnum" version)) | |
980 | (sha256 | |
981 | (base32 | |
982 | "0hvr47q32xbyiznpmbg4r8rcvxhnf0lwf33hcpnynyik57djy5np")))) | |
983 | (build-system python-build-system) | |
984 | (home-page | |
985 | "https://arthurdejong.org/python-stdnum/") | |
986 | (synopsis | |
987 | "Python module to handle standardized number and code formats") | |
988 | (description | |
989 | "This is a Python library that aims to provide functions to handle, | |
990 | parse and validate standard numbers. | |
991 | The module supports more than 100 different number formats | |
992 | amongst which a great number of VAT and other tax numbers, | |
993 | personal identity and company identification codes, | |
994 | international standard numbers (ISBN, IBAN, EAN, etc.) | |
995 | and various other formats. | |
996 | The module also inclused implementations of the Verhoeff, | |
997 | Luhn and family of ISO/IEC 7064 check digit algorithms. ") | |
998 | (license license:lgpl2.1+))) | |
999 | ||
1000 | (define-public python2-stdnum | |
1001 | (package-with-python2 python-stdnum)) | |
730553d7 | 1002 | |
c7299015 NG |
1003 | (define-public python-duniterpy |
1004 | (package | |
1005 | (name "python-duniterpy") | |
a41cd135 | 1006 | (version "0.55.1") |
c7299015 NG |
1007 | (source |
1008 | (origin | |
1009 | (method git-fetch) | |
1010 | ;; Pypi's default URI is missing "requirements.txt" file. | |
1011 | (uri (git-reference | |
7dab3e61 | 1012 | (url "https://git.duniter.org/clients/python/duniterpy.git") |
c7299015 NG |
1013 | (commit version))) |
1014 | (file-name (git-file-name name version)) | |
1015 | (sha256 | |
1016 | (base32 | |
a41cd135 | 1017 | "07zsbbkzmnvyv5v0vw2d42vw3ar4iqhlidy9376ysk4ldlj1igf7")))) |
c7299015 | 1018 | (build-system python-build-system) |
1427d888 NG |
1019 | (arguments |
1020 | ;; Tests fail with "AttributeError: module 'attr' has no attribute 's'". | |
42a57df8 NG |
1021 | `(#:tests? #f |
1022 | #:phases | |
1023 | (modify-phases %standard-phases | |
1024 | (add-after 'build 'build-documentation | |
1025 | (lambda _ | |
1026 | (invoke "make" "docs"))) | |
1027 | (add-after 'build-documentation 'install-documentation | |
1028 | (lambda* (#:key inputs outputs #:allow-other-keys) | |
1029 | (let* ((out (assoc-ref outputs "out")) | |
1030 | (doc (string-append out "/share/doc/" ,name))) | |
1031 | (mkdir-p doc) | |
1032 | (copy-recursively "docs/_build/html" doc)) | |
1033 | #t))))) | |
1034 | (native-inputs | |
352033f3 NG |
1035 | `(("sphinx" ,python-sphinx) |
1036 | ("sphinx-rtd-theme" ,python-sphinx-rtd-theme))) | |
c7299015 | 1037 | (propagated-inputs |
352033f3 NG |
1038 | `(("aiohttp" ,python-aiohttp) |
1039 | ("attr" ,python-attr) | |
1040 | ("base58" ,python-base58) | |
1041 | ("jsonschema" ,python-jsonschema) | |
1042 | ("libnacl" ,python-libnacl) | |
1043 | ("pyaes" ,python-pyaes) | |
1044 | ("pylibscrypt" ,python-pylibscrypt) | |
1045 | ("pypeg2" ,python-pypeg2))) | |
9f1a2be2 | 1046 | (home-page "https://git.duniter.org/clients/python/duniterpy") |
c7299015 NG |
1047 | (synopsis "Python implementation of Duniter API") |
1048 | (description "@code{duniterpy} is an implementation of | |
207a79b2 | 1049 | @uref{https://github.com/duniter/duniter/, duniter} API. Its |
c7299015 NG |
1050 | main features are: |
1051 | @itemize | |
207a79b2 NG |
1052 | @item Support Duniter's Basic Merkle API and protocol |
1053 | @item Asynchronous/synchronous without threads | |
1054 | @item Support HTTP, HTTPS and Web Socket transport for Basic Merkle API | |
1055 | @item Support Elasticsearch Duniter4j API | |
c7299015 | 1056 | @item Duniter signing key |
207a79b2 | 1057 | @item Sign/verify and encrypt/decrypt messages with the Duniter credentials |
c7299015 NG |
1058 | @end itemize") |
1059 | (license license:gpl3+))) | |
1060 | ||
730553d7 NG |
1061 | (define-public silkaj |
1062 | (package | |
1063 | (name "silkaj") | |
5d727935 | 1064 | (version "0.7.3") |
730553d7 NG |
1065 | (source |
1066 | (origin | |
1067 | (method git-fetch) | |
1068 | (uri (git-reference | |
1069 | (url "https://git.duniter.org/clients/python/silkaj.git") | |
1070 | (commit (string-append "v" version)))) | |
1071 | (file-name (git-file-name name version)) | |
1072 | (sha256 | |
1073 | (base32 | |
5d727935 | 1074 | "0yk2574yb0d0k0rg7qf0pkmjidblsad04x8hhqpy9k80rvgjcr5w")))) |
730553d7 NG |
1075 | (build-system python-build-system) |
1076 | (arguments | |
e627052f | 1077 | `(#:tests? #f)) ;no test |
730553d7 | 1078 | (inputs |
c14b3a8d NG |
1079 | `(("click" ,python-click) |
1080 | ("duniterpy" ,python-duniterpy) | |
1081 | ("ipaddress" ,python-ipaddress) | |
1082 | ("pynacl" ,python-pynacl) | |
f41378b7 NG |
1083 | ("tabulate" ,python-tabulate) |
1084 | ("texttable" ,python-texttable))) | |
730553d7 NG |
1085 | (home-page "https://silkaj.duniter.org/") |
1086 | (synopsis "Command line client for Duniter network") | |
1087 | (description "@code{Silkaj} is a command line client for the | |
1088 | @uref{https://github.com/duniter/duniter/, Duniter} network. | |
1089 | ||
1090 | Its features are: | |
1091 | @itemize | |
1092 | @item information about currency, | |
1093 | @item issuers difficulty to generate next block, | |
1094 | @item network view of nodes, | |
1095 | @item list of last issuers, | |
1096 | @item send transactions, | |
1097 | @item get account amount. | |
1098 | @end itemize") | |
1099 | (license license:agpl3+))) | |
90bb244f TLC |
1100 | |
1101 | (define-public grisbi | |
1102 | (package | |
1103 | (name "grisbi") | |
1104 | (version "1.2.2") | |
1105 | (source | |
1106 | (origin | |
1107 | (method url-fetch) | |
1108 | (uri (string-append | |
1109 | "mirror://sourceforge/grisbi/grisbi%20stable/" | |
1110 | (version-major+minor version) ".x/" version | |
1111 | "/grisbi-" version ".tar.bz2")) | |
1112 | (sha256 | |
1113 | (base32 | |
1114 | "1piiyyxjsjbw9gcqydvknzxmmfgh8kdqal12ywrxyxih2afwnvbw")))) | |
1115 | (build-system glib-or-gtk-build-system) | |
1116 | (arguments | |
1117 | `(#:configure-flags (list "--without-ofx"))) | |
1118 | (propagated-inputs | |
1119 | `(("dconf" ,dconf))) | |
1120 | (native-inputs | |
1121 | `(("glib" ,glib "bin") ; glib-compile-schemas | |
1122 | ("pkg-config" ,pkg-config) | |
1123 | ("intltool" ,intltool))) | |
1124 | (inputs | |
1125 | `(("gtk+" ,gtk+) | |
1126 | ("libgsf" ,libgsf))) | |
1127 | (synopsis "Personal accounting application") | |
1128 | (description "Grisbi is a personal accounting application written by | |
1129 | French developers that is designed to follow French accounting rules. | |
1130 | Grisbi can manage multiple accounts, currencies and users. It manages | |
1131 | third party, expenditure and receipt categories, budgetary lines, | |
1132 | financial years, budget estimates, bankcard management and other | |
1133 | information.") | |
1134 | (home-page "http://grisbi.org") | |
1135 | (license license:gpl2+))) | |
01b37d0f | 1136 | |
1137 | (define-public trezord | |
1138 | (package | |
1139 | (name "trezord") | |
1140 | (version "2.0.17") | |
1141 | (source | |
1142 | (origin | |
1143 | (method git-fetch) | |
1144 | (uri (git-reference | |
1145 | (url "https://github.com/trezor/trezord-go.git") | |
1146 | (commit (string-append "v" version)))) | |
1147 | (sha256 | |
1148 | (base32 | |
1149 | "0nqzpq0i3crh0i4r1cppja5sn3rwi1fv9afxzwzv63096x5l30a7")) | |
1150 | (file-name (git-file-name name version)))) | |
1151 | (build-system go-build-system) | |
1152 | (arguments | |
1153 | '(#:import-path "github.com/trezor/trezord-go")) | |
1154 | (home-page "https://trezor.io") | |
1155 | (synopsis "Trezor Communication Daemon aka Trezor Bridge (written in Go)") | |
1156 | (description "This allows a Trezor hardware wallet to communicate to the | |
1157 | Trezor wallet.") | |
1158 | (license license:lgpl3+))) | |
af012922 | 1159 | |
1160 | (define-public bitcoin-abc | |
1161 | (package | |
1162 | (inherit bitcoin-core) | |
1163 | (name "bitcoin-abc") | |
054ff198 | 1164 | (version "0.20.7") |
af012922 | 1165 | (source (origin |
1166 | (method url-fetch) | |
1167 | (uri (string-append "https://download.bitcoinabc.org/" | |
28d46d9d | 1168 | version "/src/bitcoin-abc-" |
af012922 | 1169 | version ".tar.gz")) |
1170 | (sha256 | |
1171 | (base32 | |
054ff198 GLV |
1172 | "0py5ilfi4r8qh5r9637vwch27sqrrn0dg9rz8bccnj3lp2xpzw27")))) |
1173 | (native-inputs | |
1174 | `(("autoconf" ,autoconf) | |
1175 | ("automake" ,automake) | |
1176 | ("libtool" ,libtool) | |
1177 | ("pkg-config" ,pkg-config) | |
1178 | ("python" ,python) ; for the tests | |
1179 | ("util-linux" ,util-linux) ; provides the hexdump command for tests | |
1180 | ("qttools" ,qttools))) | |
28d46d9d GLV |
1181 | (inputs |
1182 | `(("bdb" ,bdb-5.3) | |
1183 | ("boost" ,boost) | |
1184 | ("libevent" ,libevent) | |
1185 | ("miniupnpc" ,miniupnpc) | |
1186 | ("openssl" ,openssl) | |
1187 | ("protobuf" ,protobuf) | |
054ff198 GLV |
1188 | ("qrencode" ,qrencode) |
1189 | ("qtbase" ,qtbase) | |
1190 | ("zlib" ,zlib))) | |
af012922 | 1191 | (home-page "https://www.bitcoinabc.org/") |
1192 | (synopsis "Bitcoin ABC peer-to-peer full node for the Bitcoin Cash protocol") | |
1193 | (description | |
1194 | "Bitcoin Cash brings sound money to the world, fulfilling the original | |
1195 | promise of Bitcoin as Peer-to-Peer Electronic Cash. Merchants and users are | |
1196 | empowered with low fees and reliable confirmations is a digital currency that | |
1197 | enables instant payments to anyone anywhere in the world. It uses | |
1198 | peer-to-peer technology to operate without central authority: managing | |
1199 | transactions and issuing money are carried out collectively by the network. | |
1200 | As a fork it implemented changes lowering the time between blocks and now | |
1201 | offers confimations after less than 5 seconds and have significantly lower | |
1202 | fees that BTC. Bitcoin ABC is the reference implementation of the Bitcoin | |
1203 | Cash protocol. This package provides the Bitcoin Cash command line client and | |
1204 | a client based on Qt. This is a fork of Bitcoin Core."))) |