Skip to content

Commit 728cff6

Browse files
authored
Merge pull request #5 from timewave-computer/sam/feat-geth-lighthouse
adds geth and lighthouse [macos]
2 parents cefa25b + d60ff58 commit 728cff6

File tree

17 files changed

+718
-25
lines changed

17 files changed

+718
-25
lines changed

.gitignore

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,16 @@ Cargo.lock
2828
*.orig
2929

3030
# Working
31-
work/
31+
work/
32+
33+
# Ethereum node data directories
34+
data/
35+
geth/
36+
lighthouse/
37+
38+
# Ethereum authentication
39+
*.hex
40+
jwt.secret
41+
42+
# Test directories
43+
/tmp/test-*

docs/default.nix

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,10 @@
3636

3737
docsFlake = flake-parts-lib.mkFlake { inherit inputs; } {
3838
systems = [ system ];
39-
imports = [ "${inputs.flake-parts-website}/render/render-module.nix" ];
39+
imports = [
40+
"${inputs.flake-parts-website}/render/render-module.nix"
41+
inputs.devshell.flakeModule
42+
];
4043
perSystem.render.officialFlakeInputs = inputs;
4144
perSystem.render.inputs =
4245
{

docs/reference/flake-modules/index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
# Flake Modules Reference
22
- [Upload Contracts Options](./upload-contracts.md)
3-
- [Upload Valence Contracts Options](./upload-valence-contracts.md)
3+
- [Valence Contracts Options](./valence-contracts.md)
44

docs/reference/nixos-modules/index.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
# NixOS Modules Reference

flake.lock

Lines changed: 38 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

flake.nix

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,26 @@
1717
"x86_64-linux"
1818
];
1919
imports = [
20+
inputs.devshell.flakeModule
2021
./flakeModules/default.nix
22+
./flakeModules/ethereum-development/default.nix
2123
./nixosModules/default.nix
2224
./packages/default.nix
2325
./tools/default.nix
2426
./docs/default.nix
2527
./templates/default.nix
2628
./flakeModules/valence-contracts.nix
2729
];
30+
31+
perSystem = {
32+
pkgs,
33+
inputs',
34+
...
35+
}: {
36+
# Enable ethereum development environment
37+
ethereum-development.enable = true;
38+
ethereum-development.network = "sepolia";
39+
};
2840
};
2941

3042
inputs = {
@@ -33,6 +45,7 @@
3345
flake-parts.url = "github:hercules-ci/flake-parts";
3446
crane.url = "github:ipetkov/crane";
3547
rust-overlay.url = "github:oxalica/rust-overlay";
48+
devshell.url = "github:numtide/devshell";
3649
flake-parts-website.url = "github:hercules-ci/flake.parts-website";
3750
# This is a flake but we just need the render module
3851
# Theres a lot of inputs so it would pollute the lock file if its added as a flake

flakeModules/default.nix

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,9 @@ in
1515
imports = [ ./valence-contracts.nix ];
1616
perSystem.valence-contracts = { inherit default-inputs; };
1717
};
18+
ethereum-development = {
19+
imports = [ ./ethereum-development/default.nix ];
20+
perSystem.ethereum-development = { inherit default-inputs; };
21+
};
1822
};
1923
}
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
# Ethereum development flake module for zero.nix
2+
# Provides development environment with ethereum tools
3+
{
4+
lib,
5+
flake-parts-lib,
6+
...
7+
}: let
8+
inherit (flake-parts-lib) mkPerSystemOption;
9+
inherit (lib) types;
10+
in {
11+
_file = ./default.nix;
12+
options = {
13+
perSystem = mkPerSystemOption (
14+
{
15+
config,
16+
pkgs,
17+
self',
18+
system,
19+
options,
20+
...
21+
}: let
22+
cfg = config.ethereum-development;
23+
in {
24+
options = {
25+
ethereum-development.enable = lib.mkEnableOption "ethereum development environment";
26+
27+
ethereum-development.network = lib.mkOption {
28+
type = lib.types.enum [ "mainnet" "goerli" "sepolia" "holesky" ];
29+
default = "sepolia";
30+
description = "Default ethereum network for development";
31+
};
32+
};
33+
34+
config = lib.mkIf cfg.enable (lib.optionalAttrs (options ? devshells) {
35+
devshells.ethereum = {
36+
name = "ethereum-development";
37+
38+
commands = [
39+
{
40+
package = self'.packages.geth;
41+
help = "Ethereum execution client";
42+
}
43+
{
44+
package = self'.packages.lighthouse;
45+
help = "Ethereum consensus client";
46+
}
47+
{
48+
package = pkgs.curl;
49+
help = "HTTP client for API testing";
50+
}
51+
{
52+
package = pkgs.jq;
53+
help = "JSON processor for API responses";
54+
}
55+
{
56+
package = pkgs.openssl;
57+
help = "SSL/TLS toolkit";
58+
}
59+
];
60+
61+
motd = ''
62+
{14}{bold}Ethereum development environment{reset}
63+
{9}Network: ${cfg.network}{reset}
64+
65+
{13}Quick start:{reset}
66+
geth ${if cfg.network == "mainnet" then "" else "--${cfg.network}"} --datadir ./data/geth --http --ws
67+
lighthouse bn --network ${if cfg.network == "mainnet" then "mainnet" else cfg.network} --datadir ./data/lighthouse
68+
'';
69+
};
70+
});
71+
}
72+
);
73+
};
74+
}

nixosModules/default.nix

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,5 +16,11 @@
1616
zero-nix = self';
1717
}
1818
);
19+
ethereum-node = moduleWithSystem (
20+
{self', ... }:
21+
import ./ethereum-node {
22+
zero-nix = self';
23+
}
24+
);
1925
};
2026
}

0 commit comments

Comments
 (0)