diff --git a/recipes/eduke32/icon.png b/recipes/eduke32/icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..4cbfd165068f168bdfbb9e74b60894130cedbb3e
Binary files /dev/null and b/recipes/eduke32/icon.png differ
diff --git a/recipes/eduke32/manifest b/recipes/eduke32/manifest
new file mode 100644
index 0000000000000000000000000000000000000000..75708295e1ab241a27adca06702417b98c957997
--- /dev/null
+++ b/recipes/eduke32/manifest
@@ -0,0 +1,4 @@
+name=EDuke32
+binary=/games/eduke32
+icon=/ui/icons/apps/eduke32.png
+
diff --git a/recipes/eduke32/recipe.sh b/recipes/eduke32/recipe.sh
index 658c2d0dc4aa07ecd5a4fd384975cef3d3200830..5ab7df329a5e57917488eff9f709bc33a40430c8 100644
--- a/recipes/eduke32/recipe.sh
+++ b/recipes/eduke32/recipe.sh
@@ -23,9 +23,15 @@ function recipe_clean {
 }
 
 function recipe_stage {
-    dest="$(realpath $1)"
     mkdir -pv "$1/games"
-    cp ./eduke32 "$1/games/eduke32"
-    cp ./mapster32 "$1/games/mapster32"
+    cp -v ./eduke32 "$1/games/eduke32"
+    cp -v ./mapster32 "$1/games/mapster32"
+
+    mkdir -pv "$1/ui/apps"
+    cp -v "${COOKBOOK_RECIPE}/manifest" "$1/ui/apps/eduke32"
+
+    mkdir -pv "$1/ui/icons/apps"
+    cp -v "${COOKBOOK_RECIPE}/icon.png" "$1/ui/icons/apps/eduke32.png"
+
     skip=1
 }