Mix the semolina and ghee.
In a large bowl, combine the semolina, sugar, and yeast.
Add the warm—not hot—ghee. Mix thoroughly, gently rubbing the mixture between your fingers until the semolina is evenly coated.
Let rest.
Cover and let rest for at least 1 hour so the semolina can absorb the ghee.
Prepare the fillings.
For the date filling, mix the date paste with the ghee or butter until smooth. Roll into small balls to make filling easier.
For the walnut filling, pulse the walnuts, butter or ghee, sugar, and water in a food processor until finely chopped and combined. Avoid processing into a smooth paste.
Finish the dough.
Add the evaporated milk to the rested semolina mixture. Gently mix until a soft, moldable dough forms. It should hold together when pressed without feeling wet or sticky.
Cover and let stand for 10–15 minutes before shaping.
Fill the cookies.
Take a small portion of dough and roll into a ball. Press a hollow into the center with your thumb, keeping the walls an even thickness.
Add a small amount of date or walnut filling. Bring the dough around the filling, pinch closed, and gently reshape into a ball.
Mold or decorate.
Press each filled ball into a ma’amoul mold, then gently tap it out. Alternatively, shape by hand and decorate with a fork or ma’amoul decorating tool.
Arrange on parchment-lined baking trays, leaving a little space between the cookies.
Bake.
Preheat the oven to 325°F (165°C).
Bake for 25–30 minutes, until the bottoms are lightly golden and the tops are set and still mostly pale.
Cool and finish.
Let the cookies cool on the tray until firm enough to move, then transfer carefully to a wire rack.
Once completely cool, dust lightly with powdered sugar.