flake.nix (2426B)
1 { 2 description = "A Haskell implementation of BOLT #7."; 3 4 inputs = { 5 ppad-bolt1 = { 6 type = "git"; 7 url = "git://git.ppad.tech/bolt1.git"; 8 ref = "master"; 9 inputs.ppad-nixpkgs.follows = "ppad-nixpkgs"; 10 }; 11 ppad-sha256 = { 12 type = "git"; 13 url = "git://git.ppad.tech/sha256.git"; 14 ref = "master"; 15 inputs.ppad-nixpkgs.follows = "ppad-nixpkgs"; 16 }; 17 ppad-nixpkgs = { 18 type = "git"; 19 url = "git://git.ppad.tech/nixpkgs.git"; 20 ref = "master"; 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-bolt1, ppad-sha256 }: 28 flake-utils.lib.eachDefaultSystem (system: 29 let 30 lib = "ppad-bolt7"; 31 32 pkgs = import nixpkgs { inherit system; }; 33 hlib = pkgs.haskell.lib; 34 llvm = pkgs.llvmPackages_19.llvm; 35 clang = pkgs.llvmPackages_19.clang; 36 37 bolt1 = ppad-bolt1.packages.${system}.default; 38 bolt1-llvm = 39 hlib.addBuildTools 40 (hlib.enableCabalFlag bolt1 "llvm") 41 [ llvm clang ]; 42 43 sha256 = ppad-sha256.packages.${system}.default; 44 sha256-llvm = 45 hlib.addBuildTools 46 (hlib.enableCabalFlag sha256 "llvm") 47 [ llvm clang ]; 48 49 hpkgs = pkgs.haskell.packages.ghc910.extend (new: old: { 50 ppad-bolt1 = bolt1-llvm; 51 ppad-sha256 = sha256-llvm; 52 ${lib} = new.callCabal2nix lib ./. { 53 ppad-bolt1 = new.ppad-bolt1; 54 ppad-sha256 = new.ppad-sha256; 55 }; 56 }); 57 58 cc = pkgs.stdenv.cc; 59 ghc = hpkgs.ghc; 60 cabal = hpkgs.cabal-install; 61 in 62 { 63 packages.default = hpkgs.${lib}; 64 65 packages.haddock = hpkgs.${lib}.doc; 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 shellHook = '' 79 PS1="[${lib}] \w$ " 80 echo "entering ${system} shell, using" 81 echo "cc: $(${cc}/bin/cc --version)" 82 echo "ghc: $(${ghc}/bin/ghc --version)" 83 echo "cabal: $(${cabal}/bin/cabal --version)" 84 ''; 85 }; 86 } 87 ); 88 }