Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 13 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -28,4 +28,16 @@ Cargo.lock
*.orig

# Working
work/
work/

# Ethereum node data directories
data/
geth/
lighthouse/

# Ethereum authentication
*.hex
jwt.secret

# Test directories
/tmp/test-*
5 changes: 4 additions & 1 deletion docs/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,10 @@

docsFlake = flake-parts-lib.mkFlake { inherit inputs; } {
systems = [ system ];
imports = [ "${inputs.flake-parts-website}/render/render-module.nix" ];
imports = [
"${inputs.flake-parts-website}/render/render-module.nix"
inputs.devshell.flakeModule
];
perSystem.render.officialFlakeInputs = inputs;
perSystem.render.inputs =
{
Expand Down
2 changes: 1 addition & 1 deletion docs/reference/flake-modules/index.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Flake Modules Reference
- [Upload Contracts Options](./upload-contracts.md)
- [Upload Valence Contracts Options](./upload-valence-contracts.md)
- [Valence Contracts Options](./valence-contracts.md)

1 change: 1 addition & 0 deletions docs/reference/nixos-modules/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# NixOS Modules Reference
41 changes: 38 additions & 3 deletions flake.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

13 changes: 13 additions & 0 deletions flake.nix
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,26 @@
"x86_64-linux"
];
imports = [
inputs.devshell.flakeModule
./flakeModules/default.nix
./flakeModules/ethereum-development/default.nix
./nixosModules/default.nix
./packages/default.nix
./tools/default.nix
./docs/default.nix
./templates/default.nix
./flakeModules/valence-contracts.nix
];

perSystem = {
pkgs,
inputs',
...
}: {
# Enable ethereum development environment
ethereum-development.enable = true;
ethereum-development.network = "sepolia";
};
};

inputs = {
Expand All @@ -33,6 +45,7 @@
flake-parts.url = "github:hercules-ci/flake-parts";
crane.url = "github:ipetkov/crane";
rust-overlay.url = "github:oxalica/rust-overlay";
devshell.url = "github:numtide/devshell";
flake-parts-website.url = "github:hercules-ci/flake.parts-website";
# This is a flake but we just need the render module
# Theres a lot of inputs so it would pollute the lock file if its added as a flake
Expand Down
4 changes: 4 additions & 0 deletions flakeModules/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -15,5 +15,9 @@ in
imports = [ ./valence-contracts.nix ];
perSystem.valence-contracts = { inherit default-inputs; };
};
ethereum-development = {
imports = [ ./ethereum-development/default.nix ];
perSystem.ethereum-development = { inherit default-inputs; };
};
};
}
74 changes: 74 additions & 0 deletions flakeModules/ethereum-development/default.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
# Ethereum development flake module for zero.nix
# Provides development environment with ethereum tools
{
lib,
flake-parts-lib,
...
}: let
inherit (flake-parts-lib) mkPerSystemOption;
inherit (lib) types;
in {
_file = ./default.nix;
options = {
perSystem = mkPerSystemOption (
{
config,
pkgs,
self',
system,
options,
...
}: let
cfg = config.ethereum-development;
in {
options = {
ethereum-development.enable = lib.mkEnableOption "ethereum development environment";

ethereum-development.network = lib.mkOption {
type = lib.types.enum [ "mainnet" "goerli" "sepolia" "holesky" ];
default = "sepolia";
description = "Default ethereum network for development";
};
};

config = lib.mkIf cfg.enable (lib.optionalAttrs (options ? devshells) {
devshells.ethereum = {
name = "ethereum-development";

commands = [
{
package = self'.packages.geth;
help = "Ethereum execution client";
}
{
package = self'.packages.lighthouse;
help = "Ethereum consensus client";
}
{
package = pkgs.curl;
help = "HTTP client for API testing";
}
{
package = pkgs.jq;
help = "JSON processor for API responses";
}
{
package = pkgs.openssl;
help = "SSL/TLS toolkit";
}
];

motd = ''
{14}{bold}Ethereum development environment{reset}
{9}Network: ${cfg.network}{reset}

{13}Quick start:{reset}
geth ${if cfg.network == "mainnet" then "" else "--${cfg.network}"} --datadir ./data/geth --http --ws
lighthouse bn --network ${if cfg.network == "mainnet" then "mainnet" else cfg.network} --datadir ./data/lighthouse
'';
};
});
}
);
};
}
6 changes: 6 additions & 0 deletions nixosModules/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -16,5 +16,11 @@
zero-nix = self';
}
);
ethereum-node = moduleWithSystem (
{self', ... }:
import ./ethereum-node {
zero-nix = self';
}
);
};
}
Loading
Loading