Prep the pan: Grease a 9x13-inch baking dish with butter. Set aside.
Cut the bread: Cube the day-old bread. If it’s very fresh, spread the cubes on a baking sheet and let them air-dry for 1–2 hours or toast in a 300°F (150°C) oven for 8–10 minutes.
Make the custard: In a large bowl, whisk the eggs, milk, sugars, vanilla, cinnamon, nutmeg, and salt until smooth.
Whisk in the melted butter.
Combine: Add the bread cubes to the baking dish. If using fruit or nuts, sprinkle them evenly over the bread. Pour the custard mixture all over, pressing the bread down to help it soak.
Rest: Cover tightly with foil or plastic wrap.
Refrigerate at least 30 minutes, but overnight is best (8–12 hours) for deeper flavor and ideal texture.
Preheat and bake: When ready to bake, preheat the oven to 350°F (175°C). Remove the casserole from the fridge while the oven heats. Bake covered with foil for 25 minutes, then uncover and bake another 20–25 minutes, until the top is golden and the center is set but still slightly soft.
Finish and serve: Let it rest 10 minutes.
Dust with powdered sugar, drizzle with maple syrup, and add berries if you like. Serve warm.