Preheat your oven to 350°F (175°C). Grease a 9x13 inch baking dish with butter or non-stick cooking spray.
Place the cubed bread in the prepared baking dish. If using, sprinkle the raisins and chopped nuts evenly over the bread cubes.
In a large mixing bowl, whisk together the whole milk, heavy cream, granulated sugar, eggs, vanilla extract, ground cinnamon, ground nutmeg, and salt until well combined.
Pour the custard mixture evenly over the bread cubes, pressing down gently to ensure all the bread is soaked in the custard. Let it sit for about 10-15 minutes to allow the bread to absorb the liquid.
Drizzle the melted butter over the top of the bread pudding. Cover the baking dish with aluminum foil and bake in the preheated oven for 30 minutes.
Remove the foil and continue to bake for an additional 20-25 minutes, or until the top is golden brown and a knife inserted into the center comes out clean.
While the bread pudding is baking, make the sauce. In a medium saucepan, combine the granulated sugar and unsalted butter. Cook over medium heat, stirring constantly, until the sugar is dissolved and the mixture is smooth.
Stir in the heavy cream, vanilla extract, and dark rum (if using). Continue to cook for another 2-3 minutes, until the sauce is slightly thickened.
Remove the bread pudding from the oven and let it cool slightly before serving. Drizzle the warm sauce over individual servings of the bread pudding.
Enjoy your meal!