nixpkgs/pkgs/games/uqm/default.nix
aszlig 2f30e32121
uqm: Fix evaluation of 3DO video package
Regression introduced by 2e34288f0d.

The commit in question just used the "lib" attribute, but it wasn't in
scope. In addition to bringeng the lib attribute into scope, I also
removed the "with lib;", which should make sure that we get an error
when just parsing (nix-instantiate --parse) the Nix expression.

Signed-off-by: aszlig <aszlig@nix.build>
2021-01-24 15:35:33 +01:00

110 lines
3.7 KiB
Nix

{ stdenv, lib, fetchurl, pkg-config, libGLU, libGL
, SDL, SDL_image, libpng, libvorbis, libogg, libmikmod
, use3DOVideos ? false, requireFile ? null, writeText ? null
, haskellPackages ? null
, useRemixPacks ? false
}:
assert use3DOVideos -> requireFile != null && writeText != null
&& haskellPackages != null;
let
videos = import ./3dovideo.nix {
inherit stdenv lib requireFile writeText fetchurl haskellPackages;
};
remixPacks = lib.imap1 (num: sha256: fetchurl rec {
name = "uqm-remix-disc${toString num}.uqm";
url = "mirror://sourceforge/sc2/${name}";
inherit sha256;
}) [
"1s470i6hm53l214f2rkrbp111q4jyvnxbzdziqg32ffr8m3nk5xn"
"1pmsq65k8gk4jcbyk3qjgi9yqlm0dlaimc2r8hz2fc9f2124gfvz"
"07g966ylvw9k5q9jdzqdczp7c5qv4s91xjlg4z5z27fgcs7rzn76"
"1l46k9aqlcp7d3fjkjb3n05cjfkxx8rjlypgqy0jmdx529vikj54"
];
in stdenv.mkDerivation rec {
pname = "uqm";
version = "0.7.0";
src = fetchurl {
url = "mirror://sourceforge/sc2/uqm-${version}-source.tgz";
sha256 = "08dj7fsvflxx69an6vpf3wx050mk0ycmdv401yffrrqbgxgmqsd3";
};
content = fetchurl {
url = "mirror://sourceforge/sc2/uqm-${version}-content.uqm";
sha256 = "1gx39ns698hyczd4nx73mr0z86bbi4q3h8sw3pxjh1lzla5xpxmq";
};
voice = fetchurl {
url = "mirror://sourceforge/sc2/uqm-${version}-voice.uqm";
sha256 = "0yf9ff5sxk229202gsa7ski6wn7a8hkjjyr1yr7mjdxsnh0zik5w";
};
music = fetchurl {
url = "mirror://sourceforge/sc2/uqm-${version}-3domusic.uqm";
sha256 = "10nbvcrr0lc0mxivxfkcbxnibwk3vwmamabrlvwdsjxd9pk8aw65";
};
nativeBuildInputs = [ pkg-config ];
buildInputs = [ SDL SDL_image libpng libvorbis libogg libmikmod libGLU libGL ];
postUnpack = ''
mkdir -p uqm-${version}/content/packages
mkdir -p uqm-${version}/content/addons
ln -s "$content" "uqm-${version}/content/packages/uqm-0.7.0-content.uqm"
ln -s "$music" "uqm-${version}/content/addons/uqm-0.7.0-3domusic.uqm"
ln -s "$voice" "uqm-${version}/content/addons/uqm-0.7.0-voice.uqm"
'' + lib.optionalString useRemixPacks (lib.concatMapStrings (disc: ''
ln -s "${disc}" "uqm-$version/content/addons/${disc.name}"
'') remixPacks) + lib.optionalString use3DOVideos ''
ln -s "${videos}" "uqm-${version}/content/addons/3dovideo"
'';
postPatch = ''
# Using _STRINGS_H as include guard conflicts with glibc.
sed -i -e '/^#/s/_STRINGS_H/_UQM_STRINGS_H/g' src/uqm/comm/*/strings.h
# See https://github.com/NixOS/nixpkgs/pull/93560
sed -i -e 's,/tmp/,$TMPDIR/,' build/unix/config_functions
'';
# uqm has a 'unique' build system with a root script incidentally called
# 'build.sh'.
configurePhase = ''
echo "INPUT_install_prefix_VALUE='$out'" >> config.state
echo "INPUT_install_bindir_VALUE='$out/bin'" >> config.state
echo "INPUT_install_libdir_VALUE='$out/lib'" >> config.state
echo "INPUT_install_sharedir_VALUE='$out/share'" >> config.state
PREFIX=$out ./build.sh uqm config
'';
buildPhase = ''
./build.sh uqm
'';
installPhase = ''
./build.sh uqm install
sed -i $out/bin/uqm -e "s%/usr/local/games/%$out%g"
'';
meta = {
description = "Remake of Star Control II";
longDescription = ''
The goals for the The Ur-Quan Masters project are:
- to bring Star Control II to modern platforms, thereby making a lot of
people happy
- to make game translations easy, thereby making even more people happy
- to adapt the code so that people can more easily make their own
spin-offs, thereby making zillions more people happy!
'';
homepage = "http://sc2.sourceforge.net/";
license = lib.licenses.gpl2;
maintainers = with lib.maintainers; [ jcumming aszlig ];
platforms = with lib.platforms; linux;
};
}