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


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