nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
1{
2 lib,
3 buildPackages,
4 fetchFromGitHub,
5 openssl,
6 pkg-config,
7 protobuf,
8 rustPlatform,
9 version ? "0.7.1",
10 hash ? "sha256-7meBYUN7sG1OAtMEm6I66+ptf4EfsbA+dm5/4P3IRV4=",
11 cargoHash ? "sha256-4cFuasH2hvrnzTBTFifHEMtXZKsBv7OVpuwPlV19GGw=",
12}:
13
14rustPlatform.buildRustPackage rec {
15 pname = "fedimint";
16 inherit version;
17
18 src = fetchFromGitHub {
19 owner = "fedimint";
20 repo = "fedimint";
21 rev = "v${version}";
22 inherit hash;
23 };
24
25 inherit cargoHash;
26
27 nativeBuildInputs = [
28 protobuf
29 pkg-config
30 rustPlatform.bindgenHook
31 ];
32
33 buildInputs = [
34 openssl
35 ];
36
37 outputs = [
38 "out"
39 "fedimintCli"
40 "fedimint"
41 "gateway"
42 "gatewayCli"
43 "devimint"
44 ];
45
46 postInstall = ''
47 mkdir -p $fedimint/bin $fedimintCli/bin $gateway/bin $gatewayCli/bin $devimint/bin
48
49 # delete fuzzing targets and other binaries no one cares about
50 binsToKeep=(fedimint-cli fedimint-dbtool recoverytool fedimintd gatewayd gateway-cli devimint)
51 keepPattern=$(printf "|%s" "''${binsToKeep[@]}")
52 keepPattern=''${keepPattern:1}
53 find "$out/bin" -maxdepth 1 -type f | grep -Ev "(''${keepPattern})" | xargs rm -f
54
55 cp -a $releaseDir/fedimint-cli $fedimintCli/bin/
56 cp -a $releaseDir/fedimint-dbtool $fedimintCli/bin/
57 cp -a $releaseDir/fedimint-recoverytool $fedimintCli/bin/
58
59 cp -a $releaseDir/fedimintd $fedimint/bin/
60
61 cp -a $releaseDir/gateway-cli $gatewayCli/bin/
62
63 cp -a $releaseDir/gatewayd $gateway/bin/
64
65 cp -a $releaseDir/devimint $devimint/bin/
66 '';
67
68 PROTOC = "${buildPackages.protobuf}/bin/protoc";
69 PROTOC_INCLUDE = "${protobuf}/include";
70 OPENSSL_DIR = openssl.dev;
71
72 FEDIMINT_BUILD_FORCE_GIT_HASH = "0000000000000000000000000000000000000000";
73
74 # currently broken, will require some upstream fixes
75 doCheck = false;
76
77 meta = {
78 description = "Federated E-Cash Mint";
79 homepage = "https://github.com/fedimint/fedimint";
80 license = [ lib.licenses.mit ];
81 maintainers = with lib.maintainers; [ dpc ];
82 mainProgram = "fedimint-cli";
83 };
84}