2025-07-24 13:55:40 +02:00

100 lines
2.4 KiB
Nix

{
lib,
stdenv,
fetchFromGitHub,
gitUpdater,
cmake,
glew,
liblockfile,
openal,
libtheora,
SDL2,
lzo,
libjpeg,
libogg,
pcre,
makeWrapper,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "openxray";
version = "2921-january-2025-rc1";
src = fetchFromGitHub {
owner = "OpenXRay";
repo = "xray-16";
tag = finalAttrs.version;
fetchSubmodules = true;
hash = "sha256-PYRC1t4gjT2d41ZZOZJF4u3vc0Pq7DpivEnnfbcSQYk=";
};
# Don't force-override these please
postPatch = ''
substituteInPlace Externals/LuaJIT-proj/CMakeLists.txt \
--replace-fail 'set(CMAKE_OSX_SYSROOT' '#set(CMAKE_OSX_SYSROOT' \
--replace-fail 'set(ENV{SDKROOT}' '#set(ENV{SDKROOT}'
'';
strictDeps = true;
nativeBuildInputs = [
cmake
makeWrapper
];
buildInputs = [
glew
liblockfile
openal
libtheora
SDL2
lzo
libjpeg
libogg
pcre
];
cmakeFlags = [
# Breaks on Darwin
(lib.cmakeBool "USE_LTO" (!stdenv.hostPlatform.isDarwin))
]
++ lib.optionals stdenv.hostPlatform.isDarwin [
# This seemingly only gets set properly by CMake when using the XCode generator
(lib.cmakeFeature "CMAKE_OSX_DEPLOYMENT_TARGET" "${stdenv.hostPlatform.darwinMinVersion}")
];
# Crashes can happen, we'd like them to be reasonably debuggable
cmakeBuildType = "RelWithDebInfo";
dontStrip = true;
# Because we work around https://github.com/OpenXRay/xray-16/issues/1224 by using GCC,
# we need a followup workaround for Darwin locale stuff when using GCC:
# runtime error: locale::facet::_S_create_c_locale name not valid
postInstall = lib.optionalString stdenv.hostPlatform.isDarwin ''
wrapProgram $out/bin/xr_3da \
--run 'export LC_ALL=C'
'';
# dlopens its own libraries, relies on rpath not having its prefix stripped
dontPatchELF = true;
passthru.updateScript = gitUpdater { };
meta = with lib; {
mainProgram = "xr_3da";
description = "Improved version of the X-Ray Engine, the game engine used in the world-famous S.T.A.L.K.E.R. game series by GSC Game World";
homepage = "https://github.com/OpenXRay/xray-16/";
license = licenses.unfree // {
url = "https://github.com/OpenXRay/xray-16/blob/${finalAttrs.version}/License.txt";
};
maintainers = with maintainers; [ OPNA2608 ];
platforms = [
"x86_64-linux"
"i686-linux"
"aarch64-linux"
"x86_64-darwin"
"aarch64-darwin"
];
};
})