summary refs log tree commit diff
path: root/pkgs/tools/games
diff options
context:
space:
mode:
authorSandro <sandro.jaeckel@gmail.com>2023-02-07 01:03:42 +0100
committerGitHub <noreply@github.com>2023-02-07 01:03:42 +0100
commit935e19528e2aaf634bd862cf2733a76a9fd78ccc (patch)
treebf67dd679d46f883fabea295508a039faefd03f8 /pkgs/tools/games
parent1bda69b4294492363df8716263aa06ed6637148c (diff)
parent1497498503e3578418ff93de4180ca00f5ca900a (diff)
downloadnixpkgs-935e19528e2aaf634bd862cf2733a76a9fd78ccc.tar
nixpkgs-935e19528e2aaf634bd862cf2733a76a9fd78ccc.tar.gz
nixpkgs-935e19528e2aaf634bd862cf2733a76a9fd78ccc.tar.bz2
nixpkgs-935e19528e2aaf634bd862cf2733a76a9fd78ccc.tar.lz
nixpkgs-935e19528e2aaf634bd862cf2733a76a9fd78ccc.tar.xz
nixpkgs-935e19528e2aaf634bd862cf2733a76a9fd78ccc.tar.zst
nixpkgs-935e19528e2aaf634bd862cf2733a76a9fd78ccc.zip
Merge pull request #208433 from OPNA2608/init/alice-tools
Diffstat (limited to 'pkgs/tools/games')
-rw-r--r--pkgs/tools/games/alice-tools/default.nix106
1 files changed, 106 insertions, 0 deletions
diff --git a/pkgs/tools/games/alice-tools/default.nix b/pkgs/tools/games/alice-tools/default.nix
new file mode 100644
index 00000000000..0aed7016fea
--- /dev/null
+++ b/pkgs/tools/games/alice-tools/default.nix
@@ -0,0 +1,106 @@
+{ stdenv
+, lib
+, gitUpdater
+, fetchFromGitHub
+, fetchpatch
+, meson
+, ninja
+, pkg-config
+, bison
+, flex
+, libiconv
+, libpng
+, libjpeg
+, libwebp
+, zlib
+, withGUI ? true
+, qtbase ? null
+, wrapQtAppsHook ? null
+}:
+
+assert withGUI -> qtbase != null && wrapQtAppsHook != null;
+
+stdenv.mkDerivation rec {
+  pname = "alice-tools";
+  version = "0.12.1";
+
+  src = fetchFromGitHub {
+    owner = "nunuhara";
+    repo = "alice-tools";
+    rev = version;
+    fetchSubmodules = true;
+    hash = "sha256-uXiNNneAOTDupgc+ZvaeRNbEQFJBv4ppdEc3kZeUsg8=";
+  };
+
+  patches = [
+    # These two patches (one to alice-tools, one to a subproject) improve DCF & PCF parsing
+    # Remove them when version > 0.12.1
+    (fetchpatch {
+      url = "https://github.com/nunuhara/alice-tools/commit/c800e85b37998d7a47060f5da4b1782d7201a042.patch";
+      excludes = [ "subprojects/libsys4" ];
+      hash = "sha256-R5ckFHqUWHdAPkFa53UbVeLgxJg/8qGLTQWwj5YRJc4=";
+    })
+    (fetchpatch {
+      url = "https://github.com/nunuhara/libsys4/commit/cff2b826d1618fb17616cdd288ab0c50f35e8032.patch";
+      stripLen = 1;
+      extraPrefix = "subprojects/libsys4/";
+      hash = "sha256-CmetiVP2kGL+MwuE9OoEDrDFxzwWvv1TtZuq1li1uIw=";
+    })
+  ];
+
+  postPatch = lib.optionalString (withGUI && lib.versionAtLeast qtbase.version "6.0") ''
+    substituteInPlace src/meson.build \
+      --replace qt5 qt6
+  '';
+
+  mesonFlags = lib.optionals (withGUI && lib.versionAtLeast qtbase.version "6.0") [
+    # Qt6 requires at least C++17, project uses compiler's default, default too old on Darwin & aarch64-linux
+    "-Dcpp_std=c++17"
+  ];
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    pkg-config
+    bison
+    flex
+  ] ++ lib.optionals withGUI [
+    wrapQtAppsHook
+  ];
+
+  buildInputs = [
+    libiconv
+    libpng
+    libjpeg
+    libwebp
+    zlib
+  ] ++ lib.optionals withGUI [
+    qtbase
+  ];
+
+  dontWrapQtApps = true;
+
+  # Default install step only installs a static library of a build dependency
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm755 src/alice $out/bin/alice
+  '' + lib.optionalString withGUI ''
+    install -Dm755 src/galice $out/bin/galice
+    wrapQtApp $out/bin/galice
+  '' + ''
+
+    runHook postInstall
+  '';
+
+  passthru.updateScript = gitUpdater { };
+
+  meta = with lib; {
+    description = "Tools for extracting/editing files from AliceSoft games";
+    homepage = "https://github.com/nunuhara/alice-tools";
+    license = licenses.gpl2Plus;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ OPNA2608 ];
+    mainProgram = if withGUI then "galice" else "alice";
+  };
+}