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
-
Blockchain Node Software
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 -
ZK Circuit-related Software
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 -
General Dev Tools
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 -
Libraries
-
Cryptography-related
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 -
General-purpose
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> ]; }