Skip to content

A Nix flake offerring blockchain development tools

License

Notifications You must be signed in to change notification settings

metacraft-labs/nix-blockchain-development

Repository files navigation

nix-blockchain-development

A Nix flake offering blockchain development tools

Packages

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
  • packages.${arch}.${pkg} - suitable for use with nix shell
  1. 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
  2. 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
  3. 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
  4. 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

Usage examples

Imperative (ad hoc) with nix shell

# Replace solana with the package you want to use:
nix shell github:metacraft-labs/nix-blockchain-development#solana

Declarative with Nix Flakes dev shell

  • 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>
        ];
      }

About

A Nix flake offerring blockchain development tools

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published