diff options
Diffstat (limited to 'pkgs/by-name/et/etlegacy/package.nix')
-rw-r--r-- | pkgs/by-name/et/etlegacy/package.nix | 141 |
1 files changed, 141 insertions, 0 deletions
diff --git a/pkgs/by-name/et/etlegacy/package.nix b/pkgs/by-name/et/etlegacy/package.nix new file mode 100644 index 0000000000000..5dcdc3765a444 --- /dev/null +++ b/pkgs/by-name/et/etlegacy/package.nix @@ -0,0 +1,141 @@ +{ lib +, stdenv +, fetchurl +, writeShellApplication +, fetchFromGitHub +, cjson +, cmake +, git +, makeWrapper +, unzip +, curl +, freetype +, glew +, libjpeg +, libogg +, libpng +, libtheora +, lua5_4 +, minizip +, openal +, SDL2 +, sqlite +, zlib +}: +let + version = "2.82.0"; + + fetchAsset = { asset, hash }: fetchurl { + url = "https://mirror.etlegacy.com/etmain/${asset}"; + inherit hash; + }; + + pak0 = fetchAsset { + asset = "pak0.pk3"; + hash = "sha256-cSlmsg4GUj/oFBlRZQDkmchrK0/sgjhW3b0zP8s9JuU="; + }; + + pak1 = fetchAsset { + asset = "pak1.pk3"; + hash = "sha256-VhD9dJAkQFtEJafOY5flgYe5QdIgku8R1IRLQn31Pl0="; + }; + + pak2 = fetchAsset { + asset = "pak2.pk3"; + hash = "sha256-pIq3SaGhKrTZE3KGsfI9ZCwp2lmEWyuvyPZOBSzwbz4="; + }; + + fakeGit = writeShellApplication { + name = "git"; + + text = '' + if [ "$1" = "describe" ]; then + echo "${version}" + fi + ''; + }; +in +stdenv.mkDerivation { + pname = "etlegacy"; + inherit version; + + src = fetchFromGitHub { + owner = "etlegacy"; + repo = "etlegacy"; + rev = "refs/tags/v${version}"; + hash = "sha256-yNVVEa+3+Swm3hgwm9cSLV0K88E37TgVVjh1uUl8O2o="; + }; + + nativeBuildInputs = [ + cjson + cmake + fakeGit + git + makeWrapper + unzip + ]; + + buildInputs = [ + curl + freetype + glew + libjpeg + libogg + libpng + libtheora + lua5_4 + minizip + openal + SDL2 + sqlite + zlib + ]; + + preBuild = '' + # Required for build time to not be in 1980 + export SOURCE_DATE_EPOCH=$(date +%s) + # This indicates the build was by a CI pipeline and prevents the resource + # files from being flagged as 'dirty' due to potentially being custom built. + export CI="true" + ''; + + cmakeFlags = [ + "-DCROSS_COMPILE32=0" + "-DBUILD_SERVER=1" + "-DBUILD_CLIENT=1" + "-DBUNDLED_JPEG=0" + "-DBUNDLED_LIBS=0" + "-DINSTALL_EXTRA=0" + "-DINSTALL_OMNIBOT=0" + "-DINSTALL_GEOIP=0" + "-DINSTALL_WOLFADMIN=0" + "-DFEATURE_AUTOUPDATE=0" + "-DINSTALL_DEFAULT_BASEDIR=${placeholder "out"}/lib/etlegacy" + "-DINSTALL_DEFAULT_BINDIR=${placeholder "out"}/bin" + ]; + + postInstall = '' + ln -s ${pak0} $out/lib/etlegacy/etmain/pak0.pk3 + ln -s ${pak1} $out/lib/etlegacy/etmain/pak1.pk3 + ln -s ${pak2} $out/lib/etlegacy/etmain/pak2.pk3 + + makeWrapper $out/bin/etl.* $out/bin/etl + makeWrapper $out/bin/etlded.* $out/bin/etlded + ''; + + hardeningDisable = [ "fortify" ]; + + meta = { + description = "ET: Legacy is an open source project based on the code of Wolfenstein: Enemy Territory which was released in 2010 under the terms of the GPLv3 license"; + homepage = "https://etlegacy.com"; + license = with lib.licenses; [ gpl3 cc-by-nc-sa-30 ]; + longDescription = '' + ET: Legacy, an open source project fully compatible client and server + for the popular online FPS game Wolfenstein: Enemy Territory - whose + gameplay is still considered unmatched by many, despite its great age. + ''; + mainProgram = "etl"; + maintainers = with lib.maintainers; [ ashleyghooper drupol ]; + platforms = lib.platforms.linux; + }; +} |