nixpkgs/pkgs/games/marble-marcher-ce/default.nix

68 lines
1.7 KiB
Nix

{ lib
, stdenv
, makeWrapper
, makeDesktopItem
, copyDesktopItems
, fetchFromGitHub
, sfml
, anttweakbar
, glm
, eigen
, glew
, cmake
}:
stdenv.mkDerivation rec {
pname = "marble-marcher-ce";
version = "1.4.5";
src = fetchFromGitHub {
owner = "WAUthethird";
repo = "Marble-Marcher-Community-Edition";
rev = version;
hash = "sha256-m5i/Q4k5S4wcojHqMYS7e1W/Ph7q/95j3oOK2xbrHSk=";
};
buildInputs = [ sfml anttweakbar glm eigen glew ];
nativeBuildInputs = [ cmake makeWrapper copyDesktopItems ];
installFlags = [ "DESTDIR=$(out)" ];
prePatch = ''
# the path /home/MMCE is always added to DESTDIR
# we change this to a more sensible path
# see https://github.com/WAUthethird/Marble-Marcher-Community-Edition/issues/23
substituteInPlace CMakeLists.txt \
--replace '/home/MMCE' '/share/MMCE'
'';
postInstall = ''
mkdir $out/bin
mkdir -p $out/share/icons/
# The executable has to be run from the same directory the assets are in
makeWrapper $out/share/MMCE/MarbleMarcher $out/bin/${pname} --chdir $out/share/MMCE
ln -s $out/share/MMCE/images/MarbleMarcher.png $out/share/icons/${pname}.png
'';
desktopItems = [
(makeDesktopItem {
name = pname;
exec = pname;
icon = pname;
desktopName = pname;
comment = meta.description;
categories = [ "Game" ];
})
];
meta = with lib; {
description = "A community-developed version of the original Marble Marcher - a fractal physics game";
homepage = "https://michaelmoroz.itch.io/mmce";
license = with licenses; [
gpl2Plus # Code
cc-by-30 # Assets
ofl # Fonts
];
maintainers = with maintainers; [ rampoina ];
platforms = platforms.linux;
};
}