bolt3

Lightning transaction and script formats, per BOLT #3 (docs.ppad.tech/bolt3).
git clone git://git.ppad.tech/bolt3.git
Log | Files | Refs | README | LICENSE

flake.nix (4323B)


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