about summary refs log tree commit diff
path: root/pkgs/by-name/re/renpy/package.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/by-name/re/renpy/package.nix')
-rw-r--r--pkgs/by-name/re/renpy/package.nix138
1 files changed, 138 insertions, 0 deletions
diff --git a/pkgs/by-name/re/renpy/package.nix b/pkgs/by-name/re/renpy/package.nix
new file mode 100644
index 0000000000000..d31ad9ced8641
--- /dev/null
+++ b/pkgs/by-name/re/renpy/package.nix
@@ -0,0 +1,138 @@
+{
+  lib,
+  stdenv,
+  fetchFromGitHub,
+  python3,
+  pkg-config,
+  SDL2,
+  libpng,
+  ffmpeg,
+  freetype,
+  glew,
+  libGL,
+  libGLU,
+  fribidi,
+  zlib,
+  harfbuzz,
+  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.2.1";
+  vc_version = "24030407";
+  version = "${base_version}.${vc_version}";
+in
+stdenv.mkDerivation {
+  pname = "renpy";
+  inherit version;
+
+  src = fetchFromGitHub {
+    owner = "renpy";
+    repo = "renpy";
+    rev = version;
+    hash = "sha256-07Hj8mJGR0+Pn1DQ+sK5YQ3x3CTMsZ5h5yEoz44b2TM=";
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+    makeWrapper
+    # Ren'Py currently does not compile on Cython 3.x.
+    # See https://github.com/renpy/renpy/issues/5359
+    python3.pkgs.cython_0
+    python3.pkgs.setuptools
+  ];
+
+  buildInputs =
+    [
+      SDL2
+      libpng
+      ffmpeg
+      freetype
+      glew
+      libGLU
+      libGL
+      fribidi
+      zlib
+      harfbuzz
+    ]
+    ++ (with python3.pkgs; [
+      python
+      pygame-sdl2
+      tkinter
+      future
+      six
+      pefile
+      requests
+      ecdsa
+    ]);
+
+  RENPY_DEPS_INSTALL = lib.concatStringsSep "::" [
+    SDL2
+    SDL2.dev
+    libpng
+    ffmpeg.lib
+    freetype
+    glew.dev
+    libGLU
+    libGL
+    fribidi
+    zlib
+    harfbuzz.dev
+  ];
+
+  enableParallelBuilding = true;
+
+  patches = [ ./shutup-erofs-errors.patch ];
+
+  postPatch = ''
+    cp tutorial/game/tutorial_director.rpy{m,}
+
+    cat > renpy/vc_version.py << EOF
+    version = '${version}'
+    official = False
+    nightly = False
+    # Look at https://renpy.org/latest.html for what to put.
+    version_name = '64bit Sensation'
+    EOF
+  '';
+
+  buildPhase = with python3.pkgs; ''
+    runHook preBuild
+    ${python.pythonOnBuildForHost.interpreter} module/setup.py build --parallel=$NIX_BUILD_CORES
+    runHook postBuild
+  '';
+
+  installPhase = with python3.pkgs; ''
+    runHook preInstall
+
+    ${python.pythonOnBuildForHost.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 = {
+    description = "Visual Novel Engine";
+    mainProgram = "renpy";
+    homepage = "https://renpy.org/";
+    changelog = "https://renpy.org/doc/html/changelog.html";
+    license = lib.licenses.mit;
+    platforms = lib.platforms.linux;
+    maintainers = with lib.maintainers; [ shadowrz ];
+  };
+
+  passthru = {
+    inherit base_version vc_version;
+  };
+}