diff options
Diffstat (limited to 'nixpkgs/pkgs/games/openra/engine.nix')
-rw-r--r-- | nixpkgs/pkgs/games/openra/engine.nix | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/games/openra/engine.nix b/nixpkgs/pkgs/games/openra/engine.nix new file mode 100644 index 000000000000..7d2d007d0758 --- /dev/null +++ b/nixpkgs/pkgs/games/openra/engine.nix @@ -0,0 +1,60 @@ +/* The package defintion for an OpenRA engine. + It shares code with `mod.nix` by what is defined in `common.nix`. + Similar to `mod.nix` it is a generic package definition, + in order to make it easy to define multiple variants of the OpenRA engine. + For each mod provided by the engine, a wrapper script is created, + matching the naming convention used by `mod.nix`. + This package could be seen as providing a set of in-tree mods, + while the `mod.nix` pacakges provide a single out-of-tree mod. +*/ +{ stdenv +, packageAttrs +, patchEngine +, wrapLaunchGame +, engine +}: + +with stdenv.lib; + +stdenv.mkDerivation (recursiveUpdate packageAttrs rec { + name = "${pname}-${version}"; + pname = "openra"; + version = "${engine.name}-${engine.version}"; + + src = engine.src; + + postPatch = patchEngine "." version; + + configurePhase = '' + runHook preConfigure + + make version VERSION=${escapeShellArg version} + + runHook postConfigure + ''; + + buildFlags = [ "DEBUG=false" "default" "man-page" ]; + + checkTarget = "nunit test"; + + installTargets = [ + "install" + "install-linux-icons" + "install-linux-desktop" + "install-linux-appdata" + "install-linux-mime" + "install-man-page" + ]; + + postInstall = '' + ${wrapLaunchGame ""} + + ${concatStrings (map (mod: '' + makeWrapper $out/bin/openra $out/bin/openra-${mod} --add-flags Game.Mod=${mod} + '') engine.mods)} + ''; + + meta = { + inherit (engine) description homepage; + }; +}) |