A Nix flake offering blockchain development tools
This repo is provided as a Nix Flake. The packages defined here can be consumed via one of the flake output categories:
overlays.default
(which you can e.g. apply on top of Nixpkgs)- All packages are placed inside the
metacraft-labs
namespace - For example:
metacraft-labs.solana
- All packages are placed inside the
packages.${arch}.${pkg}
- suitable for use withnix shell
package name | description | supported platforms |
---|---|---|
avalanche-cli | Helps developers develop and test subnets | x86_64-linux, x86_64-darwin, aarch64-darwin |
bnb-beacon-node | Blockchain with a flexible set of native assets and pluggable modules | x86_64-linux, x86_64-darwin, aarch64-darwin |
cardano | HTTP server & command-line for managing UTxOs and HD wallets in Cardano | x86_64-linux, x86_64-darwin |
cardano-graphql | GraphQL API for Cardano | x86_64-linux, x86_64-darwin |
cosmos-theta-testnet | Cosmos Testnets | x86_64-linux, x86_64-darwin, aarch64-darwin |
gaiad | Cosmos Hub is the first of many interconnected blockchains powered by the interchain stack: CometBFT, CosmosSDK and IBC | x86_64-linux, x86_64-darwin, aarch64-darwin |
wasmd | Basic cosmos-sdk app with web assembly smart contracts | x86_64-linux |
cdt | A suite of tools to facilitate C/C++ development of contracts for Antelope blockchains | x86_64-linux |
eos-vm | A Low-Latency, High Performance and Extensible WebAssembly Engine | x86_64-linux |
leap | C++ implementation of the Antelope protocol | x86_64-linux |
go-opera | Opera blockchain protocol secured by the Lachesis consensus algorithm | x86_64-linux, x86_64-darwin, aarch64-darwin |
polkadot | Polkadot Node Implementation | x86_64-linux, x86_64-darwin, aarch64-darwin |
polkadot-fast | Polkadot Node Implementation with fast-runtime enabled | x86_64-linux, x86_64-darwin, aarch64-darwin |
package name | description | supported platforms |
---|---|---|
circom | zkSnark circuit compiler | x86_64-linux, x86_64-darwin, aarch64-darwin |
circom_runtime | The code needed to calculate the witness by a circuit compiled with circom | x86_64-linux, x86_64-darwin, aarch64-darwin |
ffiasm | A script that generates a Finite field Library in Intel64 and ARM Assembly | x86_64-linux, x86_64-darwin |
ffiasm-src | Intel assembly finite field library generator | x86_64-linux, x86_64-darwin |
rapidsnark | zkSnark proof generation written in C++ and intel assembly | x86_64-linux, x86_64-darwin |
rapidsnark-server | x86_64-linux | |
zqfield-bn254 | x86_64-linux, x86_64-darwin |
package name | description | supported platforms |
---|---|---|
jolt | RISC-V-based zkVM with simplicity, speed and extensibility in mind | x86_64-linux |
nexus | A modular, extensible and highly-parallelized zkVM | x86_64-linux |
risc0 | Zero-knowledge verifiable general computing platform based on zk-STARKS and RISC-V | x86_64-linux |
sp1 | The fastest, most-feature complete zkVM for developers | x86_64-linux |
zkm | General verifiable computing infrastructure, empowering Ethereum as the Global Settlement Layer | x86_64-linux |
zkwasm | ZKWASM serves as a trustless layer between rich applilcations running on WASM runtime and smart contracts on chain | x86_64-linux |
package name | description | supported platforms |
---|---|---|
jolt-guest-rust | Rust with the riscv32im-jolt-zkvm-elf compilation target | x86_64-linux |
risc0-rust | Rust with the riscv32im-risc0-zkvm-elf compilation target | x86_64-linux |
package name | description | supported platforms |
---|---|---|
emscripten | An LLVM-to-WebAssembly Compiler | x86_64-linux, x86_64-darwin, aarch64-darwin |
kurtosis | A platform for packaging and launching ephemeral backend stacks with a focus on approachability for the average developer | x86_64-linux |
package name | description | supported platforms |
---|---|---|
blst | Multilingual BLS12-381 signature library | x86_64-linux, x86_64-darwin, aarch64-darwin |
py-ecc | Python implementation of ECC pairing and bn_128 and bls12_381 curve operations | x86_64-linux |
package name | description | supported platforms |
---|---|---|
pistache | A high-performance REST toolkit written in C++ | x86_64-linux |
# Replace solana with the package you want to use:
nix shell github:metacraft-labs/nix-blockchain-development#solana
-
flake.nix
:{ # <after>: # Opt into `nix-blockchain-development`'s substituter (binary cache). # `nixConfig` settings are not transitive so every user of a flake with a # custom binary cache must manually include its `nixConfig` settings for # substituters and trusted public keys: nixConfig = { extra-substituters = "https://nix-blockchain-development.cachix.org"; extra-trusted-public-keys = "nix-blockchain-development.cachix.org-1:Ekei3RuW3Se+P/UIo6Q/oAgor/fVhFuuuX5jR8K/cdg="; }; inputs = { # <before>: # nixpkgs.url = "github:NixOS/nixpkgs/nixos-22.05"; # flake-utils.url = github:numtide/flake-utils; # <after>: # To ensure all packages from mcl-blockchain will be fetched from its # binary cache we need to ensure that we use exact same commit hash of the # inputs below. If we didn't, we may either: # * end up with multiple copies of the same package from nixpkgs # * be unable to use the binary cache, since the packages there where # using different versions of their dependencies from nixpkgs mcl-blockchain.url = "github:metacraft-labs/nix-blockchain-development"; nixpkgs.follows = "mcl-blockchain/nixpkgs"; flake-utils.follows = "mcl-blockchain/flake-utils"; }; outputs = { self, nixpkgs, flake-utils, mcl-blockchain, # <after> }: flake-utils.lib.simpleFlake { inherit self nixpkgs; name = "solana-hello-world"; shell = ./shell.nix; preOverlays = [mcl-blockchain.overlays.default]; # <after> }; }
-
shell.nix
:{pkgs}: with pkgs; mkShell { packages = [ metacraft-labs.polkadot # <after> ]; }