From e8284c77c92240ee78533c06e6d98bf74dfd93a8 Mon Sep 17 00:00:00 2001
From: Albert Safin <xzfcpw@gmail.com>
Date: Mon, 29 Apr 2019 00:49:55 +0000
Subject: [PATCH] waifu2x-converter-cpp: init at 5.2.4

---
 .../waifu2x-converter-cpp/default.nix         | 34 +++++++++++++++++++
 pkgs/top-level/all-packages.nix               |  2 ++
 2 files changed, 36 insertions(+)
 create mode 100644 pkgs/tools/graphics/waifu2x-converter-cpp/default.nix

diff --git a/pkgs/tools/graphics/waifu2x-converter-cpp/default.nix b/pkgs/tools/graphics/waifu2x-converter-cpp/default.nix
new file mode 100644
index 000000000000..5537540382bf
--- /dev/null
+++ b/pkgs/tools/graphics/waifu2x-converter-cpp/default.nix
@@ -0,0 +1,34 @@
+{ cmake, fetchFromGitHub, opencv3, stdenv, opencl-headers
+, cudaSupport ? false, cudatoolkit ? null
+}:
+
+stdenv.mkDerivation rec {
+  pname = "waifu2x-converter-cpp";
+  version = "5.2.4";
+
+  src = fetchFromGitHub {
+    owner = "DeadSix27";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0r7xcjqbyaa20gsgmjj7645640g3nb2bn1pc1nlfplwlzjxmz213";
+  };
+
+  patchPhase = ''
+    # https://github.com/DeadSix27/waifu2x-converter-cpp/issues/123
+    sed -i 's:{"PNG",  false},:{"PNG",  true},:' src/main.cpp
+  '';
+
+  buildInputs = [
+    opencv3 opencl-headers
+  ] ++ stdenv.lib.optional cudaSupport cudatoolkit;
+
+  nativeBuildInputs = [ cmake ];
+
+  meta = {
+    description = "Improved fork of Waifu2X C++ using OpenCL and OpenCV";
+    homepage = https://github.com/DeadSix27/waifu2x-converter-cpp;
+    license = stdenv.lib.licenses.mit;
+    maintainers = [ stdenv.lib.maintainers.xzfc ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 81eab30b55d0..30e94eea7052 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -6342,6 +6342,8 @@ in
 
   vtun = callPackage ../tools/networking/vtun { };
 
+  waifu2x-converter-cpp = callPackage ../tools/graphics/waifu2x-converter-cpp { };
+
   wakatime = pythonPackages.callPackage ../tools/misc/wakatime { };
 
   weather = callPackage ../applications/misc/weather { };