diff --git a/recipes/eduke32/01_redox.patch b/recipes/eduke32/01_redox.patch
new file mode 100644
index 0000000000000000000000000000000000000000..e948345b81555c92a8330b720957ec583cfb858e
--- /dev/null
+++ b/recipes/eduke32/01_redox.patch
@@ -0,0 +1,156 @@
+diff -rupNw source-original/Common.mak source/Common.mak
+--- source-original/Common.mak	2018-07-14 23:36:44.000000000 +0200
++++ source/Common.mak	2018-12-03 19:13:25.028864957 +0100
+@@ -93,7 +93,7 @@ endif
+ 
+ ##### Makefile meta-settings
+ 
+-PRETTY_OUTPUT := 1
++PRETTY_OUTPUT := 0
+ 
+ NULLSTREAM := /dev/null
+ 
+@@ -172,6 +172,10 @@ ifeq ($(PLATFORM),WII)
+     CCFULLPATH = $(DEVKITPPC)/bin/$(CC)
+ endif
+ 
++ifeq ($(PLATFORM),REDOX)
++    CROSS := x86_64-unknown-redox-
++endif
++
+ CC := $(CROSS)gcc$(CROSS_SUFFIX)
+ CXX := $(CROSS)g++$(CROSS_SUFFIX)
+ 
+@@ -383,6 +387,15 @@ else ifeq ($(PLATFORM),$(filter $(PLATFO
+     override NOASM := 1
+ else ifeq ($(PLATFORM),$(filter $(PLATFORM),BEOS SKYOS))
+     override NOASM := 1
++else ifeq ($(PLATFORM),REDOX)
++    override USE_OPENGL := 0
++    override NETCODE := 0
++    override HAVE_GTK2 := 0
++    override HAVE_FLAC := 0
++    override HAVE_VORBIS := 0
++    override HAVE_XMP := 0
++    override MIXERTYPE := SDL
++    SDL_TARGET := 1
+ endif
+ 
+ ifneq (i386,$(strip $(IMPLICIT_ARCH)))
+@@ -868,7 +881,7 @@ ifeq ($(RENDERTYPE),SDL)
+         SDLCONFIG := sdl2-config
+         SDLNAME := SDL2
+     else ifeq ($(SDL_TARGET),1)
+-        SDLCONFIG := sdl-config
++        #SDLCONFIG := sdl-config
+         SDLNAME := SDL
+         ifeq (0,$(RELEASE))
+             COMPILERFLAGS += -DNOSDLPARACHUTE
+@@ -957,9 +970,11 @@ else ifeq ($(PLATFORM),WII)
+     LIBS += -laesnd_tueidj -lfat -lwiiuse -lbte -lwiikeyboard -logc
+ else ifeq ($(SUBPLATFORM),LINUX)
+     LIBS += -lrt
++else ifeq ($(PLATFORM),REDOX)
++    LIBS += -lorbital
+ endif
+ 
+-ifeq (,$(filter $(PLATFORM),WINDOWS WII))
++ifeq (,$(filter $(PLATFORM),WINDOWS WII REDOX))
+     ifneq ($(PLATFORM),BSD)
+         LIBS += -ldl
+     endif
+diff -rupNw source-original/source/build/include/compat.h source/source/build/include/compat.h
+--- source-original/source/build/include/compat.h	2018-10-07 07:21:24.000000000 +0200
++++ source/source/build/include/compat.h	2018-12-03 19:26:54.393942393 +0100
+@@ -7,6 +7,9 @@
+ 
+ #pragma once
+ 
++#  define B_LITTLE_ENDIAN 1
++#  define B_BIG_ENDIAN    0
++
+ #ifdef _WIN32
+ # include "windows_inc.h"
+ #endif
+@@ -400,6 +403,7 @@ defined __x86_64__ || defined __amd64__
+ #include <stdlib.h>
+ #include <stdio.h>
+ #include <string.h>
++#include <strings.h>
+ 
+ #include <math.h>
+ #include <float.h>
+@@ -542,8 +546,8 @@ typedef FILE BFILE;
+ # define BS_IWRITE S_IWUSR
+ # define BS_IREAD  S_IRUSR
+ #else
+-# define BS_IWRITE S_IWRITE
+-# define BS_IREAD  S_IREAD
++# define BS_IWRITE S_IWUSR
++# define BS_IREAD  S_IRUSR
+ #endif
+ 
+ #if defined(__cplusplus) && defined(_MSC_VER)
+diff -rupNw source-original/source/build/src/baselayer.cpp source/source/build/src/baselayer.cpp
+--- source-original/source/build/src/baselayer.cpp	2018-10-07 07:21:43.000000000 +0200
++++ source/source/build/src/baselayer.cpp	2018-12-03 19:21:47.982397954 +0100
+@@ -498,7 +498,7 @@ int32_t baselayer_init(void)
+ 
+ void maybe_redirect_outputs(void)
+ {
+-#if !(defined __APPLE__ && defined __BIG_ENDIAN__)
++#if 0
+     char *argp;
+ 
+     // pipe standard outputs to files
+diff -rupNw source-original/source/build/src/sdlayer.cpp source/source/build/src/sdlayer.cpp
+--- source-original/source/build/src/sdlayer.cpp	2018-10-07 07:23:44.000000000 +0200
++++ source/source/build/src/sdlayer.cpp	2018-12-03 19:24:07.239998594 +0100
+@@ -305,7 +305,7 @@ void wm_setapptitle(const char *name)
+ //
+ 
+ /* XXX: libexecinfo could be used on systems without gnu libc. */
+-#if !defined _WIN32 && defined __GNUC__ && !defined __OpenBSD__ && !(defined __APPLE__ && defined __BIG_ENDIAN__) && !defined GEKKO && !defined EDUKE32_TOUCH_DEVICES && !defined __OPENDINGUX__
++#if 0
+ # define PRINTSTACKONSEGV 1
+ # include <execinfo.h>
+ #endif
+diff -rupNw source-original/source/duke3d/src/common.cpp source/source/duke3d/src/common.cpp
+--- source-original/source/duke3d/src/common.cpp	2018-10-07 07:20:23.000000000 +0200
++++ source/source/duke3d/src/common.cpp	2018-12-03 19:34:09.893848178 +0100
+@@ -1173,6 +1173,7 @@ int32_t S_OpenAudio(const char *fn, char
+     Bfree(testfn);
+     return origfp;
+ }
++#endif
+ 
+ void Duke_CommonCleanup(void)
+ {
+@@ -1181,4 +1182,3 @@ void Duke_CommonCleanup(void)
+     DO_FREE_AND_NULL(g_rtsNamePtr);
+ }
+ 
+-#endif
+diff -rupNw source-original/source/duke3d/src/game.cpp source/source/duke3d/src/game.cpp
+--- source-original/source/duke3d/src/game.cpp	2018-10-07 07:23:48.000000000 +0200
++++ source/source/duke3d/src/game.cpp	2018-12-03 19:18:30.728171279 +0100
+@@ -6697,7 +6697,7 @@ MAIN_LOOP_RESTART:
+             static char buf[128];
+ #ifndef GEKKO
+             int32_t flag = 1;
+-            ioctl(0, FIONBIO, &flag);
++            //ioctl(0, FIONBIO, &flag);
+ #endif
+             if ((nb = read(0, &ch, 1)) > 0 && bufpos < sizeof(buf))
+             {
+diff -rupNw source-original/source/enet/include/enet/unix.h source/source/enet/include/enet/unix.h
+--- source-original/source/enet/include/enet/unix.h	2014-06-17 01:16:08.000000000 +0200
++++ source/source/enet/include/enet/unix.h	2018-12-03 19:17:06.295237252 +0100
+@@ -6,6 +6,7 @@
+ #define __ENET_UNIX_H__
+ 
+ #include <stdlib.h>
++#include <sys/select.h>
+ #include <sys/time.h>
+ #include <sys/types.h>
+ #if defined(GEKKO)
diff --git a/recipes/eduke32/recipe.sh b/recipes/eduke32/recipe.sh
new file mode 100644
index 0000000000000000000000000000000000000000..426eb715c42af8c756961f6173ef58ec0be77313
--- /dev/null
+++ b/recipes/eduke32/recipe.sh
@@ -0,0 +1,41 @@
+VERSION=20181010-7067
+TAR=https://dukeworld.com/eduke32/synthesis/$VERSION/eduke32_src_$VERSION.tar.xz
+BUILD_DEPENDS=(sdl sdl_mixer liborbital libiconv)
+
+function recipe_version {
+    echo "$VERSION"
+    skip=1
+}
+
+function recipe_update {
+    echo "skipping update"
+    skip=1
+}
+
+function recipe_build {
+    sysroot="${PWD}/../sysroot"
+    export LDFLAGS="-L$sysroot/lib"
+    export CFLAGS="-I$sysroot/include -I$sysroot/include/SDL"
+    export SDLCONFIG="$sysroot/bin/sdl-config"
+
+    PLATFORM=REDOX make -j"$(nproc)"
+    skip=1
+}
+
+function recipe_test {
+    echo "skipping test"
+    skip=1
+}
+
+function recipe_clean {
+    make clean
+    skip=1
+}
+
+function recipe_stage {
+    dest="$(realpath $1)"
+    mkdir -pv "$1/games"
+    cp ./eduke32 "$1/games/eduke32"
+    cp ./mapster32 "$1/games/mapster32"
+    skip=1
+}
diff --git a/recipes/sdl_mixer/recipe.sh b/recipes/sdl_mixer/recipe.sh
index b8a7338e726606c4b87f3d8e4b991282c1ed59f2..9ae3444af32b7bd99b258a24fed97d45fca7b9df 100644
--- a/recipes/sdl_mixer/recipe.sh
+++ b/recipes/sdl_mixer/recipe.sh
@@ -17,7 +17,7 @@ function recipe_update {
 
 function recipe_build {
     ./autogen.sh
-    ./configure --prefix=/ --host=${HOST} --disable-shared --disable-sdltest --disable-music-cmd --disable-music-mp3 --disable-smpegtest
+    ./configure --prefix=/ --host=${HOST} --disable-shared --disable-sdltest --disable-music-cmd --disable-music-mp3 --disable-smpegtest --disable-music-midi --disable-music-mod
     make -j"$(nproc)"
     skip=1
 }