chromium,chromedriver: 129.0.6668.91 -> 129.0.6668.100
[NixPkgs.git] / pkgs / by-name / ta / taler-wallet-core / package.nix
blob944c0afc177e19b7de2071db9519b8c5197cd2ad
2   lib,
3   stdenv,
4   esbuild,
5   buildGoModule,
6   fetchFromGitHub,
7   fetchgit,
8   srcOnly,
9   removeReferencesTo,
10   nodejs,
11   pnpm,
12   python3,
13   git,
14   jq,
15   zip,
17 let
18   nodeSources = srcOnly nodejs;
19   esbuild' = esbuild.override {
20     buildGoModule =
21       args:
22       buildGoModule (
23         args
24         // rec {
25           version = "0.19.9";
26           src = fetchFromGitHub {
27             owner = "evanw";
28             repo = "esbuild";
29             rev = "v${version}";
30             hash = "sha256-GiQTB/P+7uVGZfUaeM7S/5lGvfHlTl/cFt7XbNfE0qw=";
31           };
32           vendorHash = "sha256-+BfxCyg0KkDQpHt/wycy/8CTG6YBA/VJvJFhhzUnSiQ=";
33         }
34       );
35   };
36   customPython = python3.withPackages (p: [ p.setuptools ]);
38 stdenv.mkDerivation (finalAttrs: {
39   pname = "taler-wallet-core";
40   version = "0.13.3";
42   src = fetchgit {
43     url = "https://git.taler.net/wallet-core.git";
44     rev = "v${finalAttrs.version}";
45     hash = "sha256-9pRhaQNnIzbhahMaTVVZqLTlAxh7GZxoz4Gf3TDldAA=";
46   };
48   nativeBuildInputs = [
49     customPython
50     nodejs
51     pnpm.configHook
52     git
53     jq
54     zip
55   ];
57   pnpmDeps = pnpm.fetchDeps {
58     inherit (finalAttrs) pname version src;
59     hash = "sha256-7az1wJ6BK9nPKirtW/fmXo3013JCPf+TNk/aG/mGTfo=";
60   };
62   buildInputs = [ nodejs ];
64   # Make a fake git repo with a commit.
65   # Without this, the package does not build.
66   postUnpack = ''
67     git init -b master
68     git config user.email "root@localhost"
69     git config user.name "root"
70     git commit --allow-empty -m "Initial commit"
71   '';
73   postPatch = ''
74     patchShebangs packages/*/*.mjs
75     substituteInPlace pnpm-lock.yaml \
76       --replace-fail "esbuild: 0.12.29" "esbuild: ${esbuild'.version}"
77   '';
79   preConfigure = ''
80     ./bootstrap
81   '';
83   # After the pnpm configure, we need to build the binaries of all instances
84   # of better-sqlite3. It has a native part that it wants to build using a
85   # script which is disallowed.
86   # Adapted from mkYarnModules.
87   preBuild = ''
88     for f in $(find -path '*/node_modules/better-sqlite3' -type d); do
89       (cd "$f" && (
90       npm run build-release --offline --nodedir="${nodeSources}"
91       find build -type f -exec \
92         ${lib.getExe removeReferencesTo} \
93         -t "${nodeSources}" {} \;
94       ))
95     done
96   '';
98   env.ESBUILD_BINARY_PATH = lib.getExe esbuild';
100   meta = {
101     homepage = "https://git.taler.net/wallet-core.git/";
102     description = "CLI wallet for GNU Taler written in TypeScript and Anastasis Web UI";
103     license = lib.licenses.gpl3Plus;
104     maintainers = [
105       # maintained by the team working on NGI-supported software, no group for this yet
106     ];
107     platforms = lib.platforms.linux;
108     mainProgram = "taler-wallet-cli";
109   };