Puncture the eyes of the coconut with a nail, and drain the milk into a small saucepan. Using a hammer, crack open coconut. Remove the outer shell and dark-brown skin; discard. Grate flesh.
Cook coconut milk over low heat until reduced to syrup consistency, about 20 minutes. Set aside.
In a large saucepan, combine whole milk and grated coconut. Bring to a gentle boil, cover, and remove pan from heat. Let steep 1 hour. Pass mixture through a cheesecloth-lined sieve, pressing very hard on solids. Reserve strained whole milk, and discard solids.
Combine egg yolks and sugar in the bowl of an electric mixer fitted with paddle attachment. Cream at medium-high speed until very thick and pale yellow, 3 to 5 minutes. Return whole milk to a simmer.
Add half of the warm whole milk to egg-yolk mixture, and whisk until blended. Return new mixture to saucepan with remaining milk. Cook over low heat, stirring constantly, until the mixture is thick enough to coat the back of a wooden spoon.
Have ready an ice-water bath. Remove saucepan from heat, and immediately stir in cream. Pass mixture through a sieve set over a medium bowl. Place bowl in ice-water bath, and chill. Add reduced coconut milk and cream of coconut.
Freeze in an ice-cream maker according to the manufacturer's instructions. Add sweetened coconut flakes, and mix in machine until combined, about 30 seconds. Store in an airtight plastic container up to 2 weeks.