1{ lib
2, stdenv
3, buildGoModule
4, fetchFromGitHub
5, pkg-config
6, bzip2
7, lz4
8, rocksdb_6_23
9, snappy
10, zeromq
11, zlib
12, nixosTests
13}:
14
15let
16 rocksdb = rocksdb_6_23;
17in
18buildGoModule rec {
19 pname = "blockbook";
20 version = "0.3.6";
21 commit = "5f8cf45";
22
23 src = fetchFromGitHub {
24 owner = "trezor";
25 repo = "blockbook";
26 rev = "v${version}";
27 sha256 = "1jb195chy3kbspmv9vyg7llw6kgykkmvz3znd97mxf24f4q622jv";
28 };
29
30 vendorSha256 = "1w9c0qzah2f9rbjdxqajwrfkia25cwbn30gidviaid3b7ddpd7r8";
31
32 nativeBuildInputs = [ pkg-config ];
33
34 buildInputs = [ bzip2 lz4 rocksdb snappy zeromq zlib ];
35
36 ldflags = [
37 "-X github.com/trezor/blockbook/common.version=${version}"
38 "-X github.com/trezor/blockbook/common.gitcommit=${commit}"
39 "-X github.com/trezor/blockbook/common.buildDate=unknown"
40 ];
41
42 tags = [ "rocksdb_6_16" ];
43
44 preBuild = lib.optionalString stdenv.isDarwin ''
45 ulimit -n 8192
46 '' + ''
47 export CGO_LDFLAGS="-L${stdenv.cc.cc.lib}/lib -lrocksdb -lz -lbz2 -lsnappy -llz4 -lm -lstdc++"
48 buildFlagsArray+=("-tags=${lib.concatStringsSep " " tags}")
49 buildFlagsArray+=("-ldflags=${lib.concatStringsSep " " ldflags}")
50 '';
51
52 subPackages = [ "." ];
53
54 postInstall = ''
55 mkdir -p $out/share/
56 cp -r $src/static/templates/ $out/share/
57 cp -r $src/static/css/ $out/share/
58 '';
59
60 passthru.tests = {
61 smoke-test = nixosTests.blockbook-frontend;
62 };
63
64 meta = with lib; {
65 description = "Trezor address/account balance backend";
66 homepage = "https://github.com/trezor/blockbook";
67 license = licenses.agpl3;
68 maintainers = with maintainers; [ mmahut _1000101 ];
69 platforms = platforms.unix;
70 };
71}