Preheat oven to 350°F.
Grease and line two 8-inch round cake pans.
In a large bowl, cream the butter and sugar until light and fluffy. Add eggs one at a time, mixing well.
In another bowl, mix flour, pudding mix, baking powder, and salt. Alternate adding dry ingredients and milk to the butter mixture.
Stir in vanilla and chopped pistachios.
Divide batter evenly between pans and bake for 25–30 minutes, until a toothpick comes out clean. Let cool completely.
For frosting, beat butter until smooth. Gradually add powdered sugar, then cream, pudding mix, vanilla, and salt. Beat until fluffy.
Place one cake layer on a plate, spread frosting, then add second layer. Frost the top and sides evenly. Decorate with piped frosting and sprinkle chopped pistachios on top.