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


      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-secp256k1 = {
     52       type = "git";
     53       url  = "git://git.ppad.tech/secp256k1.git";
     54       ref  = "master";
     55       inputs.ppad-nixpkgs.follows = "ppad-nixpkgs";
     56       inputs.ppad-base16.follows = "ppad-base16";
     57       inputs.ppad-fixed.follows = "ppad-fixed";
     58       inputs.ppad-sha256.follows = "ppad-sha256";
     59       inputs.ppad-sha512.follows = "ppad-sha512";
     60     };
     61     flake-utils.follows = "ppad-nixpkgs/flake-utils";
     62     nixpkgs.follows = "ppad-nixpkgs/nixpkgs";
     63   };
     64 
     65   outputs = { self, nixpkgs, flake-utils, ppad-nixpkgs
     66             , ppad-fixed
     67             , ppad-sha256, ppad-sha512, ppad-ripemd160
     68             , ppad-base16, ppad-base58
     69             , ppad-secp256k1 }:
     70     flake-utils.lib.eachDefaultSystem (system:
     71       let
     72         lib = "ppad-bip32";
     73 
     74         pkgs = import nixpkgs { inherit system; };
     75         hlib  = pkgs.haskell.lib;
     76         llvm  = pkgs.llvmPackages_19.llvm;
     77         clang = pkgs.llvmPackages_19.clang;
     78 
     79         fixed = ppad-fixed.packages.${system}.default;
     80         fixed-llvm =
     81           hlib.addBuildTools
     82             (hlib.enableCabalFlag fixed "llvm")
     83             [ llvm 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         sha512 = ppad-sha512.packages.${system}.default;
     92         sha512-llvm =
     93           hlib.addBuildTools
     94             (hlib.enableCabalFlag sha512 "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         base16 = ppad-base16.packages.${system}.default;
    104         base16-llvm =
    105           hlib.addBuildTools
    106             (hlib.enableCabalFlag base16 "llvm")
    107             [ llvm clang ];
    108 
    109         base58 = ppad-base58.packages.${system}.default;
    110         base58-llvm =
    111           hlib.addBuildTools
    112             (hlib.enableCabalFlag base58 "llvm")
    113             [ llvm clang ];
    114 
    115         ripemd160 = ppad-ripemd160.packages.${system}.default;
    116         ripemd160-llvm =
    117           hlib.addBuildTools
    118             (hlib.enableCabalFlag ripemd160 "llvm")
    119             [ llvm clang ];
    120 
    121         hpkgs = pkgs.haskell.packages.ghc910.extend (new: old: {
    122           ppad-base16 = base16-llvm;
    123           ppad-base58 = base58-llvm;
    124           ppad-fixed = fixed-llvm;
    125           ppad-ripemd160 = ripemd160-llvm;
    126           ppad-secp256k1 = secp256k1-llvm;
    127           ppad-sha256 = sha256-llvm;
    128           ppad-sha512 = sha512-llvm;
    129           ${lib} = new.callCabal2nix lib ./. {
    130             ppad-base16 = new.ppad-base16;
    131             ppad-base58 = new.ppad-base58;
    132             ppad-fixed = new.ppad-fixed;
    133             ppad-ripemd160 = new.ppad-ripemd160;
    134             ppad-secp256k1 = new.ppad-secp256k1;
    135             ppad-sha256 = new.ppad-sha256;
    136             ppad-sha512 = new.ppad-sha512;
    137           };
    138         });
    139 
    140         cc    = pkgs.stdenv.cc;
    141         ghc   = hpkgs.ghc;
    142         cabal = hpkgs.cabal-install;
    143       in
    144         {
    145           packages.default = hpkgs.${lib};
    146 
    147           devShells.default = hpkgs.shellFor {
    148             packages = p: [
    149               (hlib.doBenchmark p.${lib})
    150             ];
    151 
    152             buildInputs = [
    153               cabal
    154               cc
    155               llvm
    156             ];
    157 
    158             doBenchmark = true;
    159 
    160             shellHook = ''
    161               PS1="[${lib}] \w$ "
    162               echo "entering ${system} shell, using"
    163               echo "cc:    $(${cc}/bin/cc --version)"
    164               echo "ghc:   $(${ghc}/bin/ghc --version)"
    165               echo "cabal: $(${cabal}/bin/cabal --version)"
    166               echo "llc:   $(${llvm}/bin/llc --version | head -2 | tail -1)"
    167             '';
    168           };
    169         }
    170       );
    171 }
    172