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