diff --git a/pressure-vessel/runtime.c b/pressure-vessel/runtime.c
index 590ccbeceddfe51e58587d70958b4a4c3cd2705c..a4b8b027ba09268cdabc9e558c61700126903967 100644
--- a/pressure-vessel/runtime.c
+++ b/pressure-vessel/runtime.c
@@ -2530,6 +2530,7 @@ bind_runtime_base (PvRuntime *self,
   {
     "/etc/amd",
     "/etc/drirc",
+    "/etc/nvidia",
     "/run/bumblebee.socket",
     NULL
   };
@@ -4739,12 +4740,16 @@ pv_runtime_use_provider_graphics_stack (PvRuntime *self,
   const GList *icd_iter;
   gboolean all_libglx_from_provider = TRUE;
   gboolean all_libdrm_from_provider = TRUE;
+  gboolean all_nvidia_from_provider = TRUE;
   g_autoptr(GHashTable) drirc_data_in_provider = g_hash_table_new_full (g_str_hash,
                                                                         g_str_equal,
                                                                         g_free, NULL);
   g_autoptr(GHashTable) libdrm_data_in_provider = g_hash_table_new_full (g_str_hash,
                                                                          g_str_equal,
                                                                          g_free, NULL);
+  g_autoptr(GHashTable) nvidia_data_in_provider = g_hash_table_new_full (g_str_hash,
+                                                                         g_str_equal,
+                                                                         g_free, NULL);
   g_autoptr(GHashTable) gconv_in_provider = g_hash_table_new_full (g_str_hash, g_str_equal,
                                                                      g_free, NULL);
   g_autofree gchar *provider_in_container_namespace_guarded = NULL;
@@ -4930,6 +4935,7 @@ pv_runtime_use_provider_graphics_stack (PvRuntime *self,
           g_autofree gchar *libdrm = NULL;
           g_autofree gchar *libdrm_amdgpu = NULL;
           g_autofree gchar *libglx_mesa = NULL;
+          g_autofree gchar *libglx_nvidia = NULL;
           g_autofree gchar *platform_token = NULL;
           g_autoptr(GPtrArray) patterns = NULL;
           SrtSystemInfo *arch_system_info;
@@ -5074,6 +5080,24 @@ pv_runtime_use_provider_graphics_stack (PvRuntime *self,
               all_libglx_from_provider = FALSE;
             }
 
+          libglx_nvidia = g_build_filename (arch->libdir_in_current_namespace, "libGLX_nvidia.so.0", NULL);
+
+          /* If we have libGLX_nvidia.so.0 in overrides we also want to mount
+           * ${prefix}/share/nvidia from the provider. ${prefix} is derived from
+           * the absolute path of libGLX_nvidia.so.0 */
+          if (g_file_test (libglx_nvidia, G_FILE_TEST_IS_SYMLINK))
+            {
+              pv_runtime_collect_lib_data (self, arch, "nvidia", libglx_nvidia,
+                                           provider_in_container_namespace_guarded,
+                                           nvidia_data_in_provider);
+            }
+          else
+            {
+              /* For at least a single architecture, libGLX_nvidia is newer in the container */
+              all_nvidia_from_provider = FALSE;
+            }
+
+
           dirs = multiarch_details_get_libdirs (arch->details,
                                                 MULTIARCH_LIBDIRS_FLAGS_NONE);
 
@@ -5177,6 +5201,11 @@ pv_runtime_use_provider_graphics_stack (PvRuntime *self,
                                    drirc_data_in_provider, error))
     return FALSE;
 
+  if (!pv_runtime_finish_lib_data (self, bwrap, "nvidia", "libGLX_nvidia.so.0",
+                                   all_nvidia_from_provider,
+                                   nvidia_data_in_provider, error))
+    return FALSE;
+
   g_debug ("Setting up EGL ICD JSON...");
 
   if (!setup_each_json_manifest (self, bwrap, "glvnd/egl_vendor.d",