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 (2426B)


      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     };
     11     ppad-sha256 = {
     12       type = "git";
     13       url  = "git://git.ppad.tech/sha256.git";
     14       ref  = "master";
     15       inputs.ppad-nixpkgs.follows = "ppad-nixpkgs";
     16     };
     17     ppad-nixpkgs = {
     18       type = "git";
     19       url  = "git://git.ppad.tech/nixpkgs.git";
     20       ref  = "master";
     21     };
     22     flake-utils.follows = "ppad-nixpkgs/flake-utils";
     23     nixpkgs.follows = "ppad-nixpkgs/nixpkgs";
     24   };
     25 
     26   outputs = { self, nixpkgs, flake-utils, ppad-nixpkgs
     27              , ppad-bolt1, ppad-sha256 }:
     28     flake-utils.lib.eachDefaultSystem (system:
     29       let
     30         lib = "ppad-bolt7";
     31 
     32         pkgs  = import nixpkgs { inherit system; };
     33         hlib  = pkgs.haskell.lib;
     34         llvm  = pkgs.llvmPackages_19.llvm;
     35         clang = pkgs.llvmPackages_19.clang;
     36 
     37         bolt1 = ppad-bolt1.packages.${system}.default;
     38         bolt1-llvm =
     39           hlib.addBuildTools
     40             (hlib.enableCabalFlag bolt1 "llvm")
     41             [ llvm clang ];
     42 
     43         sha256 = ppad-sha256.packages.${system}.default;
     44         sha256-llvm =
     45           hlib.addBuildTools
     46             (hlib.enableCabalFlag sha256 "llvm")
     47             [ llvm clang ];
     48 
     49         hpkgs = pkgs.haskell.packages.ghc910.extend (new: old: {
     50           ppad-bolt1 = bolt1-llvm;
     51           ppad-sha256 = sha256-llvm;
     52           ${lib} = new.callCabal2nix lib ./. {
     53             ppad-bolt1 = new.ppad-bolt1;
     54             ppad-sha256 = new.ppad-sha256;
     55           };
     56         });
     57 
     58         cc    = pkgs.stdenv.cc;
     59         ghc   = hpkgs.ghc;
     60         cabal = hpkgs.cabal-install;
     61       in
     62         {
     63           packages.default = hpkgs.${lib};
     64 
     65           packages.haddock = hpkgs.${lib}.doc;
     66 
     67           devShells.default = hpkgs.shellFor {
     68             packages = p: [
     69               (hlib.doBenchmark p.${lib})
     70             ];
     71 
     72             buildInputs = [
     73               cabal
     74               cc
     75               llvm
     76             ];
     77 
     78             shellHook = ''
     79               PS1="[${lib}] \w$ "
     80               echo "entering ${system} shell, using"
     81               echo "cc:    $(${cc}/bin/cc --version)"
     82               echo "ghc:   $(${ghc}/bin/ghc --version)"
     83               echo "cabal: $(${cabal}/bin/cabal --version)"
     84             '';
     85           };
     86         }
     87       );
     88 }