nixpkgs/pkgs/games/quakespasm/default.nix

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

106 lines
3.4 KiB
Nix
Raw Normal View History

2022-08-07 18:49:55 +02:00
{ lib, stdenv, SDL, SDL2, fetchurl, gzip, libvorbis, libmad, flac, libopus, opusfile, libogg, libxmp
, Cocoa, CoreAudio, CoreFoundation, IOKit, OpenGL
2022-08-07 18:49:55 +02:00
, copyDesktopItems, makeDesktopItem, pkg-config
, useSDL2 ? stdenv.isDarwin # TODO: CoreAudio fails to initialize with SDL 1.x for some reason.
}:
2021-06-30 01:01:13 +02:00
2017-04-23 22:22:44 +02:00
stdenv.mkDerivation rec {
pname = "quakespasm";
2022-12-28 09:57:21 +01:00
version = "0.95.1";
2017-04-23 22:22:44 +02:00
src = fetchurl {
2021-09-12 13:13:31 +02:00
url = "mirror://sourceforge/quakespasm/quakespasm-${version}.tar.gz";
2022-12-28 09:57:21 +01:00
sha256 = "sha256-hBmEV3s65yQysMiq4zEP4swfCgCCiT5dzZdhg7bSNOI=";
2017-04-23 22:22:44 +02:00
};
sourceRoot = "${pname}-${version}/Quake";
patches = lib.optionals stdenv.isDarwin [
# Makes Darwin Makefile use system libraries instead of ones from app bundle
./quakespasm-darwin-makefile-improvements.patch
];
2022-08-07 18:49:55 +02:00
nativeBuildInputs = [
copyDesktopItems
pkg-config
];
2017-04-23 22:22:44 +02:00
buildInputs = [
2022-08-07 18:49:55 +02:00
gzip libvorbis libmad flac libopus opusfile libogg libxmp
(if useSDL2 then SDL2 else SDL)
] ++ lib.optionals stdenv.isDarwin [
Cocoa CoreAudio IOKit OpenGL
] ++ lib.optionals (stdenv.isDarwin && useSDL2) [
CoreFoundation
];
buildFlags = [
"DO_USERDIRS=1"
# Makefile defaults, set here to enforce consistency on Darwin build
"USE_CODEC_WAVE=1"
"USE_CODEC_MP3=1"
"USE_CODEC_VORBIS=1"
2022-08-07 18:49:55 +02:00
"USE_CODEC_FLAC=1"
"USE_CODEC_OPUS=1"
"USE_CODEC_MIKMOD=0"
"USE_CODEC_UMX=0"
2022-08-07 18:49:55 +02:00
"USE_CODEC_XMP=1"
"MP3LIB=mad"
"VORBISLIB=vorbis"
] ++ lib.optionals useSDL2 [
"SDL_CONFIG=sdl2-config"
"USE_SDL2=1"
2017-04-23 22:22:44 +02:00
];
makefile = if (stdenv.isDarwin) then "Makefile.darwin" else "Makefile";
2017-04-23 22:22:44 +02:00
preInstall = ''
mkdir -p "$out/bin"
substituteInPlace Makefile --replace "/usr/local/games" "$out/bin"
substituteInPlace Makefile.darwin --replace "/usr/local/games" "$out/bin"
'';
postInstall = lib.optionalString stdenv.isDarwin ''
# Let's build app bundle
mkdir -p $out/Applications/Quake.app/Contents/MacOS
mkdir -p $out/Applications/Quake.app/Contents/Resources
cp ../MacOSX/Info.plist $out/Applications/Quake.app/Contents/
cp ../MacOSX/QuakeSpasm.icns $out/Applications/Quake.app/Contents/Resources/
cp -r ../MacOSX/English.lproj $out/Applications/Quake.app/Contents/Resources/
ln -sf $out/bin/quake $out/Applications/Quake.app/Contents/MacOS/quake
substituteInPlace $out/Applications/Quake.app/Contents/Info.plist \
--replace '>''${EXECUTABLE_NAME}' '>quake'
substituteInPlace $out/Applications/Quake.app/Contents/Info.plist \
--replace '>''${PRODUCT_NAME}' '>QuakeSpasm'
2017-04-23 22:22:44 +02:00
'';
2017-04-23 22:24:15 +02:00
2017-04-23 22:22:44 +02:00
enableParallelBuilding = true;
2021-08-06 00:04:17 +02:00
desktopItems = [
(makeDesktopItem {
name = "quakespasm";
exec = "quake";
desktopName = "Quakespasm";
categories = [ "Game" ];
2021-08-06 00:04:17 +02:00
})
];
2021-06-30 01:01:13 +02:00
meta = with lib; {
2017-04-23 22:22:44 +02:00
description = "An engine for iD software's Quake";
homepage = "https://quakespasm.sourceforge.net/";
2017-04-23 22:22:44 +02:00
longDescription = ''
QuakeSpasm is a modern, cross-platform Quake 1 engine based on FitzQuake.
It includes support for 64 bit CPUs and custom music playback, a new sound driver,
2017-04-23 22:22:44 +02:00
some graphical niceities, and numerous bug-fixes and other improvements.
Quakespasm utilizes either the SDL or SDL2 frameworks, so choose which one
works best for you. SDL is probably less buggy, but SDL2 has nicer features
2017-04-23 22:22:44 +02:00
and smoother mouse input - though no CD support.
'';
platforms = platforms.unix;
maintainers = with maintainers; [ mikroskeem ];
mainProgram = "quake";
2017-04-23 22:22:44 +02:00
};
}