bolt1

Base Lightning protocol, per BOLT #1 (docs.ppad.tech/bolt1).
git clone git://git.ppad.tech/bolt1.git
Log | Files | Refs | README | LICENSE

flake.nix (2314B)


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