at v206 71 lines 2.0 kB view raw
1{ stdenv, fetchurl, flac, gtk, libvorbis, libvpx, makeDesktopItem, mesa, nasm 2, pkgconfig, SDL2, SDL2_mixer }: 3 4let 5 date = "20150420"; 6 rev = "5160"; 7 version = "${date}-${rev}"; 8in stdenv.mkDerivation rec { 9 name = "eduke32-${version}"; 10 11 src = fetchurl { 12 url = "http://dukeworld.duke4.net/eduke32/synthesis/${version}/eduke32_src_${version}.tar.xz"; 13 sha256 = "1nlq5jbglg00c1z1vsyl627fh0mqfxvk5qyxav5vzla2b4svik2v"; 14 }; 15 16 buildInputs = [ flac gtk libvorbis libvpx mesa SDL2 SDL2_mixer ] 17 ++ stdenv.lib.optional (stdenv.system == "i686-linux") nasm; 18 nativeBuildInputs = [ pkgconfig ]; 19 20 postPatch = '' 21 substituteInPlace build/src/glbuild.c \ 22 --replace libGL.so ${mesa}/lib/libGL.so \ 23 --replace libGLU.so ${mesa}/lib/libGLU.so 24 ''; 25 26 NIX_CFLAGS_COMPILE = "-I${SDL2}/include/SDL"; 27 NIX_LDFLAGS = "-L${SDL2}/lib"; 28 29 makeFlags = "LINKED_GTK=1 SDLCONFIG=${SDL2}/bin/sdl2-config VC_REV=${rev}"; 30 31 desktopItem = makeDesktopItem { 32 name = "eduke32"; 33 exec = "eduke32-wrapper"; 34 comment = "Duke Nukem 3D port"; 35 desktopName = "Enhanced Duke Nukem 3D"; 36 genericName = "Duke Nukem 3D port"; 37 categories = "Application;Game;"; 38 }; 39 40 installPhase = '' 41 # Make wrapper script 42 cat > eduke32-wrapper <<EOF 43 #!/bin/sh 44 45 if [ "$EDUKE32_DATA_DIR" = "" ]; then 46 EDUKE32_DATA_DIR=/var/lib/games/eduke32 47 fi 48 if [ "$EDUKE32_GRP_FILE" = "" ]; then 49 EDUKE32_GRP_FILE=\$EDUKE32_DATA_DIR/DUKE3D.GRP 50 fi 51 52 cd \$EDUKE32_DATA_DIR 53 exec $out/bin/eduke32 -g \$EDUKE32_GRP_FILE 54 EOF 55 56 # Install binaries 57 mkdir -p $out/bin 58 install -Dm755 eduke32{,-wrapper} mapster32 $out/bin 59 60 # Install desktop item 61 cp -rv ${desktopItem}/share $out 62 ''; 63 64 meta = with stdenv.lib; { 65 inherit version; 66 description = "Enhanched port of Duke Nukem 3D for various platforms"; 67 license = licenses.gpl2Plus; 68 homepage = http://eduke32.com; 69 maintainers = with maintainers; [ nckx sander ]; 70 }; 71}