Preheat oven to 350 degrees.
In a large bowl, combine cake mix, water, buttermilk, oil, eggs, pudding mix. Beat with a mixer for about 2 minutes. Fold in sour cream.
Pour batter into a greased 9x13 glass baking dish.
In a smaller bowl, combine sugars, flour, cinnamon, and salt. Cut butter into small pieces and add to the sugar mixture. Mix together with a fork or pastry blender until crumbly. Stir in walnuts.
Sprinkle half of the topping over the batter. Use a knife to swirl the mixture throughout the cake. (You can also keep ALL of the topping over the top, as shown in the picture)
Top evenly with remaining topping.
Bake for 35-45 minutes or until a toothpick inserted into the center comes out clean.