736b2c
diff --git a/engine/dconf-engine-source-user.c b/engine/dconf-engine-source-user.c
736b2c
index 1657875..e4f8786 100644
736b2c
--- a/engine/dconf-engine-source-user.c
736b2c
+++ b/engine/dconf-engine-source-user.c
736b2c
@@ -39,11 +39,17 @@ dconf_engine_source_user_open_gvdb (const gchar *name)
736b2c
 {
736b2c
   GvdbTable *table;
736b2c
   gchar *filename;
736b2c
+  const gchar *override;
736b2c
+
736b2c
+  override = g_getenv ("DCONF_USER_CONFIG_DIR");
736b2c
+  if (override == NULL)
736b2c
+    filename = g_build_filename (g_get_user_config_dir (), "dconf", name, NULL);
736b2c
+  else
736b2c
+    filename = g_build_filename (g_get_home_dir (), override, name, NULL);
736b2c
 
736b2c
   /* This can fail in the normal case of the user not having any
736b2c
    * settings.  That's OK and it shouldn't be considered as an error.
736b2c
    */
736b2c
-  filename = g_build_filename (g_get_user_config_dir (), "dconf", name, NULL);
736b2c
   table = gvdb_table_new (filename, FALSE, NULL);
736b2c
   g_free (filename);
736b2c