diff options
author | Nikolay Amiantov <ab@fmap.me> | 2016-09-03 16:52:39 +0300 |
---|---|---|
committer | Nikolay Amiantov <ab@fmap.me> | 2016-09-17 23:06:46 +0300 |
commit | 2551d9717eb849dbca795586a96ba5e5e6d65645 (patch) | |
tree | b04fc8e281af36eaa9d3d26dea23a1b51a7a5d95 /pkgs/games/ut2004 | |
parent | a38476a32e83261cb04021c6b1fe55153d45ff79 (diff) | |
download | nixpkgs-2551d9717eb849dbca795586a96ba5e5e6d65645.tar nixpkgs-2551d9717eb849dbca795586a96ba5e5e6d65645.tar.gz nixpkgs-2551d9717eb849dbca795586a96ba5e5e6d65645.tar.bz2 nixpkgs-2551d9717eb849dbca795586a96ba5e5e6d65645.tar.lz nixpkgs-2551d9717eb849dbca795586a96ba5e5e6d65645.tar.xz nixpkgs-2551d9717eb849dbca795586a96ba5e5e6d65645.tar.zst nixpkgs-2551d9717eb849dbca795586a96ba5e5e6d65645.zip |
ut2004demo: refactor, 3120 -> 3334
Diffstat (limited to 'pkgs/games/ut2004')
-rw-r--r-- | pkgs/games/ut2004/default.nix | 9 | ||||
-rw-r--r-- | pkgs/games/ut2004/demo.nix | 40 | ||||
-rw-r--r-- | pkgs/games/ut2004/wrapper.nix | 46 |
3 files changed, 95 insertions, 0 deletions
diff --git a/pkgs/games/ut2004/default.nix b/pkgs/games/ut2004/default.nix new file mode 100644 index 00000000000..3f306ac6eb5 --- /dev/null +++ b/pkgs/games/ut2004/default.nix @@ -0,0 +1,9 @@ +{ callPackage }: + +{ + ut2004-demo = callPackage ./demo.nix { }; + + ut2004 = gamePacks: callPackage ./wrapper.nix { + inherit gamePacks; + }; +} diff --git a/pkgs/games/ut2004/demo.nix b/pkgs/games/ut2004/demo.nix new file mode 100644 index 00000000000..f5fcdc088c8 --- /dev/null +++ b/pkgs/games/ut2004/demo.nix @@ -0,0 +1,40 @@ +{ stdenv, fetchurl }: + +let + arch = + if stdenv.system == "x86_64-linux" then "amd64" + else if stdenv.system == "i686-linux" then "x86" + else throw "Unsupported architecture"; + +in stdenv.mkDerivation rec { + name = "ut2004-demo-${version}"; + version = "3334"; + + src = fetchurl { + url = "http://treefort.icculus.org/ut2004/UT2004-LNX-Demo${version}.run.gz"; + sha256 = "0d5f84qz8l1rg16yzx2k4ikr46n9iwj68na1bqi87wrww7ck6jh7"; + }; + + buildCommand = '' + cat $src | gunzip > setup.run + chmod +x setup.run + ./setup.run --noexec --target . + mkdir $out + tar -xaf ut2004demo.tar.bz2 -C $out + tar -xaf linux-${arch}.tar.bz2 -C $out + + rm $out/System/libSDL-1.2.so.0 + rm $out/System/openal.so + ''; + + dontStrip = true; + dontPatchELF = true; + + meta = with stdenv.lib; { + description = "A first-person shooter video game developed by Epic Games and Digital Extreme -- demo version"; + homepage = "http://www.unrealtournament2004.com"; + license = licenses.unfree; + maintainers = with maintainers; [ abbradar ]; + platforms = [ "x86_64-linux" "i686-linux" ]; + }; +} diff --git a/pkgs/games/ut2004/wrapper.nix b/pkgs/games/ut2004/wrapper.nix new file mode 100644 index 00000000000..31d0763be4d --- /dev/null +++ b/pkgs/games/ut2004/wrapper.nix @@ -0,0 +1,46 @@ +{ stdenv, lib, runCommand, buildEnv, makeWrapper, makeDesktopItem, gamePacks, libstdcxx5, SDL, openal }: + +let + game = buildEnv { + name = "ut2004-game"; + paths = gamePacks; + ignoreCollisions = true; + pathsToLink = [ "/" "/System" ]; + postBuild = '' + ln -s ${lib.getLib SDL}/lib/libSDL-1.2.so.0 $out/System + ln -s ${lib.getLib openal}/lib/libopenal.so $out/System/openal.so + for i in $out/System/*-bin; do + path="$(readlink -f "$i")" + rm "$i" + cp "$path" "$i" + chmod +w "$i" + patchelf \ + --set-interpreter $(cat ${stdenv.cc}/nix-support/dynamic-linker) \ + --set-rpath "$out/System:${lib.makeLibraryPath [ libstdcxx5 ]}" \ + "$i" + done + ''; + }; + + desktop = makeDesktopItem { + name = "ut2004"; + desktopName = "Unreal Tournament 2004"; + comment = "A first-person shooter video game developed by Epic Games and Digital Extreme"; + genericName = "First-person shooter"; + categories = "Application;Game;"; + exec = "ut2004"; + }; + +in runCommand "ut2004" { + nativeBuildInputs = [ makeWrapper ]; +} '' + mkdir -p $out/bin + for i in ${game}/System/*-bin; do + name="$(basename "$i")" + makeWrapper $i $out/bin/''${name%-bin} \ + --run "cd ${game}/System" + done + + mkdir -p $out/share/applications + ln -s ${desktop}/share/applications/* $out/share/applications +'' |