Bring a large pot of water to a full boil. Add the dried pasta and cook it for 1 minute less than the package directions specify for al dente pasta.
Drain the cooked pasta thoroughly in a strainer and reserve it for later.
While the pasta cooks, grate the cheddar and mozzarella cheeses and finely chop the garlic, if using.
If using blocks of cheese, grate the cheddar and shred or cube the mozzarella. Finely chop the garlic cloves if they are being included in the recipe.
Keep the prepared cheeses and garlic set aside until required.
Using the same Dutch oven or large pot in which the pasta was cooked, melt the butter over medium heat.
Add the chopped garlic, if using, and sauté it for approximately 1 minute, or just until fragrant.
Add the flour to the melted butter and whisk continuously. Cook for approximately 1–2 minutes, until the roux develops a wet-sand consistency and becomes lightly golden.
Gradually pour the heavy cream and whole milk into the roux while whisking continuously to keep the sauce smooth and free of lumps.
Continue cooking over medium heat, stirring frequently, until the liquid thickens into a smooth, creamy sauce.
Stir in the salt along with any optional herbs being used.
Add the grated cheddar gradually, approximately one handful at a time. Stir thoroughly after each addition and allow the cheese to melt completely before adding the next portion.
If desired, incorporate a small additional pinch of salt once the cheddar has melted to enhance the cheese flavor.
Add the drained pasta directly to the hot cheese sauce. Stir gently until every piece of pasta is evenly coated.
If the Dutch oven is not being used for baking, transfer the macaroni and cheese mixture to a suitable baking dish.
Distribute the cubed or shredded mozzarella evenly over the surface.
Bake at 350°F (175°C) for 25–30 minutes, or until the macaroni and cheese is bubbling and the mozzarella topping has begun to develop a light golden-brown color.
For a more pronounced cheesy crust, allow the surface to become golden before removing the dish from the oven.
Let the macaroni and cheese cool for a few minutes before serving.