bolt2

Lightning peer protocol, per BOLT #2 (docs.ppad.tech/bolt2).
git clone git://git.ppad.tech/bolt2.git
Log | Files | Refs | README | LICENSE

flake.nix (2368B)


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