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