flake.nix (1975B)
1 { 2 description = "A Haskell implementation of BOLT #1."; 3 4 inputs = { 5 ppad-base16 = { 6 type = "git"; 7 url = "git://git.ppad.tech/base16.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 flake-utils.follows = "ppad-nixpkgs/flake-utils"; 17 nixpkgs.follows = "ppad-nixpkgs/nixpkgs"; 18 }; 19 20 outputs = { self, nixpkgs, flake-utils, ppad-nixpkgs, ppad-base16 }: 21 flake-utils.lib.eachDefaultSystem (system: 22 let 23 lib = "ppad-bolt1"; 24 25 pkgs = import nixpkgs { inherit system; }; 26 hlib = pkgs.haskell.lib; 27 llvm = pkgs.llvmPackages_19.llvm; 28 clang = pkgs.llvmPackages_19.clang; 29 30 base16 = ppad-base16.packages.${system}.default; 31 base16-llvm = 32 hlib.addBuildTools 33 (hlib.enableCabalFlag base16 "llvm") 34 [ llvm clang ]; 35 36 hpkgs = pkgs.haskell.packages.ghc910.extend (new: old: { 37 ppad-base16 = base16-llvm; 38 ${lib} = new.callCabal2nix lib ./. { 39 ppad-base16 = new.ppad-base16; 40 }; 41 }); 42 43 cc = pkgs.stdenv.cc; 44 ghc = hpkgs.ghc; 45 cabal = hpkgs.cabal-install; 46 in 47 { 48 packages.default = hpkgs.${lib}; 49 50 packages.haddock = hpkgs.${lib}.doc; 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 ]; 62 63 shellHook = '' 64 PS1="[${lib}] \w$ " 65 echo "entering ${system} shell, using" 66 echo "cc: $(${cc}/bin/cc --version)" 67 echo "ghc: $(${ghc}/bin/ghc --version)" 68 echo "cabal: $(${cabal}/bin/cabal --version)" 69 ''; 70 }; 71 } 72 ); 73 }