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


      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_19.llvm;
     65         clang = pkgs.llvmPackages_19.clang;
     66 
     67         bip32 = ppad-bip32.packages.${system}.default;
     68         bip32-llvm =
     69           hlib.addBuildTools
     70             (hlib.enableCabalFlag bip32 "llvm")
     71             [ llvm clang ];
     72 
     73         sha256 = ppad-sha256.packages.${system}.default;
     74         sha256-llvm =
     75           hlib.addBuildTools
     76             (hlib.enableCabalFlag sha256 "llvm")
     77             [ llvm clang ];
     78 
     79         sha512 = ppad-sha512.packages.${system}.default;
     80         sha512-llvm =
     81           hlib.addBuildTools
     82             (hlib.enableCabalFlag sha512 "llvm")
     83             [ llvm clang ];
     84 
     85         pbkdf = ppad-pbkdf.packages.${system}.default;
     86         pbkdf-llvm =
     87           hlib.addBuildTools
     88             (hlib.enableCabalFlag pbkdf "llvm")
     89             [ llvm clang ];
     90 
     91         hpkgs = pkgs.haskell.packages.ghc910.extend (new: old: {
     92           ppad-bip32 = bip32-llvm;
     93           ppad-base16 = ppad-base16.packages.${system}.default;
     94           ppad-sha256 = sha256-llvm;
     95           ppad-sha512 = sha512-llvm;
     96           ppad-pbkdf = pbkdf-llvm;
     97           ${lib} = new.callCabal2nixWithOptions lib ./. "--enable-profiling" {
     98             ppad-bip32 = new.ppad-bip32;
     99             ppad-base16 = new.ppad-base16;
    100             ppad-sha256 = new.ppad-sha256;
    101             ppad-sha512 = new.ppad-sha512;
    102             ppad-pbkdf = new.ppad-pbkdf;
    103           };
    104         });
    105 
    106         cc    = pkgs.stdenv.cc;
    107         ghc   = hpkgs.ghc;
    108         cabal = hpkgs.cabal-install;
    109       in
    110         {
    111           packages.default = hpkgs.${lib};
    112 
    113           devShells.default = hpkgs.shellFor {
    114             packages = p: [
    115               (hlib.doBenchmark p.${lib})
    116             ];
    117 
    118             buildInputs = [
    119               cabal
    120               cc
    121               llvm
    122             ];
    123 
    124             doBenchmark = true;
    125 
    126             shellHook = ''
    127               PS1="[${lib}] \w$ "
    128               echo "entering ${system} shell, using"
    129               echo "cc:    $(${cc}/bin/cc --version)"
    130               echo "ghc:   $(${ghc}/bin/ghc --version)"
    131               echo "cabal: $(${cabal}/bin/cabal --version)"
    132               echo "llc:   $(${llvm}/bin/llc --version | head -2 | tail -1)"
    133             '';
    134           };
    135         }
    136       );
    137 }
    138