diff --git a/pkgs/development/python-modules/google_gax/default.nix b/pkgs/development/python-modules/google_gax/default.nix
new file mode 100644
index 000000000000..24000161338c
--- /dev/null
+++ b/pkgs/development/python-modules/google_gax/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, buildPythonPackage, fetchPypi
+, google_auth, ply, protobuf, grpcio, requests, googleapis_common_protos,  dill,  future,  pytest,  mock,  unittest2 }:
+
+buildPythonPackage rec {
+  pname = "google-gax";
+  version = "0.15.16";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0p1ribd2xy7a04wnjv12agkcdi6f9cpj838884hayx07p5g8v3ji";
+  };
+
+  propagatedBuildInputs = [ google_auth ply protobuf grpcio requests googleapis_common_protos dill future ];
+  checkInputs = [ pytest mock unittest2 ];
+
+  # Importing test__grpc_google_auth fails with "ModuleNotFoundError: No module named 'google_auth_httplib2'", where
+  # that file would be is unclear to me so I just remove the test.
+  postPatch = ''rm tests/test__grpc_google_auth.py'';
+
+  checkPhase = ''
+    py.test
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Google API Extensions for Python (gax-python) tools based on gRPC and Google API conventions.";
+    homepage = "http://gax-python.readthedocs.io/en/latest/";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ vanschelven ];
+  };
+}
diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix
index 1845510de19e..cf1d159a1f4c 100644
--- a/pkgs/top-level/python-packages.nix
+++ b/pkgs/top-level/python-packages.nix
@@ -9101,6 +9101,8 @@ in {
 
   google_cloud_core = callPackage ../development/python-modules/google_cloud_core { };
 
+  google_gax = callPackage ../development/python-modules/google_gax { };
+
   grammalecte = callPackage ../development/python-modules/grammalecte { };
 
   greenlet = buildPythonPackage rec {