bolt8

Encrypted and authenticated transport, per BOLT #8 (docs.ppad.tech/bolt8).
git clone git://git.ppad.tech/bolt8.git
Log | Files | Refs | README | LICENSE

flake.nix (4000B)


      1 {
      2   description = "A Haskell implementation of BOLT #8.";
      3 
      4   inputs = {
      5     ppad-aead = {
      6       type = "git";
      7       url  = "git://git.ppad.tech/aead.git";
      8       ref  = "master";
      9       inputs.ppad-nixpkgs.follows = "ppad-nixpkgs";
     10     };
     11     ppad-base16 = {
     12       type = "git";
     13       url  = "git://git.ppad.tech/base16.git";
     14       ref  = "master";
     15       inputs.ppad-nixpkgs.follows = "ppad-nixpkgs";
     16     };
     17     ppad-hkdf = {
     18       # XX temporarily using github mirror
     19       type = "github";
     20       owner = "ppad-tech";
     21       repo = "hkdf";
     22       # type = "git";
     23       # url  = "git://git.ppad.tech/hkdf.git";
     24       ref  = "master";
     25       inputs.ppad-nixpkgs.follows = "ppad-nixpkgs";
     26       inputs.ppad-sha256.follows = "ppad-sha256";
     27     };
     28     ppad-secp256k1 = {
     29       type = "git";
     30       url  = "git://git.ppad.tech/secp256k1.git";
     31       ref  = "master";
     32       inputs.ppad-nixpkgs.follows = "ppad-nixpkgs";
     33       inputs.ppad-sha256.follows = "ppad-sha256";
     34     };
     35     ppad-sha256 = {
     36       type = "git";
     37       url  = "git://git.ppad.tech/sha256.git";
     38       ref  = "master";
     39       inputs.ppad-nixpkgs.follows = "ppad-nixpkgs";
     40     };
     41     ppad-nixpkgs = {
     42       type = "git";
     43       url  = "git://git.ppad.tech/nixpkgs.git";
     44       ref  = "master";
     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-aead, ppad-base16, ppad-hkdf, ppad-secp256k1, ppad-sha256
     52             }:
     53     flake-utils.lib.eachDefaultSystem (system:
     54       let
     55         lib = "ppad-bolt8";
     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         aead = ppad-aead.packages.${system}.default;
     63         aead-llvm =
     64           hlib.addBuildTools
     65             (hlib.enableCabalFlag aead "llvm")
     66             [ llvm clang ];
     67 
     68         base16 = ppad-base16.packages.${system}.default;
     69         base16-llvm =
     70           hlib.addBuildTools
     71             (hlib.enableCabalFlag base16 "llvm")
     72             [ llvm clang ];
     73 
     74         hkdf = ppad-hkdf.packages.${system}.default;
     75         hkdf-llvm =
     76           hlib.addBuildTools
     77             (hlib.enableCabalFlag hkdf "llvm")
     78             [ llvm clang ];
     79 
     80         secp256k1 = ppad-secp256k1.packages.${system}.default;
     81         secp256k1-llvm =
     82           hlib.addBuildTools
     83             (hlib.enableCabalFlag secp256k1 "llvm")
     84             [ llvm clang ];
     85 
     86         sha256 = ppad-sha256.packages.${system}.default;
     87         sha256-llvm =
     88           hlib.addBuildTools
     89             (hlib.enableCabalFlag sha256 "llvm")
     90             [ llvm clang ];
     91 
     92         hpkgs = pkgs.haskell.packages.ghc910.extend (new: old: {
     93           ppad-aead = aead-llvm;
     94           ppad-base16 = base16-llvm;
     95           ppad-hkdf = hkdf-llvm;
     96           ppad-secp256k1 = secp256k1-llvm;
     97           ppad-sha256 = sha256-llvm;
     98           ${lib} = new.callCabal2nix lib ./. {
     99             ppad-aead = new.ppad-aead;
    100             ppad-base16 = new.ppad-base16;
    101             ppad-hkdf = new.ppad-hkdf;
    102             ppad-secp256k1 = new.ppad-secp256k1;
    103             ppad-sha256 = new.ppad-sha256;
    104           };
    105         });
    106 
    107         cc    = pkgs.stdenv.cc;
    108         ghc   = hpkgs.ghc;
    109         cabal = hpkgs.cabal-install;
    110       in
    111         {
    112           packages.default = hpkgs.${lib};
    113 
    114           packages.haddock = hpkgs.${lib}.doc;
    115 
    116           devShells.default = hpkgs.shellFor {
    117             packages = p: [
    118               (hlib.doBenchmark p.${lib})
    119             ];
    120 
    121             buildInputs = [
    122               cabal
    123               cc
    124               llvm
    125             ];
    126 
    127             shellHook = ''
    128               PS1="[${lib}] \w$ "
    129               echo "entering ${system} shell, using"
    130               echo "cc:    $(${cc}/bin/cc --version)"
    131               echo "ghc:   $(${ghc}/bin/ghc --version)"
    132               echo "cabal: $(${cabal}/bin/cabal --version)"
    133             '';
    134           };
    135         }
    136       );
    137 }
    138