Ethereum.nix is a collection of Nix packages and NixOS modules designed to make it easier to operate Ethereum related services and infrastructure.
For the uninitiated, using Ethereum.nix will give you the following benefits:
- Access to a wide range of Ethereum applications packaged with Nix, ready to run without fuss. Nix guarantees you don't have to worry about version conflicts, missing dependencies or even what state your OS is in.
- We aim that every Ethereum application stored in the repository is constructed from its source, including all input dependencies. This approach guarantees the code's reproducibility and trustworthiness. Furthermore, with Nix, expert users can tweak and adjust the build process to any degree of detail as required.
- We develop custom NixOS modules to streamline operations with applications such as Execution and Consensus clients (including performing backups). Moreover, we aim to introduce further abstractions that simplify everyday tasks, such as running a development environment effortlessly without needing docker.
This project is developed entirely in Nix Flakes.
besu - Besu is an Apache 2.0 licensed, MainNet compatible, Ethereum client written in Java
- Source: bytecode
- License: Apache-2.0
- Homepage: https://github.com/hyperledger/besu
- Usage:
nix run github:nix-community/ethereum.nix#besu -- --help - Nix: packages/besu/package.nix
erigon - Ethereum node implementation focused on scalability and modularity
- Source: source
- License: LGPL-3.0-only
- Homepage: https://github.com/erigontech/erigon/
- Usage:
nix run github:nix-community/ethereum.nix#erigon -- --help - Nix: packages/erigon/package.nix
geth - Official golang implementation of the Ethereum protocol
- Source: source
- License: Check package
- Homepage: https://geth.ethereum.org/
- Usage:
nix run github:nix-community/ethereum.nix#geth -- --help - Nix: packages/geth/package.nix
nethermind - Our flagship Ethereum client for Linux, Windows, and macOS—full and actively developed
- Source: source
- License: GPL-3.0
- Homepage: https://nethermind.io/nethermind-client
- Usage:
nix run github:nix-community/ethereum.nix#nethermind -- --help - Nix: packages/nethermind/package.nix
reth - Modular, contributor-friendly and blazing-fast implementation of the Ethereum protocol, in Rust
- Source: source
- License: Check package
- Homepage: https://github.com/paradigmxyz/reth
- Usage:
nix run github:nix-community/ethereum.nix#reth -- --help - Nix: packages/reth/package.nix
lighthouse - Ethereum consensus client in Rust
- Source: source
- License: Apache-2.0
- Homepage: https://github.com/sigp/lighthouse
- Usage:
nix run github:nix-community/ethereum.nix#lighthouse -- --help - Nix: packages/lighthouse/package.nix
prysm - Go implementation of Ethereum proof of stake
- Source: source
- License: GPL-3.0-only
- Homepage: https://github.com/prysmaticlabs/prysm
- Usage:
nix run github:nix-community/ethereum.nix#prysm -- --help - Nix: packages/prysm/package.nix
teku - Java Implementation of the Ethereum 2.0 Beacon Chain
- Source: bytecode
- License: Apache-2.0
- Homepage: https://github.com/ConsenSys/teku
- Usage:
nix run github:nix-community/ethereum.nix#teku -- --help - Nix: packages/teku/package.nix
charon - Charon (pronounced 'kharon') is a Proof of Stake Ethereum Distributed Validator Client
- Source: source
- License: BUSL-1.1
- Homepage: https://github.com/ObolNetwork/charon
- Usage:
nix run github:nix-community/ethereum.nix#charon -- --help - Nix: packages/charon/package.nix
dirk - An Ethereum 2 distributed remote keymanager, focused on security and long-term performance of signing operations
- Source: source
- License: Apache-2.0
- Homepage: https://github.com/attestantio/dirk
- Usage:
nix run github:nix-community/ethereum.nix#dirk -- --help - Nix: packages/dirk/package.nix
vouch - An Ethereum 2 multi-node validator client
- Source: source
- License: Apache-2.0
- Homepage: https://github.com/attestantio/vouch
- Usage:
nix run github:nix-community/ethereum.nix#vouch -- --help - Nix: packages/vouch/package.nix
web3signer - Web3Signer is an open-source signing service capable of signing on multiple platforms (Ethereum1 and 2, Filecoin) using private keys stored in an external vault, or encrypted on a disk
- Source: bytecode
- License: APSL-2.0
- Homepage: https://github.com/ConsenSys/web3signer
- Usage:
nix run github:nix-community/ethereum.nix#web3signer -- --help - Nix: packages/web3signer/package.nix
mev-boost - MEV-Boost allows proof-of-stake Ethereum consensus clients to source blocks from a competitive builder marketplace
- Source: source
- License: MIT
- Homepage: https://github.com/flashbots/mev-boost
- Usage:
nix run github:nix-community/ethereum.nix#mev-boost -- --help - Nix: packages/mev-boost/package.nix
mev-boost-relay - MEV-Boost Relay for Ethereum proposer/builder separation (PBS)
- Source: source
- License: AGPL-3.0-only
- Homepage: https://github.com/flashbots/mev-boost-relay
- Usage:
nix run github:nix-community/ethereum.nix#mev-boost-relay -- --help - Nix: packages/mev-boost-relay/package.nix
ssv-dkg - The ssv-dkg tool enable operators to participate in ceremonies to generate distributed validator keys for Ethereum stakers.
- Source: source
- License: Check package
- Homepage: https://github.com/ssvlabs/ssv-dkg
- Usage:
nix run github:nix-community/ethereum.nix#ssv-dkg -- --help - Nix: packages/ssv-dkg/package.nix
ssvnode - Secret-Shared-Validator(SSV) for ethereum staking
- Source: source
- License: GPL-3.0-only
- Homepage: https://github.com/ssvlabs/ssv
- Usage:
nix run github:nix-community/ethereum.nix#ssvnode -- --help - Nix: packages/ssvnode/package.nix
eth2-testnet-genesis - Create a genesis state for an Eth2 testnet
- Source: source
- License: MIT
- Homepage: https://github.com/protolambda/eth2-testnet-genesis
- Usage:
nix run github:nix-community/ethereum.nix#eth2-testnet-genesis -- --help - Nix: packages/eth2-testnet-genesis/package.nix
eth2-val-tools - Some experimental tools to manage validators
- Source: source
- License: MIT
- Homepage: https://github.com/protolambda/eth2-val-tools
- Usage:
nix run github:nix-community/ethereum.nix#eth2-val-tools -- --help - Nix: packages/eth2-val-tools/package.nix
ethdo - A command-line tool for managing common tasks in Ethereum 2
- Source: source
- License: APSL-2.0
- Homepage: https://github.com/wealdtech/ethdo
- Usage:
nix run github:nix-community/ethereum.nix#ethdo -- --help - Nix: packages/ethdo/package.nix
ethereal - A command-line tool for managing common tasks in Ethereum
- Source: source
- License: APSL-2.0
- Homepage: https://github.com/wealdtech/ethereal/
- Usage:
nix run github:nix-community/ethereum.nix#ethereal -- --help - Nix: packages/ethereal/package.nix
heimdall - A toolkit for EVM bytecode analysis
- Source: source
- License: Check package
- Homepage: https://heimdall.rs
- Usage:
nix run github:nix-community/ethereum.nix#heimdall -- --help - Nix: packages/heimdall/package.nix
kurtosis - CLI for Kurtosis, a framework for building and running distributed systems
- Source: binary
- License: Apache-2.0
- Homepage: https://github.com/kurtosis-tech/kurtosis
- Usage:
nix run github:nix-community/ethereum.nix#kurtosis -- --help - Nix: packages/kurtosis/package.nix
sedge - A one-click setup tool for PoS network/chain validators and nodes.
- Source: source
- License: Apache-2.0
- Homepage: https://docs.sedge.nethermind.io/
- Usage:
nix run github:nix-community/ethereum.nix#sedge -- --help - Nix: packages/sedge/package.nix
tx-fuzz - TX-Fuzz is a package containing helpful functions to create random transactions
- Source: source
- License: MIT
- Homepage: https://github.com/MariusVanDerWijden/tx-fuzz
- Usage:
nix run github:nix-community/ethereum.nix#tx-fuzz -- --help - Nix: packages/tx-fuzz/package.nix
zcli - Eth2 CLI debugging tool
- Source: source
- License: MIT
- Homepage: https://github.com/protolambda/zcli
- Usage:
nix run github:nix-community/ethereum.nix#zcli -- --help - Nix: packages/zcli/package.nix
blutgang - the wd40 of ethereum load balancers
- Source: source
- License: GPL-2.0-only
- Homepage: https://github.com/rainshowerLabs/blutgang
- Usage:
nix run github:nix-community/ethereum.nix#blutgang -- --help - Nix: packages/blutgang/package.nix
rotki-bin - An open source portfolio tracking tool that respects your privacy
- Source: binary
- License: AGPL-3.0-or-later
- Homepage: https://rotki.com/
- Usage:
nix run github:nix-community/ethereum.nix#rotki-bin -- --help - Nix: packages/rotki-bin/package.nix
formatter - One CLI to format the code tree
- Source: unknown
- License: MIT
- Homepage: https://github.com/numtide/treefmt
- Usage:
nix run github:nix-community/ethereum.nix#formatter -- --help - Nix: packages/formatter/package.nix
nimbus - Nimbus is a lightweight client for the Ethereum consensus layer
- Source: unknown
- License: Check package
- Homepage: https://nimbus.guide/
- Usage:
nix run github:nix-community/ethereum.nix#nimbus -- --help - Nix: packages/nimbus/package.nix
solidity-language-server - Solidity language server by Nomic Foundation
- Source: source
- License: MIT
- Homepage: https://github.com/NomicFoundation/hardhat-vscode
- Usage:
nix run github:nix-community/ethereum.nix#solidity-language-server -- --help - Nix: packages/solidity-language-server/package.nix
eigenlayer - Utility manages core operator functionalities like local key management, operator registration and updates
- Source: source
- License: BUSL-1.1
- Homepage: https://www.eigenlayer.xyz/
- Usage:
nix run github:nix-community/ethereum.nix#eigenlayer -- --help - Nix: packages/eigenlayer/package.nix
ethstaker-deposit-cli - Secure key generation for deposits (ethstaker fork)
- Source: binary
- License: CC0-1.0
- Homepage: https://github.com/ethstaker/ethstaker-deposit-cli/
- Usage:
nix run github:nix-community/ethereum.nix#ethstaker-deposit-cli -- --help - Nix: packages/ethstaker-deposit-cli/package.nix
rocketpool - Rocket Pool CLI
- Source: source
- License: GPL-3.0-only
- Homepage: https://github.com/rocket-pool/smartnode
- Usage:
nix run github:nix-community/ethereum.nix#rocketpool -- --help - Nix: packages/rocketpool/package.nix
rocketpoold - Rocket Pool Daemon
- Source: source
- License: GPL-3.0-only
- Homepage: https://github.com/rocket-pool/smartnode
- Usage:
nix run github:nix-community/ethereum.nix#rocketpoold -- --help - Nix: packages/rocketpoold/package.nix
staking-deposit-cli - Secure key generation for deposits
- Source: binary
- License: CC0-1.0
- Homepage: https://github.com/ethereum/staking-deposit-cli
- Usage:
nix run github:nix-community/ethereum.nix#staking-deposit-cli -- --help - Nix: packages/staking-deposit-cli/package.nix
Add to your system configuration:
{
inputs = {
ethereum.url = "github:nix-community/ethereum.nix";
};
# In your system packages:
environment.systemPackages = with inputs.ethereum.packages.${pkgs.stdenv.hostPlatform.system}; [
geth
lighthouse
reth
mev-boost
# ... other tools
];
}Alternatively, use the overlay to access packages under the ethereum namespace:
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
ethereum.url = "github:nix-community/ethereum.nix";
};
outputs = { nixpkgs, ethereum, ... }: {
# NixOS configuration
nixosConfigurations.myhost = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [{
nixpkgs.overlays = [ ethereum.overlays.default ];
environment.systemPackages = [
pkgs.ethereum.geth
pkgs.ethereum.lighthouse
pkgs.ethereum.prysm
];
}];
};
};
}# Try Geth (Execution Client)
nix run github:nix-community/ethereum.nix#geth -- --help
# Try Lighthouse (Consensus Client)
nix run github:nix-community/ethereum.nix#lighthouse -- --help
# Try Reth (Execution Client)
nix run github:nix-community/ethereum.nix#reth -- --help
# Try MEV-Boost
nix run github:nix-community/ethereum.nix#mev-boost -- --help
# etc...We use devshell to have nice development environments. Otherwise:
nix develop# Build a specific package
nix build .#claude-code
nix build .#opencode
nix build .#qwen-code
# etc...To run all tests:
nix flake checkYou can manually format the source:
nix fmtWe welcome any contribution or support to this project, but before doing so:
- Make sure you have read the contribution guide for more details on how to submit a good PR (pull request).
In addition, you can always:
- Add a GitHub Star 🌟 to the project.
- Tweet about this project.
This project has been inspired by the awesome work of:
-
cosmos.nixby Informal Systems, which this repository takes inspiration from its README and several other places. -
willruggiano on his work done in
eth-nixrepository that served as the initial kick-start for working on this project.
Individual tools are licensed under their respective licenses.
The Nix packaging code in this repository is licensed under MIT.