Flake-based build environment for Nix users (#3534)

This commit is contained in:
zah 2022-10-15 04:46:30 +03:00 committed by GitHub
parent fb6e6d9cf4
commit a47cf5aa2c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 113 additions and 11 deletions

16
.envrc Normal file
View File

@ -0,0 +1,16 @@
NBS_ONLY_LOAD_ENV_VARS=1 source env.sh
if command -v nix > /dev/null
then
export NIMBUS_NIX_ENV=1
cd installer/nix
# watch_file tells direnv that changes to any of the watched files
# should trigger a re-evalution of the environment
watch_file flake.nix
watch_file flake.lock
watch_file shell.nix
mkdir -p .flake-profiles
eval "$(nix print-dev-env --profile ".flake-profiles/profile")"
fi

1
.gitignore vendored
View File

@ -22,6 +22,7 @@ build/
# Each developer can create a personal .env file with # Each developer can create a personal .env file with
# local settings overrides (e.g. WEB3_URL) # local settings overrides (e.g. WEB3_URL)
.env .env
.direnv/
# Ignore dynamic, static libs and libtool archive files # Ignore dynamic, static libs and libtool archive files
*.so *.so

4
env.sh
View File

@ -7,9 +7,10 @@ ABS_PATH="$(cd ${REL_PATH}; pwd)"
# Activate nvm only when this file is sourced without arguments: # Activate nvm only when this file is sourced without arguments:
if [ -z "$*" ]; then if [ -z "$*" ]; then
if ! command -v ganache-cli > /dev/null; then
if command -v nvm > /dev/null; then if command -v nvm > /dev/null; then
nvm use nvm use
command -v ganache-cli > /dev/null || { npm install -g ganache-cli; } npm install -g ganache-cli
else else
echo <<EOF echo <<EOF
In order to use Ganache (a development ETH1 chain), please install NVM with: In order to use Ganache (a development ETH1 chain), please install NVM with:
@ -20,6 +21,7 @@ if [ -z "$*" ]; then
EOF EOF
fi fi
fi fi
fi
# The user env file allows you to specify personal overrides for some # The user env file allows you to specify personal overrides for some
# settings such as WEB3_URL, CPU_LIMIT, etc: # settings such as WEB3_URL, CPU_LIMIT, etc:

2
installer/nix/.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
# Local file unique for each user
.flake-profiles/

43
installer/nix/flake.lock Normal file
View File

@ -0,0 +1,43 @@
{
"nodes": {
"flake-utils": {
"locked": {
"lastModified": 1659877975,
"narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1659446231,
"narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "eabc38219184cc3e04a974fe31857d8e0eac098d",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-21.11",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"flake-utils": "flake-utils",
"nixpkgs": "nixpkgs"
}
}
},
"root": "root",
"version": 7
}

15
installer/nix/flake.nix Normal file
View File

@ -0,0 +1,15 @@
{
description = "nimbus-eth2";
inputs = {
nixpkgs.url = github:NixOS/nixpkgs/nixos-21.11;
flake-utils.url = github:numtide/flake-utils;
};
outputs = { self, nixpkgs, flake-utils }:
flake-utils.lib.simpleFlake {
inherit self nixpkgs;
name = "nimbus-eth2";
shell = ./shell.nix;
};
}

23
installer/nix/shell.nix Normal file
View File

@ -0,0 +1,23 @@
{ pkgs ? import <nixpkgs> { } }: with pkgs;
mkShell {
buildInputs = [
llvmPackages_14.clang-unwrapped
figlet
git
gnumake
# For installing ganache for local simulations
nodePackages.ganache-cli
] ++ lib.optionals (!stdenv.isDarwin) [
lsb-release
];
shellHook = ''
# We use clang unwrapped because the compiler wrappers under Nix
# ignore -march=native in order to keep the build deterministic
export PATH=${llvmPackages_14.clang-unwrapped}/bin:$PATH
export CC=clang
figlet "Welcome to Nimbus-eth2"
'';
}

@ -1 +1 @@
Subproject commit 11df74552d3a3abe2c722c536c8075ef6814d5fa Subproject commit 27d314d65c9078924b3239fe4e2f5af0c512b28c

@ -1 +1 @@
Subproject commit 07e37730c627c19848e8662352976afe7e15bb1f Subproject commit dc535cd4627e6c1ec023ee6d6d0c3e5d66d414e5