flake.nix (2368B)
1 { 2 description = "A Haskell implementation of BOLT #2."; 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-nixpkgs = { 12 type = "git"; 13 url = "git://git.ppad.tech/nixpkgs.git"; 14 ref = "master"; 15 }; 16 ppad-tx = { 17 type = "git"; 18 url = "git://git.ppad.tech/tx.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, ppad-bolt1, ppad-tx }: 27 flake-utils.lib.eachDefaultSystem (system: 28 let 29 lib = "ppad-bolt2"; 30 31 pkgs = import nixpkgs { inherit system; }; 32 hlib = pkgs.haskell.lib; 33 llvm = pkgs.llvmPackages_19.llvm; 34 clang = pkgs.llvmPackages_19.clang; 35 36 bolt1 = ppad-bolt1.packages.${system}.default; 37 bolt1-llvm = 38 hlib.addBuildTools 39 (hlib.enableCabalFlag bolt1 "llvm") 40 [ llvm clang ]; 41 42 tx = ppad-tx.packages.${system}.default; 43 tx-llvm = 44 hlib.addBuildTools 45 (hlib.enableCabalFlag tx "llvm") 46 [ llvm clang ]; 47 48 hpkgs = pkgs.haskell.packages.ghc910.extend (new: old: { 49 ppad-bolt1 = bolt1-llvm; 50 ppad-tx = tx-llvm; 51 ${lib} = new.callCabal2nix lib ./. { 52 ppad-bolt1 = new.ppad-bolt1; 53 ppad-tx = new.ppad-tx; 54 }; 55 }); 56 57 cc = pkgs.stdenv.cc; 58 ghc = hpkgs.ghc; 59 cabal = hpkgs.cabal-install; 60 in 61 { 62 packages.default = hpkgs.${lib}; 63 64 packages.haddock = hpkgs.${lib}.doc; 65 66 devShells.default = hpkgs.shellFor { 67 packages = p: [ 68 (hlib.doBenchmark p.${lib}) 69 ]; 70 71 buildInputs = [ 72 cabal 73 cc 74 llvm 75 ]; 76 77 shellHook = '' 78 PS1="[${lib}] \w$ " 79 echo "entering ${system} shell, using" 80 echo "cc: $(${cc}/bin/cc --version)" 81 echo "ghc: $(${ghc}/bin/ghc --version)" 82 echo "cabal: $(${cabal}/bin/cabal --version)" 83 ''; 84 }; 85 } 86 ); 87 }