about summary refs log tree commit diff
path: root/nixpkgs/pkgs/games/quake3/wrapper/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/games/quake3/wrapper/default.nix')
-rw-r--r--nixpkgs/pkgs/games/quake3/wrapper/default.nix34
1 files changed, 34 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/games/quake3/wrapper/default.nix b/nixpkgs/pkgs/games/quake3/wrapper/default.nix
new file mode 100644
index 000000000000..a1a5bfb03d26
--- /dev/null
+++ b/nixpkgs/pkgs/games/quake3/wrapper/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, buildEnv, lib, libGL, ioquake3, makeWrapper }:
+
+{ paks, name ? (lib.head paks).name, description ? "" }:
+
+let
+  libPath = lib.makeLibraryPath [ libGL stdenv.cc.cc ];
+  env = buildEnv {
+    name = "quake3-env";
+    paths = [ ioquake3 ] ++ paks;
+  };
+
+in stdenv.mkDerivation {
+  name = "${name}-${ioquake3.name}";
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  buildCommand = ''
+    mkdir -p $out/bin
+
+    # We add Mesa to the end of $LD_LIBRARY_PATH to provide fallback
+    # software rendering. GCC is needed so that libgcc_s.so can be found
+    # when Mesa is used.
+    makeWrapper ${env}/bin/ioquake3* $out/bin/quake3 \
+      --suffix-each LD_LIBRARY_PATH ':' "${libPath}" \
+      --add-flags "+set fs_basepath ${env} +set r_allowSoftwareGL 1"
+
+    makeWrapper ${env}/bin/ioq3ded* $out/bin/quake3-server \
+      --add-flags "+set fs_basepath ${env}"
+  '';
+
+  meta = {
+    inherit description;
+  };
+}