Preheat oven to 350°. Spread pistachios on a rimmed baking sheet and toast until just beginning to brown, about 4 minutes. Transfer to a plate, let cool, then coarsely chop. Spread almonds on the same baking sheet and toast until golden brown, 5-8 minutes; let cool. Set nuts aside. Place rice in a fine-mesh sieve and rinse under cold water until water runs clear. Cook rice in a large pot of boiling salted water, stirring occasionally, until grains have lengthened but are still firm, 6-7 minutes; drain and rinse under cold water. Spread rice on another rimmed baking sheet; let cool. Meanwhile, using a vegetable peeler, remove zest from orange and thinly slice lengthwise (reserve flesh for another use). Bring sugar and 1 cup water to a boil in a medium saucepan, stirring to dissolve sugar. Add orange zest and carrots, reduce heat, and simmer, stirring occasionally, until carrots are tender, 15-20 minutes; drain and set aside (discard syrup). Combine barberries and raisins in a small bowl and cover with hot water; let soak 10 minutes. Drain and set aside. Place saffron in another small bowl and add 1/4 cup hot water; set aside. Heat butter and 1 tablespoon oil in a large skillet over medium heat. Add onion, season with salt, and cook, stirring often, until soft and beginning to brown, 8-10 minutes. Add cardamom, cumin, turmeric, and 1 tablespoon saffron mixture. Cook, stirring constantly, until fragrant, about 1 minute. Reduce heat to low, add barberries and raisins, and cook, stirring often, about 3 minutes. Stir in reserved nuts and orange zest and carrot mixture; season with salt. Set fruit and nut mixture aside. Heat remaining 3 tablespoons oil in a large wide heavy pot over medium heat. Add half of rice, spreading evenly; top with fruit and nut mixture, then remaining rice, spreading evenly. Using the end of a wooden spoon, poke 5-6 holes in rice all the way through to bottom of pot (to help release steam and help rice cook evenly). Drizzle remaining saffron mixture over rice. Place a clean kitchen towel over pot, cover with a tight-fitting lid, and secure loose edges of towel on top of lid, using a rubber band or masking tape. Cook until pot begins to steam, 5-8 minutes. Reduce heat to very low and cook, without stirring, until rice is tender and bottom layer of rice is browned and crisp, 30-40 minutes. Scoop rice into a wide serving bowl, breaking bottom crust into pieces. DO AHEAD: Fruit and nut mixture can be made 2 days ahead. Cover fruit and nut mixture and remaining saffron mixture separately and chill.