Mix all the marinade ingredients together in a large bowl. Add the duck and toss to coat well. Cover and marinate in the refrigerator for 6–8 hours or overnight.
Heat a small frying pan over a low heat and dry-roast the coconut for a few minutes until lightly golden. Remove from the heat and set aside.
Heat the oil in a large saucepan over a medium heat and fry the onion for 8–10 minutes until soft and lightly browned. Add the roasted coconut, tomato purée, chillies, cloves, garam masala and cinnamon stick. Stir well to blend. Add the duck with the marinade and stir-fry over a high heat for 5 minutes.
Add the measured water and bring to the boil. Reduce the heat to low and simmer, covered, for 25–30 minutes until the duck is tender and the sauce is thick. Garnish with chopped coriander and serve with lime wedges for squeezing.