nixpkgs/pkgs/games/assaultcube/default.nix

99 lines
2.3 KiB
Nix
Raw Normal View History

{ 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
2020-11-18 09:42:33 +01:00
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 ];
};
}