Wash the rice, drain from water. Allow to dry.
Heat 2 tsp ghee and 2 tsp oil in pan, when hot, throw in the crushed cardamoms, cinnamon, cloves and bay leaves. Allow the spices to splutter and release their fragrance.
Now add the rice, sauté for a minute or two. Add 4.5 cups of water, cook for 15 minutes or so till all the water is absorbed. Keep aside.
Marinate the fish with a little turmeric powder and salt.
Heat 2 tbsp oil, lightly sauté the fish pieces. Keep aside on a kitchen absorbent towel.
In the same pan add another 3 tbsp oil, add the chopped onions, fry till they soften and catch a tinge of light brown. Now sprinkle in the turmeric powder and red chilli powder. Continue to sauté for a minute or so.
Stir in the ginger paste, garlic paste and green chilli paste. Cook for a further 5 minutes. At this stage, throw in the chopped tomatoes, continue to cook till the raw smell of tomatoes is no longer there and oil starts to release from the masala.
Now add half the crushed fried onions and 3 tsp of the Biryani masala powder. Cook for a further 5 odd minutes.
Finally gently add the fried fish pieces, coat evenly with the masala. Cover and cool over a low flame for a final 5 minutes.