- Generously butter a 9x13-inch baking dish to prevent sticking. For added convenience, you can line with parchment paper with overhanging edges. 
- Cut or tear your day-old bread into 1-inch cubes. If you only have fresh bread, you can dry it out in a 250°F oven for 10 minutes. 
- In a large bowl, whisk together the eggs, milk, cream, sugar, vanilla, cinnamon, nutmeg, and salt until thoroughly combined. 
- Arrange the bread cubes in your prepared baking dish, then pour the custard mixture evenly over the bread. Press down gently with a spatula to help the bread absorb the liquid. 
- Cover with plastic wrap and refrigerate for at least 4 hours, but preferably overnight (8-12 hours) for optimal flavor infusion. 
- In a medium bowl, combine the flour, brown sugar, cinnamon, and salt. Add the cold butter cubes and use your fingers or a pastry cutter to work the mixture until it resembles coarse crumbs. Stir in nuts if using. 
- Preheat your oven to 350°F. Remove the casserole from the refrigerator while the oven heats. 
- Sprinkle the streusel topping evenly over the soaked bread. Bake for 45-50 minutes, or until the center is set and the top is golden brown. If the top browns too quickly, cover loosely with foil.