1. Make the garam masala:
Purée poppy seeds and 1 tbsp. water in a spice grinder into a paste;
transfer to a bowl. Grind remaining spices into a powder; stir into paste.
2. Make the nihari:
Heat oil and onion in a 6-qt. saucepan over medium. Cook until onion is caramelized, about 25 minutes; using a slotted spoon, transfer onion to a bowl.
Discard all but ¼ cup oil from the pan. Cook lamb, turning as needed,
until browned, 8–10 minutes.
Stir in reserved garam masala, the cayenne, garlic and ginger pastes, and
salt; cook 1–2 minutes.
Add 3 cups water; boil. Reduce heat to medium-low; cook, covered, until
lamb has fallen off the bone, 5½–6 hours.
Using tongs, transfer lamb to a bowl; keep warm.
Stir flour, ghee, and ¼ cup water in a bowl and add to pan; cook until
thickened, about 15 minutes. Return lamb to pan.
Serve with the reserved onion, julienned ginger, and, if you like, the
cilantro, lemon or lime wedges, chiles, and naan.