flake.nix (2570B)
1 { 2 description = "Minimal Bitcoin transaction primitives for Haskell."; 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-sha256 = { 17 type = "git"; 18 url = "git://git.ppad.tech/sha256.git"; 19 ref = "master"; 20 inputs.ppad-nixpkgs.follows = "ppad-nixpkgs"; 21 }; 22 flake-utils.follows = "ppad-nixpkgs/flake-utils"; 23 nixpkgs.follows = "ppad-nixpkgs/nixpkgs"; 24 }; 25 26 outputs = { self, nixpkgs, flake-utils, ppad-nixpkgs 27 , ppad-base16, ppad-sha256 28 }: 29 flake-utils.lib.eachDefaultSystem (system: 30 let 31 lib = "ppad-tx"; 32 33 pkgs = import nixpkgs { inherit system; }; 34 hlib = pkgs.haskell.lib; 35 llvm = pkgs.llvmPackages_19.llvm; 36 clang = pkgs.llvmPackages_19.clang; 37 38 base16 = ppad-base16.packages.${system}.default; 39 base16-llvm = 40 hlib.addBuildTools 41 (hlib.enableCabalFlag base16 "llvm") 42 [ llvm clang ]; 43 44 sha256 = ppad-sha256.packages.${system}.default; 45 sha256-llvm = 46 hlib.addBuildTools 47 (hlib.enableCabalFlag sha256 "llvm") 48 [ llvm clang ]; 49 50 hpkgs = pkgs.haskell.packages.ghc910.extend (new: old: { 51 ppad-base16 = base16-llvm; 52 ppad-sha256 = sha256-llvm; 53 ${lib} = new.callCabal2nix lib ./. { 54 ppad-base16 = new.ppad-base16; 55 ppad-sha256 = new.ppad-sha256; 56 }; 57 }); 58 59 cc = pkgs.stdenv.cc; 60 ghc = hpkgs.ghc; 61 cabal = hpkgs.cabal-install; 62 in 63 { 64 packages.default = hpkgs.${lib}; 65 66 packages.haddock = hpkgs.${lib}.doc; 67 68 devShells.default = hpkgs.shellFor { 69 packages = p: [ 70 (hlib.doBenchmark p.${lib}) 71 ]; 72 73 buildInputs = [ 74 cabal 75 cc 76 llvm 77 ]; 78 79 doBenchmark = true; 80 81 shellHook = '' 82 PS1="[${lib}] \w$ " 83 echo "entering ${system} shell, using" 84 echo "cc: $(${cc}/bin/cc --version)" 85 echo "ghc: $(${ghc}/bin/ghc --version)" 86 echo "cabal: $(${cabal}/bin/cabal --version)" 87 echo "llc: $(${llvm}/bin/llc --version | head -2 | tail -1)" 88 ''; 89 }; 90 } 91 ); 92 }