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