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


      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-fixed = {
     17       type = "git";
     18       url  = "git://git.ppad.tech/fixed.git";
     19       ref  = "master";
     20       inputs.ppad-nixpkgs.follows = "ppad-nixpkgs";
     21     };
     22     ppad-secp256k1 = {
     23       type = "git";
     24       url  = "git://git.ppad.tech/secp256k1.git";
     25       ref  = "master";
     26       inputs.ppad-nixpkgs.follows = "ppad-nixpkgs";
     27       inputs.ppad-sha256.follows = "ppad-sha256";
     28       inputs.ppad-fixed.follows = "ppad-fixed";
     29     };
     30     ppad-ripemd160 = {
     31       type = "git";
     32       url  = "git://git.ppad.tech/ripemd160.git";
     33       ref  = "master";
     34       inputs.ppad-nixpkgs.follows = "ppad-nixpkgs";
     35     };
     36     ppad-tx = {
     37       type = "git";
     38       url  = "git://git.ppad.tech/tx.git";
     39       ref  = "master";
     40       inputs.ppad-nixpkgs.follows = "ppad-nixpkgs";
     41       inputs.ppad-sha256.follows = "ppad-sha256";
     42     };
     43     ppad-bolt9 = {
     44       type = "git";
     45       url  = "git://git.ppad.tech/bolt9.git";
     46       ref  = "master";
     47       inputs.ppad-nixpkgs.follows = "ppad-nixpkgs";
     48     };
     49     ppad-bolt1 = {
     50       type = "git";
     51       url  = "git://git.ppad.tech/bolt1.git";
     52       ref  = "master";
     53       inputs.ppad-nixpkgs.follows = "ppad-nixpkgs";
     54       inputs.ppad-bolt9.follows = "ppad-bolt9";
     55     };
     56     ppad-bolt3 = {
     57       type = "git";
     58       url  = "git://git.ppad.tech/bolt3.git";
     59       ref  = "master";
     60       inputs.ppad-nixpkgs.follows = "ppad-nixpkgs";
     61       inputs.ppad-bolt1.follows = "ppad-bolt1";
     62       inputs.ppad-bolt9.follows = "ppad-bolt9";
     63       inputs.ppad-fixed.follows = "ppad-fixed";
     64       inputs.ppad-sha256.follows = "ppad-sha256";
     65       inputs.ppad-secp256k1.follows = "ppad-secp256k1";
     66       inputs.ppad-ripemd160.follows = "ppad-ripemd160";
     67       inputs.ppad-tx.follows = "ppad-tx";
     68     };
     69     flake-utils.follows = "ppad-nixpkgs/flake-utils";
     70     nixpkgs.follows = "ppad-nixpkgs/nixpkgs";
     71   };
     72 
     73   outputs = { self, nixpkgs, flake-utils, ppad-nixpkgs
     74             , ppad-sha256, ppad-fixed, ppad-secp256k1, ppad-ripemd160
     75             , ppad-tx, ppad-bolt9, ppad-bolt1, ppad-bolt3 }:
     76     flake-utils.lib.eachDefaultSystem (system:
     77       let
     78         lib = "ppad-bolt5";
     79 
     80         pkgs  = import nixpkgs { inherit system; };
     81         hlib  = pkgs.haskell.lib;
     82         llvm  = pkgs.llvmPackages_19.llvm;
     83         clang = pkgs.llvmPackages_19.clang;
     84 
     85         sha256 = ppad-sha256.packages.${system}.default;
     86         sha256-llvm =
     87           hlib.addBuildTools
     88             (hlib.enableCabalFlag sha256 "llvm")
     89             [ llvm clang ];
     90 
     91         fixed = ppad-fixed.packages.${system}.default;
     92         fixed-llvm =
     93           hlib.addBuildTools
     94             (hlib.enableCabalFlag fixed "llvm")
     95             [ llvm clang ];
     96 
     97         secp256k1 = ppad-secp256k1.packages.${system}.default;
     98         secp256k1-llvm =
     99           hlib.addBuildTools
    100             (hlib.enableCabalFlag secp256k1 "llvm")
    101             [ llvm clang ];
    102 
    103         ripemd160 = ppad-ripemd160.packages.${system}.default;
    104         ripemd160-llvm =
    105           hlib.addBuildTools
    106             (hlib.enableCabalFlag ripemd160 "llvm")
    107             [ llvm clang ];
    108 
    109         tx = ppad-tx.packages.${system}.default;
    110         tx-llvm =
    111           hlib.addBuildTools
    112             (hlib.enableCabalFlag tx "llvm")
    113             [ llvm clang ];
    114 
    115         bolt9 = ppad-bolt9.packages.${system}.default;
    116         bolt1 = ppad-bolt1.packages.${system}.default;
    117         bolt3 = ppad-bolt3.packages.${system}.default;
    118 
    119         hpkgs = pkgs.haskell.packages.ghc910.extend (new: old: {
    120           ppad-sha256 = sha256-llvm;
    121           ppad-fixed = fixed-llvm;
    122           ppad-secp256k1 = secp256k1-llvm;
    123           ppad-ripemd160 = ripemd160-llvm;
    124           ppad-tx = tx-llvm;
    125           ppad-bolt9 = bolt9;
    126           ppad-bolt1 = bolt1;
    127           ppad-bolt3 = bolt3;
    128           ${lib} = new.callCabal2nix lib ./. { };
    129         });
    130 
    131         cc    = pkgs.stdenv.cc;
    132         ghc   = hpkgs.ghc;
    133         cabal = hpkgs.cabal-install;
    134       in
    135         {
    136           packages.default = hpkgs.${lib};
    137 
    138           packages.haddock = hpkgs.${lib}.doc;
    139 
    140           devShells.default = hpkgs.shellFor {
    141             packages = p: [
    142               (hlib.doBenchmark p.${lib})
    143             ];
    144 
    145             buildInputs = [
    146               cabal
    147               cc
    148               llvm
    149               clang
    150             ];
    151 
    152             shellHook = ''
    153               PS1="[${lib}] \w$ "
    154               echo "entering ${system} shell, using"
    155               echo "cc:    $(${cc}/bin/cc --version)"
    156               echo "ghc:   $(${ghc}/bin/ghc --version)"
    157               echo "cabal: $(${cabal}/bin/cabal --version)"
    158             '';
    159           };
    160         }
    161       );
    162 }