Rinse the basmati rice under cold water until the water runs clear. Soak the rice in water for 30 minutes, then drain.
In a large pot, bring 4 cups of water to a boil. Add the soaked rice and cook for about 10 minutes, or until the rice is al dente. Drain the rice and set aside.
In the same pot, melt the butter and vegetable oil over medium heat. Add the chopped onion and sauté until golden brown, about 5-7 minutes.
Stir in the cinnamon, cardamom, turmeric, and salt. Cook for another minute until fragrant.
Layer half of the cooked rice over the onion mixture in the pot. Sprinkle half of the dried apricots, raisins, almonds, and pistachios over the rice. Add the remaining rice on top, followed by the rest of the dried fruits and nuts.
Cover the pot with a tight-fitting lid and cook on low heat for 30-40 minutes, allowing the flavors to meld and the rice to steam.
Once done, remove from heat and let it sit for 10 minutes before fluffing the rice with a fork.
Gently fold in the pomegranate seeds, parsley, orange zest, and lemon zest before serving.