biglybt: 3.5.0.0 -> 3.6.0.0
[NixPkgs.git] / pkgs / applications / networking / taler / default.nix
blobbabdff54f1856d272bbfcfd8ae71a726e6095346
1 { lib, stdenv, fetchgit, curl, gnunet, jansson, libgcrypt, libmicrohttpd
2 , qrencode, libsodium, libtool, libunistring, pkg-config, postgresql
3 , autoreconfHook, python3, recutils, wget, jq, gettext, texinfo
4 }:
6 let
7   version = "0.10.1";
9   taler-wallet-core = fetchgit {
10     url = "https://git.taler.net/wallet-core.git";
11     rev = "v${version}";
12     hash = "sha256-sgiJd1snN9JDqS7IUeORKL60Gcm7XwL/JCX3sNRDTdY=";
13   };
15   taler-exchange = stdenv.mkDerivation {
16     pname = "taler-exchange";
17     inherit version;
19     src = fetchgit {
20       url = "https://git.taler.net/exchange.git";
21       rev = "v${version}";
22       fetchSubmodules = true;
23       hash = "sha256-SKnMep8bMQaJt4r3u0SrzwYSuFbzv4RnflbutSqwtPg=";
25       # When fetching submodules without the .git folder we get the following error:
26       # "Server does not allow request for unadvertised object"
27       leaveDotGit = true;
28       postFetch = ''
29         rm -rf $out/.git
30       '';
31     };
33     nativeBuildInputs = [
34       autoreconfHook
35       pkg-config
36     ];
37     buildInputs = [
38       libgcrypt
39       libmicrohttpd
40       jansson
41       libsodium
42       postgresql
43       curl
44       recutils
45       gettext
46       texinfo # Fix 'makeinfo' is missing on your system.
47       libunistring
48       python3.pkgs.jinja2
49       # jq is necessary for some tests and is checked by configure script
50       jq
51     ];
52     propagatedBuildInputs = [ gnunet ];
54     # From ./bootstrap
55     preAutoreconf = ''
56       ./contrib/gana-generate.sh
57       pushd contrib
58       find wallet-core/aml-backoffice/ -type f -printf '  %p \\\n' | sort > Makefile.am.ext
59       truncate -s -2 Makefile.am.ext
60       cat Makefile.am.in Makefile.am.ext >> Makefile.am
61       popd
62     '';
64     enableParallelBuilding = true;
66     nativeCheckInputs = [ wget curl ];
67     doInstallCheck = true;
68     checkTarget = "check";
70     meta = with lib; {
71       description = ''
72         Taler is an electronic payment system providing the ability to pay
73         anonymously using digital cash.  Taler consists of a network protocol
74         definition (using a RESTful API over HTTP), a Exchange (which creates
75         digital coins), a Wallet (which allows customers to manage, store and
76         spend digital coins), and a Merchant website which allows customers to
77         spend their digital coins.  Naturally, each Merchant is different, but
78         Taler includes code examples to help Merchants integrate Taler as a
79         payment system.
80       '';
81       homepage = "https://taler.net/";
82       license = licenses.agpl3Plus;
83       maintainers = with maintainers; [ astro ];
84       platforms = platforms.linux;
85     };
86   };
88   taler-merchant = stdenv.mkDerivation {
89     pname = "taler-merchant";
90     inherit version;
92     src = fetchgit {
93       url = "https://git.taler.net/merchant.git";
94       rev = "v${version}";
95       fetchSubmodules = true;
96       hash = "sha256-8VpoyloLpd/HckSIRU6IclWUXQyEHqlcNdoJI9U3t0Y=";
97     };
98     postUnpack = ''
99       ln -s ${taler-wallet-core}/spa.html $sourceRoot/contrib/
100     '';
102     nativeBuildInputs = [ pkg-config autoreconfHook ];
103     buildInputs = taler-exchange.buildInputs ++ [
104       qrencode
105       taler-exchange
106       # for ltdl.h
107       libtool
108     ];
109     propagatedBuildInputs = [ gnunet ];
111     # From ./bootstrap
112     preAutoreconf = ''
113       pushd contrib
114       find wallet-core/backoffice/ -type f -printf '  %p \\\n' | sort > Makefile.am.ext
115       truncate -s -2 Makefile.am.ext
116       cat Makefile.am.in Makefile.am.ext >> Makefile.am
117       popd
118     '';
119     configureFlags = [
120       "--with-gnunet=${gnunet}"
121       "--with-exchange=${taler-exchange}"
122     ];
124     enableParallelBuilding = true;
126     nativeCheckInputs = [ jq ];
127     doInstallCheck = true;
128     checkTarget = "check";
130     meta = with lib; {
131       description = ''
132         This is the GNU Taler merchant backend. It provides the logic that should run
133         at every GNU Taler merchant.  The GNU Taler merchant is a RESTful backend that
134         can be used to setup orders and process payments.  This component allows
135         merchants to receive payments without invading the customers' privacy. Of
136         course, this applies mostly for digital goods, as the merchant does not need
137         to know the customer's physical address.
138       '';
139       homepage = "https://taler.net/";
140       license = licenses.agpl3Plus;
141       maintainers = with maintainers; [ astro ];
142       platforms = platforms.linux;
143     };
144   };
145 in {
146   inherit taler-exchange taler-merchant;