-diff --git a/daemon/gdm-session.c b/daemon/gdm-session.c
-index ff3a1acb..b8705d8f 100644
+--- a/daemon/gdm-launch-environment.c
++++ b/daemon/gdm-launch-environment.c
+@@ -126,7 +126,7 @@
+                 "LC_COLLATE", "LC_MONETARY", "LC_MESSAGES", "LC_PAPER",
+                 "LC_NAME", "LC_ADDRESS", "LC_TELEPHONE", "LC_MEASUREMENT",
+                 "LC_IDENTIFICATION", "LC_ALL", "WINDOWPATH", "XCURSOR_PATH",
+-                "XDG_CONFIG_DIRS", NULL
++                "XDG_CONFIG_DIRS", "GDM_SESSIONS_DIR", NULL
+         };
+         char *system_data_dirs;
+         int i;
 --- a/daemon/gdm-session.c
 +++ b/daemon/gdm-session.c
-@@ -344,6 +344,7 @@ get_system_session_dirs (GdmSession *self)
+@@ -345,12 +345,17 @@
          char **search_dirs;
  
          static const char *x_search_dirs[] = {

         static const char *wayland_search_dir = DATADIR "/wayland-sessions/";
 
         search_array = g_array_new (TRUE, TRUE, sizeof (char *));

                 "/etc/X11/sessions/",
                 DMCONFDIR "/Sessions/",
                 DATADIR "/gdm/BuiltInSessions/",
                 DATADIR "/xsessions/",
         };
 
+        if (getenv("GDM_SESSIONS_DIR") != NULL) {
