{ lib, ... }: {
  nixpkgs.overlays = [ (final: prev:
  builtins.listToAttrs (map (pkg: {
    name = pkg;
    value = let
      argsPath = ./${pkg}/args.nix;
    in final.callPackage ./${pkg}
    (if (builtins.pathExists argsPath) then
      (import argsPath final)
    else { });
  }) (builtins.attrNames (builtins.readDir ./.)))
  ) ];
}