Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
at devShellTools-shell 77 lines 1.9 kB view raw
1{ 2 stdenv, 3 buildEnv, 4 lib, 5 libGL, 6 ioquake3, 7 makeWrapper, 8}: 9 10{ 11 paks, 12 pname ? (lib.head paks).pname, 13 version ? (lib.head paks).version, 14 description ? "", 15}: 16 17let 18 libPath = lib.makeLibraryPath [ 19 libGL 20 stdenv.cc.cc 21 ]; 22 env = buildEnv { 23 name = "quake3-env"; 24 paths = [ ioquake3 ] ++ paks; 25 }; 26 27in 28stdenv.mkDerivation { 29 pname = "${pname}-${ioquake3.name}"; 30 inherit version; 31 32 nativeBuildInputs = [ makeWrapper ]; 33 34 buildCommand = 35 let 36 setBasepath = "+set fs_basepath ${env}"; 37 in 38 lib.optionalString stdenv.hostPlatform.isLinux '' 39 mkdir -p $out/bin 40 41 # We add Mesa to the end of $LD_LIBRARY_PATH to provide fallback 42 # software rendering. GCC is needed so that libgcc_s.so can be found 43 # when Mesa is used. 44 makeWrapper ${env}/bin/ioquake3 $out/bin/${pname} \ 45 --suffix-each LD_LIBRARY_PATH ':' "${libPath}" \ 46 --add-flags "${setBasepath} +set r_allowSoftwareGL 1" 47 48 makeWrapper ${env}/bin/ioq3ded $out/bin/${pname}-server \ 49 --add-flags "${setBasepath}" 50 '' 51 + lib.optionalString stdenv.hostPlatform.isDarwin '' 52 mkdir -p $out/Applications $out/bin 53 makeWrapper ${env}/bin/ioquake3 $out/bin/${pname} \ 54 --add-flags "${setBasepath}" 55 makeWrapper ${env}/bin/ioq3ded $out/bin/${pname}-server \ 56 --add-flags "${setBasepath}" 57 58 cp -RL ${env}/Applications/ioquake3.app/ $out/Applications/${pname}.app 59 chmod -R +w $out/Applications/ 60 61 wrapProgram $out/Applications/${pname}.app/Contents/MacOS/ioquake3 \ 62 --add-flags "${setBasepath}" 63 wrapProgram $out/Applications/${pname}.app/Contents/MacOS/ioq3ded \ 64 --add-flags "${setBasepath}" 65 ''; 66 67 meta = { 68 mainProgram = "${pname}"; 69 inherit ((lib.head paks).meta) 70 description 71 longDescription 72 homepage 73 license 74 ; 75 inherit (ioquake3.meta) platforms; 76 }; 77}