bolt7

Routing gossip protocol, per BOLT #7 (docs.ppad.tech/bolt7).
git clone git://git.ppad.tech/bolt7.git
Log | Files | Refs | README | LICENSE

flake.nix (3158B)


      1 {
      2   description = "A Haskell implementation of BOLT #7.";
      3 
      4   inputs = {
      5     ppad-bolt1 = {
      6       type = "git";
      7       url  = "git://git.ppad.tech/bolt1.git";
      8       ref  = "master";
      9       inputs.ppad-nixpkgs.follows = "ppad-nixpkgs";
     10       inputs.ppad-bolt9.follows = "ppad-bolt9";
     11     };
     12     ppad-bolt9 = {
     13       type = "git";
     14       url  = "git://git.ppad.tech/bolt9.git";
     15       ref  = "master";
     16       inputs.ppad-nixpkgs.follows = "ppad-nixpkgs";
     17     };
     18     ppad-secp256k1 = {
     19       type = "git";
     20       url  = "git://git.ppad.tech/secp256k1.git";
     21       ref  = "master";
     22       inputs.ppad-nixpkgs.follows = "ppad-nixpkgs";
     23       inputs.ppad-sha256.follows = "ppad-sha256";
     24     };
     25     ppad-sha256 = {
     26       type = "git";
     27       url  = "git://git.ppad.tech/sha256.git";
     28       ref  = "master";
     29       inputs.ppad-nixpkgs.follows = "ppad-nixpkgs";
     30     };
     31     ppad-nixpkgs = {
     32       type = "git";
     33       url  = "git://git.ppad.tech/nixpkgs.git";
     34       ref  = "master";
     35     };
     36     flake-utils.follows = "ppad-nixpkgs/flake-utils";
     37     nixpkgs.follows = "ppad-nixpkgs/nixpkgs";
     38   };
     39 
     40   outputs = { self, nixpkgs, flake-utils, ppad-nixpkgs
     41              , ppad-bolt1, ppad-bolt9, ppad-secp256k1, ppad-sha256 }:
     42     flake-utils.lib.eachDefaultSystem (system:
     43       let
     44         lib = "ppad-bolt7";
     45 
     46         pkgs  = import nixpkgs { inherit system; };
     47         hlib  = pkgs.haskell.lib;
     48         llvm  = pkgs.llvmPackages_19.llvm;
     49         clang = pkgs.llvmPackages_19.clang;
     50 
     51         bolt1 = ppad-bolt1.packages.${system}.default;
     52         bolt9 = ppad-bolt9.packages.${system}.default;
     53 
     54         secp256k1 = ppad-secp256k1.packages.${system}.default;
     55         secp256k1-llvm =
     56           hlib.addBuildTools
     57             (hlib.enableCabalFlag secp256k1 "llvm")
     58             [ llvm clang ];
     59 
     60         sha256 = ppad-sha256.packages.${system}.default;
     61         sha256-llvm =
     62           hlib.addBuildTools
     63             (hlib.enableCabalFlag sha256 "llvm")
     64             [ llvm clang ];
     65 
     66         hpkgs = pkgs.haskell.packages.ghc910.extend (new: old: {
     67           ppad-bolt1 = bolt1;
     68           ppad-bolt9 = bolt9;
     69           ppad-secp256k1 = secp256k1-llvm;
     70           ppad-sha256 = sha256-llvm;
     71           ${lib} = new.callCabal2nix lib ./. {
     72             ppad-bolt1 = new.ppad-bolt1;
     73             ppad-secp256k1 = new.ppad-secp256k1;
     74             ppad-sha256 = new.ppad-sha256;
     75           };
     76         });
     77 
     78         cc    = pkgs.stdenv.cc;
     79         ghc   = hpkgs.ghc;
     80         cabal = hpkgs.cabal-install;
     81       in
     82         {
     83           packages.default = hpkgs.${lib};
     84 
     85           packages.haddock = hpkgs.${lib}.doc;
     86 
     87           devShells.default = hpkgs.shellFor {
     88             packages = p: [
     89               (hlib.doBenchmark p.${lib})
     90             ];
     91 
     92             buildInputs = [
     93               cabal
     94               cc
     95               llvm
     96               clang
     97             ];
     98 
     99             shellHook = ''
    100               PS1="[${lib}] \w$ "
    101               echo "entering ${system} shell, using"
    102               echo "cc:    $(${cc}/bin/cc --version)"
    103               echo "ghc:   $(${ghc}/bin/ghc --version)"
    104               echo "cabal: $(${cabal}/bin/cabal --version)"
    105             '';
    106           };
    107         }
    108       );
    109 }