forked from evmos/evmos
-
Notifications
You must be signed in to change notification settings - Fork 0
/
default.nix
66 lines (64 loc) · 2.33 KB
/
default.nix
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
{ lib
, buildGoApplication
, buildPackages
, fetchFromGitHub
, stdenv
, rev ? "dirty"
, rocksdb
, static ? stdenv.hostPlatform.isStatic
, dbBackend ? "goleveldb"
}:
let
version = if dbBackend == "rocksdb" then "latest-rocksdb" else "latest";
pname = "evmosd";
tags = [ "ledger" "netgo" ] ++ lib.optionals (dbBackend == "rocksdb") [ "rocksdb" "grocksdb_clean_link" ];
ldflags = lib.concatStringsSep "\n" ([
"-X github.com/cosmos/cosmos-sdk/version.Name=evmos"
"-X github.com/cosmos/cosmos-sdk/version.AppName=${pname}"
"-X github.com/cosmos/cosmos-sdk/version.Version=${version}"
"-X github.com/cosmos/cosmos-sdk/version.BuildTags=${lib.concatStringsSep "," tags}"
"-X github.com/cosmos/cosmos-sdk/version.Commit=${rev}"
"-X github.com/cosmos/cosmos-sdk/types.DBBackend=${dbBackend}"
]);
buildInputs = lib.optionals (dbBackend == "rocksdb") [ rocksdb ];
# use a newer version of nixpkgs to get go_1_22
# We're not updating this on the whole setup because breaks other stuff
# but we can import the needed packages from the newer version
nixpkgsUrl = "https://github.com/NixOS/nixpkgs/archive/master.tar.gz";
nixpkgs = import (fetchTarball nixpkgsUrl) {};
# the go_1_22 nixpkgs is v1.22.1
# but we need the v1.22.2.
# This overrides the pkg to use
# the v1.22.2 version
go_1_22 = nixpkgs.pkgs.go_1_22.overrideAttrs {
pname = "golang";
version = "go1.22.2";
src = fetchFromGitHub {
owner = "golang";
repo = "go";
rev = "dddf0ae40fa0c1223aba191d73a44425a08e1035";
sha256 = "sha256-gWJ4txAt2TkobDo1EGotWDOSP2pGqLCNqpn+Smgr21w=";
};
};
in
buildGoApplication rec {
inherit pname version buildInputs tags ldflags;
go = go_1_22;
src = ./.;
modules = ./gomod2nix.toml;
doCheck = false;
pwd = src; # needed to support replace
subPackages = [ "cmd/evmosd" ];
CGO_ENABLED = "1";
postFixup = if dbBackend == "rocksdb" then
''
# Rename the binary from evmosd to evmosd-rocksdb
mv $out/bin/evmosd $out/bin/evmosd-rocksdb
'' else '''';
meta = with lib; {
description = "Evmos is a scalable and interoperable blockchain, built on Proof-of-Stake with fast-finality using the Cosmos SDK which runs on top of CometBFT Core consensus engine.";
homepage = "https://github.com/evmos/evmos";
license = licenses.asl20;
mainProgram = "evmosd";
};
}