-
Notifications
You must be signed in to change notification settings - Fork 241
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
add packages to Nix flake config, move to repo root
This way we can actually build and run a node using just: ```sh nix run github:status-im/nimbus-eth2?submodules=1 ``` The `?submodules=1` part should eventually not be necessary. For more details see: NixOS/nix#4423 Signed-off-by: Jakub Sokołowski <jakub@status.im>
- Loading branch information
Showing
8 changed files
with
166 additions
and
80 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
{ | ||
description = "nimbus-eth2"; | ||
|
||
inputs.nixpkgs.url = github:NixOS/nixpkgs/master; | ||
|
||
outputs = { self, nixpkgs }: | ||
let | ||
stableSystems = [ | ||
"x86_64-linux" "aarch64-linux" "armv7a-linux" | ||
"x86_64-darwin" "aarch64-darwin" | ||
"x86_64-windows" | ||
]; | ||
forEach = nixpkgs.lib.genAttrs; | ||
forAllSystems = forEach stableSystems; | ||
pkgsFor = forEach stableSystems ( | ||
system: import nixpkgs { inherit system; } | ||
); | ||
in rec { | ||
packages = forAllSystems (system: let | ||
build = pkgsFor.${system}.callPackage ./nix/default.nix { | ||
inherit stableSystems; src = self; | ||
}.override; | ||
in rec { | ||
beacon_node = build { targets = ["nimbus_beacon_node"]; }; | ||
signing_node = build { targets = ["nimbus_signing_node"]; }; | ||
validator_client = build { targets = ["nimbus_validator_client"]; }; | ||
|
||
default = beacon_node; | ||
}); | ||
|
||
devShells = forAllSystems (system: { | ||
default = pkgsFor.${system}.callPackage ./nix/shell.nix { }; | ||
}); | ||
}; | ||
} |
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
# Usage | ||
|
||
## Shell | ||
|
||
A development shell can be started using: | ||
```sh | ||
nix develop | ||
``` | ||
|
||
## Building | ||
|
||
To build a beacon node you can use: | ||
```sh | ||
nix build .?submodules=1 | ||
``` | ||
The `?submodules=1` part should eventually not be necessary. | ||
For more details see: | ||
https://github.com/NixOS/nix/issues/4423 | ||
|
||
It can be also done without even cloning the repo: | ||
```sh | ||
nix build github:status-im/nimbus-eth2?submodules=1 | ||
``` | ||
|
||
## Running | ||
|
||
```sh | ||
nix run github:status-im/nimbus-eth2?submodules=1 | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,70 @@ | ||
{ | ||
stdenv, darwin, lib, nim1, cmake, which, writeScriptBin, | ||
src ? ../., | ||
# Options: nimbus_light_client, nimbus_validator_client, nimbus_signing_node, all | ||
targets ? ["nimbus_beacon_node"], | ||
# These are the only platforms tested in CI and considered stable. | ||
stableSystems ? [ | ||
"x86_64-linux" "aarch64-linux" "armv7a-linux" | ||
"x86_64-darwin" "aarch64-darwin" | ||
"x86_64-windows" | ||
], | ||
}: | ||
|
||
# Nim version(s) that are known to be stable | ||
# See: https://github.com/status-im/nimbus-build-system/commits/master/vendor | ||
assert ( | ||
lib.assertMsg | ||
(builtins.elem nim1.version ["1.6.16" "1.6.18"]) | ||
"Unsupported Nim version: ${nim1.version}" | ||
); | ||
|
||
stdenv.mkDerivation rec { | ||
pname = "nimbus-eth2"; | ||
version = "unknown"; | ||
|
||
inherit src; | ||
|
||
# Fix for Nim compiler calling 'git rev-parse' and 'lsb_release'. | ||
nativeBuildInputs = let | ||
fakeGit = writeScriptBin "git" "echo ${version}"; | ||
fakeLsbRelease = writeScriptBin "lsb_release" "echo nix"; | ||
in | ||
[ fakeGit fakeLsbRelease nim1 which cmake ] | ||
++ lib.optionals stdenv.isDarwin [ darwin.cctools ]; | ||
|
||
enableParallelBuilding = true; | ||
|
||
# Disable CPU optmizations that make binary not portable. | ||
NIMFLAGS = "-d:disableMarchNative -d:git_revision_override=${version}"; | ||
|
||
makeFlags = targets ++ ["USE_SYSTEM_NIM=1"]; | ||
|
||
# Generate the nimbus-build-system.paths file. | ||
configurePhase = '' | ||
patchShebangs scripts vendor/nimbus-build-system/scripts > /dev/null | ||
make nimbus-build-system-paths | ||
''; | ||
|
||
installPhase = '' | ||
mkdir -p $out/bin | ||
rm -f build/generate_makefile | ||
cp build/* $out/bin | ||
''; | ||
|
||
meta = with lib; { | ||
homepage = "https://nimbus.guide/"; | ||
downloadPage = "https://github.com/status-im/nimbus-eth2/releases"; | ||
changelog = "https://github.com/status-im/nimbus-eth2/blob/stable/CHANGELOG.md"; | ||
description = "Nimbus is a lightweight client for the Ethereum consensus layer"; | ||
longDescription = '' | ||
Nimbus is an extremely efficient consensus layer client implementation. | ||
While it's optimised for embedded systems and resource-restricted devices -- | ||
including Raspberry Pis, its low resource usage also makes it an excellent choice | ||
for any server or desktop (where it simply takes up fewer resources). | ||
''; | ||
license = with licenses; [asl20 mit]; | ||
mainProgram = "nimbus_beacon_node"; | ||
platforms = stableSystems; | ||
}; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters