I have found the problem thanks to one of the eDuke32 developers. Here is the issue:
$ echo $C_INCLUDE_PATH /gnu/store/x3r6c04n583q3fz7szm32ahycrxgfiz6-profile/include Compare this value to $ sdl2-config --cflags -I/gnu/store/4bhz5xzr39v0kgxf3ipv6kswicrdmkk4-sdl2-2.0.9/include/SDL2 They point to different entries in the store. And the store entry provided by sdl2-config does not contain the header file for SDL Mixer (obviously, since that one is pointing to the store entry of one package instead of a profile). I am already using sdl-union as my input: ("sdl-union" ,(sdl-union (list sdl2 sdl2-mixer))) The makefile uses the output of sdl2-config as part of the compiler flags, so the include path points into the wrong directory. Is there a way to get sdl2-config to print the correct path?