flake.nix (3157B)
1 { 2 description = "A Haskell implementation of BOLT #3."; 3 4 inputs = { 5 ppad-nixpkgs = { 6 type = "git"; 7 url = "git://git.ppad.tech/nixpkgs.git"; 8 ref = "master"; 9 }; 10 ppad-sha256 = { 11 type = "git"; 12 url = "git://git.ppad.tech/sha256.git"; 13 ref = "master"; 14 inputs.ppad-nixpkgs.follows = "ppad-nixpkgs"; 15 }; 16 ppad-secp256k1 = { 17 type = "git"; 18 url = "git://git.ppad.tech/secp256k1.git"; 19 ref = "master"; 20 inputs.ppad-nixpkgs.follows = "ppad-nixpkgs"; 21 inputs.ppad-sha256.follows = "ppad-sha256"; 22 }; 23 ppad-ripemd160 = { 24 type = "git"; 25 url = "git://git.ppad.tech/ripemd160.git"; 26 ref = "master"; 27 inputs.ppad-nixpkgs.follows = "ppad-nixpkgs"; 28 }; 29 ppad-tx = { 30 type = "git"; 31 url = "git://git.ppad.tech/tx.git"; 32 ref = "master"; 33 inputs.ppad-nixpkgs.follows = "ppad-nixpkgs"; 34 inputs.ppad-sha256.follows = "ppad-sha256"; 35 }; 36 flake-utils.follows = "ppad-nixpkgs/flake-utils"; 37 nixpkgs.follows = "ppad-nixpkgs/nixpkgs"; 38 }; 39 40 outputs = { self, nixpkgs, flake-utils, ppad-nixpkgs 41 , ppad-sha256, ppad-secp256k1, ppad-ripemd160 42 , ppad-tx }: 43 flake-utils.lib.eachDefaultSystem (system: 44 let 45 lib = "ppad-bolt3"; 46 47 pkgs = import nixpkgs { inherit system; }; 48 hlib = pkgs.haskell.lib; 49 llvm = pkgs.llvmPackages_19.llvm; 50 clang = pkgs.llvmPackages_19.clang; 51 52 sha256 = ppad-sha256.packages.${system}.default; 53 sha256-llvm = 54 hlib.addBuildTools 55 (hlib.enableCabalFlag sha256 "llvm") 56 [ llvm clang ]; 57 58 secp256k1 = ppad-secp256k1.packages.${system}.default; 59 secp256k1-llvm = 60 hlib.addBuildTools 61 (hlib.enableCabalFlag secp256k1 "llvm") 62 [ llvm clang ]; 63 64 ripemd160 = ppad-ripemd160.packages.${system}.default; 65 ripemd160-llvm = 66 hlib.addBuildTools 67 (hlib.enableCabalFlag ripemd160 "llvm") 68 [ llvm clang ]; 69 70 tx = ppad-tx.packages.${system}.default; 71 72 hpkgs = pkgs.haskell.packages.ghc910.extend (new: old: { 73 ppad-sha256 = sha256-llvm; 74 ppad-secp256k1 = secp256k1-llvm; 75 ppad-ripemd160 = ripemd160-llvm; 76 ppad-tx = tx; 77 ${lib} = new.callCabal2nix lib ./. { }; 78 }); 79 80 cc = pkgs.stdenv.cc; 81 ghc = hpkgs.ghc; 82 cabal = hpkgs.cabal-install; 83 in 84 { 85 packages.default = hpkgs.${lib}; 86 87 packages.haddock = hpkgs.${lib}.doc; 88 89 devShells.default = hpkgs.shellFor { 90 packages = p: [ 91 (hlib.doBenchmark p.${lib}) 92 ]; 93 94 buildInputs = [ 95 cabal 96 cc 97 llvm 98 ]; 99 100 shellHook = '' 101 PS1="[${lib}] \w$ " 102 echo "entering ${system} shell, using" 103 echo "cc: $(${cc}/bin/cc --version)" 104 echo "ghc: $(${ghc}/bin/ghc --version)" 105 echo "cabal: $(${cabal}/bin/cabal --version)" 106 ''; 107 }; 108 } 109 ); 110 } 111