bip39

BIP39 mnemonic codes in Haskell (docs.ppad.tech/bip39).
git clone git://git.ppad.tech/bip39.git
Log | Files | Refs | README | LICENSE

flake.nix (4092B)


      1 {
      2   description = "Pure Haskell BIP39 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-bip32 = {
     11       type = "git";
     12       url  = "git://git.ppad.tech/bip32.git";
     13       ref  = "master";
     14       inputs.ppad-nixpkgs.follows = "ppad-nixpkgs";
     15       inputs.ppad-base16.follows = "ppad-base16";
     16       inputs.ppad-sha256.follows = "ppad-sha256";
     17       inputs.ppad-sha512.follows = "ppad-sha512";
     18     };
     19     ppad-base16 = {
     20       type = "git";
     21       url  = "git://git.ppad.tech/base16.git";
     22       ref  = "master";
     23       inputs.ppad-nixpkgs.follows = "ppad-nixpkgs";
     24     };
     25     ppad-sha256 = {
     26       type = "git";
     27       url  = "git://git.ppad.tech/sha256.git";
     28       ref  = "master";
     29       inputs.ppad-nixpkgs.follows = "ppad-nixpkgs";
     30       inputs.ppad-base16.follows = "ppad-base16";
     31     };
     32     ppad-sha512 = {
     33       type = "git";
     34       url  = "git://git.ppad.tech/sha512.git";
     35       ref  = "master";
     36       inputs.ppad-nixpkgs.follows = "ppad-nixpkgs";
     37       inputs.ppad-base16.follows = "ppad-base16";
     38     };
     39     ppad-pbkdf = {
     40       type = "git";
     41       url  = "git://git.ppad.tech/pbkdf.git";
     42       ref  = "master";
     43       inputs.ppad-nixpkgs.follows = "ppad-nixpkgs";
     44       inputs.ppad-base16.follows = "ppad-base16";
     45       inputs.ppad-sha256.follows = "ppad-sha256";
     46       inputs.ppad-sha512.follows = "ppad-sha512";
     47     };
     48     flake-utils.follows = "ppad-nixpkgs/flake-utils";
     49     nixpkgs.follows = "ppad-nixpkgs/nixpkgs";
     50   };
     51 
     52   outputs = { self, nixpkgs, flake-utils, ppad-nixpkgs
     53             , ppad-sha256, ppad-sha512
     54             , ppad-base16
     55             , ppad-bip32
     56             , ppad-pbkdf
     57             }:
     58     flake-utils.lib.eachDefaultSystem (system:
     59       let
     60         lib = "ppad-bip39";
     61 
     62         pkgs = import nixpkgs { inherit system; };
     63         hlib = pkgs.haskell.lib;
     64         llvm = pkgs.llvmPackages_15.llvm;
     65 
     66         bip32 = ppad-bip32.packages.${system}.default;
     67         bip32-llvm =
     68           hlib.addBuildTools
     69             (hlib.enableCabalFlag bip32 "llvm")
     70             [ llvm ];
     71 
     72         sha256 = ppad-sha256.packages.${system}.default;
     73         sha256-llvm =
     74           hlib.addBuildTools
     75             (hlib.enableCabalFlag sha256 "llvm")
     76             [ llvm ];
     77 
     78         sha512 = ppad-sha512.packages.${system}.default;
     79         sha512-llvm =
     80           hlib.addBuildTools
     81             (hlib.enableCabalFlag sha512 "llvm")
     82             [ llvm ];
     83 
     84         pbkdf = ppad-pbkdf.packages.${system}.default;
     85         pbkdf-llvm =
     86           hlib.addBuildTools
     87             (hlib.enableCabalFlag pbkdf "llvm")
     88             [ llvm ];
     89 
     90         hpkgs = pkgs.haskell.packages.ghc981.extend (new: old: {
     91           ppad-bip32 = bip32-llvm;
     92           ppad-base16 = ppad-base16.packages.${system}.default;
     93           ppad-sha256 = sha256-llvm;
     94           ppad-sha512 = sha512-llvm;
     95           ppad-pbkdf = pbkdf-llvm;
     96           ${lib} = new.callCabal2nixWithOptions lib ./. "--enable-profiling" {
     97             ppad-bip32 = new.ppad-bip32;
     98             ppad-base16 = new.ppad-base16;
     99             ppad-sha256 = new.ppad-sha256;
    100             ppad-sha512 = new.ppad-sha512;
    101             ppad-pbkdf = new.ppad-pbkdf;
    102           };
    103         });
    104 
    105         cc    = pkgs.stdenv.cc;
    106         ghc   = hpkgs.ghc;
    107         cabal = hpkgs.cabal-install;
    108       in
    109         {
    110           packages.default = hpkgs.${lib};
    111 
    112           devShells.default = hpkgs.shellFor {
    113             packages = p: [
    114               (hlib.doBenchmark p.${lib})
    115             ];
    116 
    117             buildInputs = [
    118               cabal
    119               cc
    120               llvm
    121             ];
    122 
    123             doBenchmark = true;
    124 
    125             shellHook = ''
    126               PS1="[${lib}] \w$ "
    127               echo "entering ${system} shell, using"
    128               echo "cc:    $(${cc}/bin/cc --version)"
    129               echo "ghc:   $(${ghc}/bin/ghc --version)"
    130               echo "cabal: $(${cabal}/bin/cabal --version)"
    131               echo "llc:   $(${llvm}/bin/llc --version | head -2 | tail -1)"
    132             '';
    133           };
    134         }
    135       );
    136 }
    137