Preheat the oven to 390°F. Use the butter to grease the bottom and sides of a 9x9" baking dish.
Vertically assemble the bread slices in the baking dish. Make sure to place them in all sorts of directions to leave a bit of room in between the slices.
Pour the evaporated milk into a small pot. Add the piloncillo, star anise, whole cloves, vanilla extract, ground cinnamon, and ground ginger. Place it over low heat and stir constantly. Let the mixture simmer for 5 minutes. Remove it from the heat and set it aside.
Add the coconut to a small pan over low heat. Stir it constantly and let it toast for 5-8 minutes or until golden. Remove it from the heat and set it aside.
Add the toasted coconut, almonds, pecans, walnuts, peanuts, and raisins to a small bowl. Mix until well combined. Set it aside.
Sprinkle the toppings over the bread and into the nooks between its slices.
Use a fine mesh sieve to strain the milk over the bread and toppings. Gently squeeze the bread into the baking dish to help coat it with the mixture.
Pop it into the oven for 15-20 minutes or until the cheese is nice and melty. Remove it from the oven and serve warm.
Storage: Once fully cooled, you can refrigerate this Mexican bread pudding for up to 5 days. I suggest doing so in an airtight container to avoid the transfer of odors from strong-smelling foods like onions, but you can also cover the baking dish with foil and pop it in the fridge.Reheat: To reheat it, sprinkle it with 1-2 teaspoons of milk and then microwave it for up to a minute or until warm. If you're reheating a large portion (for more than 3 people), place it in the oven at 360°F for 6-12 minutes.