Soak poppy seeds in water overnight. Water should be just enough to cover the poppy seeds.
Grind the poppy seeds along with the water and make a paste.
Heat ghee in a pan. Keep on a low flame throughout. Add the paste and stir. Cook till it becomes pinkish, take care not to burn. Keep stirring at this step.
When the paste seems to have cooked, add milk little by little. Around half a cup at a time. Mix and let cook till milk is absorbed. Finish all the milk in this way. It will take around an hour. The halwa has to turn creamish in color and all the milk should have become dry.
In between add the nuts, cardamom powder and sugar.
Last add the rose water. You may feel half the quantity of the milk is enough. But use up all of it and if you feel it smells raw then add more. The more milk we add the better it becomes.
Serve at room temperature.