69 lines
2.1 KiB
Nix
69 lines
2.1 KiB
Nix
{ lib
|
|
, pkgs
|
|
, stdenv
|
|
, fetchFromGitHub
|
|
, dedicated ? false # dedicated server
|
|
, gamedir ? "valve"
|
|
, enableBsp2 ? false # bsp2 support (for quake)
|
|
, enableGles1 ? false # gles1 renderer (nanogl)
|
|
, enableGles2 ? false # gles2 renderer (glwes)
|
|
, enableGl4es ? false # gles2 renderer (gl4es)
|
|
, enableGl ? true # opengl renderer
|
|
, enableSoft ? true # soft renderer
|
|
, enableUtils ? false # mdldec
|
|
}:
|
|
|
|
stdenv.mkDerivation {
|
|
pname = "xash3d-fwgs";
|
|
version = "2023-03-01";
|
|
|
|
nativeBuildInputs = with pkgs; [python3 pkg-config makeWrapper];
|
|
buildInputs = with pkgs; [SDL2 libopus freetype fontconfig];
|
|
|
|
src = fetchFromGitHub {
|
|
owner = "FWGS";
|
|
repo = "xash3d-fwgs";
|
|
rev = "7e9d46689ca76d6bf1669ada6344fc724dd683cf";
|
|
sha256 = "sha256-rvONYm1Gz9PpK8KY6RIIJ82FtxGcWe/4YoT2eV4sCOc=";
|
|
fetchSubmodules = true;
|
|
};
|
|
patches = [ ./change-zip-date.patch ];
|
|
|
|
configurePhase = let
|
|
optionals = lib.optionals;
|
|
optional = (cond: val: optionals cond [val]);
|
|
flags = ["-8" "-P" "--prefix=/"]
|
|
++ (optional dedicated "-d")
|
|
++ (optionals (gamedir != "valve") ["--gamedir" gamedir])
|
|
++ (optional enableBsp2 "--enable-bsp2")
|
|
++ (optional enableGles1 "--enable-gles1")
|
|
++ (optional enableGles2 "--enable-gles2")
|
|
++ (optional enableGl4es "--enable-gl4es")
|
|
++ (optional (!enableGl) "--disable-gl")
|
|
++ (optional (!enableSoft) "--disable-soft")
|
|
++ (optional enableUtils "--enable-utils")
|
|
;
|
|
in ''
|
|
python3 ./waf configure -T release ${lib.strings.escapeShellArgs flags}
|
|
'';
|
|
|
|
buildPhase = ''
|
|
python3 ./waf build
|
|
'';
|
|
|
|
installPhase = ''
|
|
python3 ./waf install "--destdir=$out"
|
|
mkdir $out/bin
|
|
makeWrapper $out/lib/xash3d/xash3d $out/bin/xash3d --set XASH3D_EXTRAS_PAK1 $out/share/xash3d/valve/extras.pk3
|
|
'';
|
|
|
|
meta = with lib; {
|
|
description = "Xash3D FWGS engine";
|
|
homepage = "https://github.com/FWGS/xash3d-fwgs";
|
|
# this is a mess because of vendoring...
|
|
# maybe the correct thing to do use to simply use `[ unfree gpl3Plus ]` instead
|
|
license = with licenses; [ unfree gpl2Plus gpl3Plus lgpl3Plus mit bsd3 ];
|
|
# maintainers = with maintainers; [ chayleaf ];
|
|
};
|
|
}
|