about summary refs log tree commit diff
path: root/pkgs/games/katago
diff options
context:
space:
mode:
authorMichael Reilly <OmnipotentEntity@gmail.com>2020-03-08 19:36:58 -0400
committerMichael Reilly <OmnipotentEntity@gmail.com>2020-03-31 01:49:11 -0400
commitdc3a76ae0ae6ae75ca29f1e8f8b9f3aceec5f7b5 (patch)
tree3985fb165b7215913122eef32e359d55072a6c85 /pkgs/games/katago
parent16a3d75f5e47bdef6741f630bc41d0280dba00f3 (diff)
katago: init at 1.3.5
Diffstat (limited to 'pkgs/games/katago')
-rw-r--r--pkgs/games/katago/default.nix97
1 files changed, 97 insertions, 0 deletions
diff --git a/pkgs/games/katago/default.nix b/pkgs/games/katago/default.nix
new file mode 100644
index 0000000000000..cbbdb538513cf
--- /dev/null
+++ b/pkgs/games/katago/default.nix
@@ -0,0 +1,97 @@
+{ stdenv
+, gcc8Stdenv
+, lib
+, libzip
+, boost
+, cmake
+, makeWrapper
+, fetchFromGitHub
+, cudnn ? null
+, cudatoolkit ? null
+, libGL_driver ? null
+, opencl-headers ? null
+, ocl-icd ? null
+, gperftools ? null
+, cudaSupport ? false
+, useTcmalloc ? true}:
+
+assert cudaSupport -> (
+  libGL_driver != null && 
+  cudatoolkit != null &&
+  cudnn != null);
+
+assert !cudaSupport -> (
+  opencl-headers != null &&
+  ocl-icd != null);
+
+assert useTcmalloc -> (
+  gperftools != null);
+
+let
+  env = if cudaSupport 
+    then gcc8Stdenv
+    else stdenv;
+
+in env.mkDerivation rec {
+  pname = "katago";
+  version = "1.3.5";
+
+  src = fetchFromGitHub {
+    owner = "lightvector";
+    repo = "katago";
+    rev = "v${version}";
+    sha256 = "1625s3fh0xc2ldgyl6sjdjmpliyys7rzzkcys6h9x6k828g8n0lq";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    makeWrapper
+  ];
+
+  buildInputs = [
+    libzip
+    boost
+  ] ++ lib.optionals cudaSupport [
+    cudnn
+    libGL_driver
+  ] ++ lib.optionals (!cudaSupport) [
+    opencl-headers
+    ocl-icd
+  ] ++ lib.optionals useTcmalloc [
+    gperftools
+  ];
+
+  cmakeFlags = [
+    "-DNO_GIT_REVISION=ON"
+  ] ++ lib.optionals cudaSupport [
+    "-DUSE_BACKEND=CUDA"
+  ] ++ lib.optionals (!cudaSupport) [
+    "-DUSE_BACKEND=OPENCL"
+  ] ++ lib.optionals useTcmalloc [
+    "-DUSE_TCMALLOC=ON"
+  ];
+
+  preConfigure = ''
+    cd cpp/
+  '' + lib.optionalString cudaSupport ''
+    export CUDA_PATH="${cudatoolkit}"
+    export EXTRA_LDFLAGS="-L/run/opengl-driver/lib"
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin; cp katago $out/bin;
+  '' + lib.optionalString cudaSupport ''
+    wrapProgram $out/bin/katago \
+      --prefix LD_LIBRARY_PATH : "/run/opengl-driver/lib"
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "Go engine modeled after AlphaGo Zero";
+    homepage    = "https://github.com/lightvector/katago";
+    license     = licenses.mit;
+    maintainers = [ maintainers.omnipotententity ];
+    platforms   = [ "x86_64-linux" ];
+  };
+}