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