{ lib, stdenv, fetchFromGitHub, python3, pkg-config, SDL2 , libpng, ffmpeg, freetype, glew, libGL, libGLU, fribidi, zlib , makeWrapper }: let # https://renpy.org/doc/html/changelog.html#versioning # base_version is of the form major.minor.patch # vc_version is of the form YYMMDDCC # version corresponds to the tag on GitHub base_version = "8.1.0"; vc_version = "23051307"; in stdenv.mkDerivation rec { pname = "renpy"; version = "${base_version}.${vc_version}"; src = fetchFromGitHub { owner = "renpy"; repo = "renpy"; rev = version; sha256 = "sha256-5EU4jaBTU+a9UNHRs7xrKQ7ZivhDEqisO3l4W2E6F+c="; }; nativeBuildInputs = [ pkg-config makeWrapper python3.pkgs.cython python3.pkgs.setuptools ]; buildInputs = [ SDL2 libpng ffmpeg freetype glew libGLU libGL fribidi zlib ] ++ (with python3.pkgs; [ python pygame_sdl2 tkinter future six pefile requests ecdsa ]); RENPY_DEPS_INSTALL = lib.concatStringsSep "::" (map (path: path) [ SDL2 SDL2.dev libpng ffmpeg.lib freetype glew.dev libGLU libGL fribidi zlib ]); enableParallelBuilding = true; patches = [ ./shutup-erofs-errors.patch ]; postPatch = '' cp tutorial/game/tutorial_director.rpy{m,} cat > renpy/vc_version.py << EOF vc_version = ${vc_version} official = False nightly = False EOF ''; buildPhase = with python3.pkgs; '' runHook preBuild ${python.pythonForBuild.interpreter} module/setup.py build --parallel=$NIX_BUILD_CORES runHook postBuild ''; installPhase = with python3.pkgs; '' runHook preInstall ${python.pythonForBuild.interpreter} module/setup.py install_lib -d $out/${python.sitePackages} mkdir -p $out/share/renpy cp -vr sdk-fonts gui launcher renpy the_question tutorial renpy.py $out/share/renpy makeWrapper ${python.interpreter} $out/bin/renpy \ --set PYTHONPATH "$PYTHONPATH:$out/${python.sitePackages}" \ --add-flags "$out/share/renpy/renpy.py" runHook postInstall ''; env.NIX_CFLAGS_COMPILE = with python3.pkgs; "-I${pygame_sdl2}/include/${python.libPrefix}"; meta = with lib; { description = "Visual Novel Engine"; homepage = "https://renpy.org/"; changelog = "https://renpy.org/doc/html/changelog.html"; license = licenses.mit; platforms = platforms.linux; maintainers = with maintainers; [ shadowrz ]; }; passthru = { inherit base_version vc_version; }; }