diff options
Diffstat (limited to 'nixpkgs/pkgs/games/assaultcube/default.nix')
-rw-r--r-- | nixpkgs/pkgs/games/assaultcube/default.nix | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/games/assaultcube/default.nix b/nixpkgs/pkgs/games/assaultcube/default.nix new file mode 100644 index 000000000000..7164e66feebf --- /dev/null +++ b/nixpkgs/pkgs/games/assaultcube/default.nix @@ -0,0 +1,98 @@ +{ lib +, stdenv +, fetchFromGitHub +, makeDesktopItem +, copyDesktopItems +, openal +, pkg-config +, libogg +, libvorbis +, SDL2 +, SDL2_image +, makeWrapper +, zlib +, file +, client ? true, server ? true +}: + +stdenv.mkDerivation rec { + pname = "assaultcube"; + version = "1.3.0.2"; + + src = fetchFromGitHub { + owner = "assaultcube"; + repo = "AC"; + rev = "v${version}"; + sha256 = "0qv339zw9q5q1y7bghca03gw7z4v89sl4lbr6h3b7siy08mcwiz9"; + }; + + nativeBuildInputs = [ + makeWrapper + pkg-config + copyDesktopItems + ]; + + buildInputs = [ + file + zlib + ] ++ lib.optionals client [ + openal + SDL2 + SDL2_image + libogg + libvorbis + ]; + + targets = (lib.optionalString server "server") + (lib.optionalString client " client"); + makeFlags = [ "-C source/src" "CXX=${stdenv.cc.targetPrefix}c++" targets ]; + + desktopItems = [ + (makeDesktopItem { + name = pname; + desktopName = "AssaultCube"; + comment = "A multiplayer, first-person shooter game, based on the CUBE engine. Fast, arcade gameplay."; + genericName = "First-person shooter"; + categories = [ "Game" "ActionGame" "Shooter" ]; + icon = "assaultcube"; + exec = pname; + }) + ]; + + gamedatadir = "/share/games/${pname}"; + + installPhase = '' + runHook preInstall + + bindir=$out/bin + + mkdir -p $bindir $out/$gamedatadir + + cp -r config packages $out/$gamedatadir + + if (test -e source/src/ac_client) then + cp source/src/ac_client $bindir + mkdir -p $out/share/applications + install -Dpm644 packages/misc/icon.png $out/share/icons/assaultcube.png + install -Dpm644 packages/misc/icon.png $out/share/pixmaps/assaultcube.png + + makeWrapper $out/bin/ac_client $out/bin/${pname} \ + --chdir "$out/$gamedatadir" --add-flags "--home=\$HOME/.assaultcube/v1.2next --init" + fi + + if (test -e source/src/ac_server) then + cp source/src/ac_server $bindir + makeWrapper $out/bin/ac_server $out/bin/${pname}-server \ + --chdir "$out/$gamedatadir" --add-flags "-Cconfig/servercmdline.txt" + fi + + runHook postInstall + ''; + + meta = with lib; { + description = "Fast and fun first-person-shooter based on the Cube fps"; + homepage = "https://assault.cubers.net"; + platforms = platforms.linux; # should work on darwin with a little effort. + license = licenses.unfree; + maintainers = with maintainers; [ darkonion0 ]; + }; +} |