depot/third_party/nixpkgs/pkgs/by-name/ma/marble-marcher-ce/package.nix

79 lines
1.8 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";
mainProgram = "marble-marcher-ce";
homepage = "https://michaelmoroz.itch.io/mmce";
license = with licenses; [
gpl2Plus # Code
cc-by-30 # Assets
ofl # Fonts
];
maintainers = with maintainers; [ rampoina ];
platforms = platforms.linux;
};
}