{
  lib,
  basicArgs,
  buildInputs,
  nativeBuildInputs,
}: let
  f = {
    craneLib,
    lib,
    ...
  } @ args: let
    genInputs = lib.genInputsWith args;
  in
    craneLib.buildDepsOnly (basicArgs
      // {
        buildInputs = genInputs buildInputs;
        nativeBuildInputs = genInputs nativeBuildInputs;
      });
in
  with lib; setFunctionArgs f ((functionArgs f) // (genFunctionArgs (buildInputs ++ nativeBuildInputs)))
