bip32

Pure Haskell BIP32 hierarchical deterministic wallets (docs.ppad.tech/bip32).
git clone git://git.ppad.tech/bip32.git
Log | Files | Refs | README | LICENSE

flake.nix (5708B)


      1 {
      2   description = "Pure Haskell BIP32 hierarchical deterministic wallets.";
      3 
      4   inputs = {
      5     ppad-nixpkgs = {
      6       type = "git";
      7       url  = "git://git.ppad.tech/nixpkgs.git";
      8       ref  = "master";
      9     };
     10     ppad-base16 = {
     11       type = "git";
     12       url  = "git://git.ppad.tech/base16.git";
     13       ref  = "master";
     14       inputs.ppad-nixpkgs.follows = "ppad-nixpkgs";
     15     };
     16     ppad-base58 = {
     17       type = "git";
     18       url  = "git://git.ppad.tech/base58.git";
     19       ref  = "master";
     20       inputs.ppad-nixpkgs.follows = "ppad-nixpkgs";
     21       inputs.ppad-base16.follows = "ppad-base16";
     22       inputs.ppad-sha256.follows = "ppad-sha256";
     23     };
     24     ppad-fixed = {
     25       type = "git";
     26       url  = "git://git.ppad.tech/fixed.git";
     27       ref  = "master";
     28       inputs.ppad-nixpkgs.follows = "ppad-nixpkgs";
     29     };
     30     ppad-sha256 = {
     31       type = "git";
     32       url  = "git://git.ppad.tech/sha256.git";
     33       ref  = "master";
     34       inputs.ppad-nixpkgs.follows = "ppad-nixpkgs";
     35       inputs.ppad-base16.follows = "ppad-base16";
     36     };
     37     ppad-sha512 = {
     38       type = "git";
     39       url  = "git://git.ppad.tech/sha512.git";
     40       ref  = "master";
     41       inputs.ppad-nixpkgs.follows = "ppad-nixpkgs";
     42       inputs.ppad-base16.follows = "ppad-base16";
     43     };
     44     ppad-ripemd160 = {
     45       type = "git";
     46       url  = "git://git.ppad.tech/ripemd160.git";
     47       ref  = "master";
     48       inputs.ppad-nixpkgs.follows = "ppad-nixpkgs";
     49       inputs.ppad-base16.follows = "ppad-base16";
     50     };
     51     ppad-hmac-drbg = {
     52       type = "git";
     53       url  = "git://git.ppad.tech/hmac-drbg.git";
     54       ref  = "master";
     55       inputs.ppad-sha256.follows = "ppad-sha256";
     56       inputs.ppad-sha512.follows = "ppad-sha512";
     57       inputs.ppad-base16.follows = "ppad-base16";
     58       inputs.ppad-nixpkgs.follows = "ppad-nixpkgs";
     59     };
     60     ppad-secp256k1 = {
     61       type = "git";
     62       url  = "git://git.ppad.tech/secp256k1.git";
     63       ref  = "master";
     64       inputs.ppad-nixpkgs.follows = "ppad-nixpkgs";
     65       inputs.ppad-base16.follows = "ppad-base16";
     66       inputs.ppad-fixed.follows = "ppad-fixed";
     67       inputs.ppad-hmac-drbg.follows = "ppad-hmac-drbg";
     68       inputs.ppad-sha256.follows = "ppad-sha256";
     69       inputs.ppad-sha512.follows = "ppad-sha512";
     70     };
     71     flake-utils.follows = "ppad-nixpkgs/flake-utils";
     72     nixpkgs.follows = "ppad-nixpkgs/nixpkgs";
     73   };
     74 
     75   outputs = { self, nixpkgs, flake-utils, ppad-nixpkgs
     76             , ppad-fixed
     77             , ppad-sha256, ppad-sha512, ppad-ripemd160
     78             , ppad-base16, ppad-base58
     79             , ppad-hmac-drbg
     80             , ppad-secp256k1 }:
     81     flake-utils.lib.eachDefaultSystem (system:
     82       let
     83         lib = "ppad-bip32";
     84 
     85         pkgs = import nixpkgs { inherit system; };
     86         hlib  = pkgs.haskell.lib;
     87         llvm  = pkgs.llvmPackages_19.llvm;
     88         clang = pkgs.llvmPackages_19.clang;
     89 
     90         fixed = ppad-fixed.packages.${system}.default;
     91         fixed-llvm =
     92           hlib.addBuildTools
     93             (hlib.enableCabalFlag fixed "llvm")
     94             [ llvm clang ];
     95 
     96         sha256 = ppad-sha256.packages.${system}.default;
     97         sha256-llvm =
     98           hlib.addBuildTools
     99             (hlib.enableCabalFlag sha256 "llvm")
    100             [ llvm clang ];
    101 
    102         sha512 = ppad-sha512.packages.${system}.default;
    103         sha512-llvm =
    104           hlib.addBuildTools
    105             (hlib.enableCabalFlag sha512 "llvm")
    106             [ llvm clang ];
    107 
    108         secp256k1 = ppad-secp256k1.packages.${system}.default;
    109         secp256k1-llvm =
    110           hlib.addBuildTools
    111             (hlib.enableCabalFlag secp256k1 "llvm")
    112             [ llvm clang ];
    113 
    114         base16 = ppad-base16.packages.${system}.default;
    115         base16-llvm =
    116           hlib.addBuildTools
    117             (hlib.enableCabalFlag base16 "llvm")
    118             [ llvm clang ];
    119 
    120         base58 = ppad-base58.packages.${system}.default;
    121         base58-llvm =
    122           hlib.addBuildTools
    123             (hlib.enableCabalFlag base58 "llvm")
    124             [ llvm clang ];
    125 
    126         ripemd160 = ppad-ripemd160.packages.${system}.default;
    127         ripemd160-llvm =
    128           hlib.addBuildTools
    129             (hlib.enableCabalFlag ripemd160 "llvm")
    130             [ llvm clang ];
    131 
    132         hpkgs = pkgs.haskell.packages.ghc910.extend (new: old: {
    133           ppad-base16 = base16-llvm;
    134           ppad-base58 = base58-llvm;
    135           ppad-fixed = fixed-llvm;
    136           ppad-ripemd160 = ripemd160-llvm;
    137           ppad-secp256k1 = secp256k1-llvm;
    138           ppad-sha256 = sha256-llvm;
    139           ppad-sha512 = sha512-llvm;
    140           ${lib} = new.callCabal2nix lib ./. {
    141             ppad-base16 = new.ppad-base16;
    142             ppad-base58 = new.ppad-base58;
    143             ppad-fixed = new.ppad-fixed;
    144             ppad-ripemd160 = new.ppad-ripemd160;
    145             ppad-secp256k1 = new.ppad-secp256k1;
    146             ppad-sha256 = new.ppad-sha256;
    147             ppad-sha512 = new.ppad-sha512;
    148           };
    149         });
    150 
    151         cc    = pkgs.stdenv.cc;
    152         ghc   = hpkgs.ghc;
    153         cabal = hpkgs.cabal-install;
    154       in
    155         {
    156           packages.default = hpkgs.${lib};
    157 
    158           devShells.default = hpkgs.shellFor {
    159             packages = p: [
    160               (hlib.doBenchmark p.${lib})
    161             ];
    162 
    163             buildInputs = [
    164               cabal
    165               cc
    166               llvm
    167             ];
    168 
    169             doBenchmark = true;
    170 
    171             shellHook = ''
    172               PS1="[${lib}] \w$ "
    173               echo "entering ${system} shell, using"
    174               echo "cc:    $(${cc}/bin/cc --version)"
    175               echo "ghc:   $(${ghc}/bin/ghc --version)"
    176               echo "cabal: $(${cabal}/bin/cabal --version)"
    177               echo "llc:   $(${llvm}/bin/llc --version | head -2 | tail -1)"
    178             '';
    179           };
    180         }
    181       );
    182 }
    183