bolt5

On-chain transaction handling for Lightning (docs.ppad.tech/bolt5).
git clone git://git.ppad.tech/bolt5.git
Log | Files | Refs | README | LICENSE

flake.nix (3625B)


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