Wash the rice in several changes of water to remove the excess starch until the water runs clear. Cover with fresh water and set aside to soak. This produces fluffier, softer rice and ensures that each grain remains separate.
Crush the saffron lightly in a pestle and mortar, then pour over the orange flower water and set aside to soak.
Heat the butter and oil in a large lidded pan and fry the shallots over a high heat until dark brown and crisp. Remove from the pan with a slotted spoon and drain on kitchen paper.
Lower the heat and fry the spices and nuts in the remaining fat for a few minutes until they begin to change colour.
Drain the rice and add to the pan along with the salt, saffron and orange flower water. Cook, stirring constantly, for a few minutes.
Pour in the water and bring to the boil, then reduce the heat, cover with a tight-fitting lid and simmer for 15 minutes, or until the rice is tender. Allow to cool slightly.
To serve, fluff up the grains of rice with a fork and sprinkle over the shallots. Remove the whole spices before eating.