diff --git a/meson.build b/meson.build
index b03fc403..ade6104e 100644
--- a/meson.build
+++ b/meson.build
@@ -94,7 +94,6 @@ gtk_x11_dep = dependency('gtk+-x11-3.0')
 gweather_dep = dependency('gweather-3.0', version: '>= 3.9.5')
 lcms_dep = dependency('lcms2', version: '>= 2.2')
 libcanberra_gtk_dep = dependency('libcanberra-gtk3')
-libgeoclue_dep = dependency('libgeoclue-2.0', version: '>= 2.3.1')
 libnotify_dep = dependency('libnotify', version: '>= 0.7.3')
 libpulse_mainloop_glib_dep = dependency('libpulse-mainloop-glib', version: '>= 2.0')
 pango_dep = dependency('pango', version: '>= 1.20.0')
diff --git a/plugins/color/gcm-self-test.c b/plugins/color/gcm-self-test.c
index 7ff01f68..f4308d89 100644
--- a/plugins/color/gcm-self-test.c
+++ b/plugins/color/gcm-self-test.c
@@ -80,9 +80,6 @@ gcm_test_night_light (void)
         datetime_override = g_date_time_new_utc (2017, 2, 8, 20, 0, 0);
         gsd_night_light_set_date_time_now (nlight, datetime_override);
 
-        /* do not start geoclue */
-        gsd_night_light_set_geoclue_enabled (nlight, FALSE);
-
         /* do not smooth the transition */
         gsd_night_light_set_smooth_enabled (nlight, FALSE);
 
diff --git a/plugins/color/gsd-night-light.c b/plugins/color/gsd-night-light.c
index 701c7753..d00a78a3 100644
--- a/plugins/color/gsd-night-light.c
+++ b/plugins/color/gsd-night-light.c
@@ -20,8 +20,6 @@
 
 #include "config.h"
 
-#include <geoclue.h>
-
 #define GNOME_DESKTOP_USE_UNSTABLE_API
 #include "gnome-datetime-source.h"
 
@@ -36,11 +34,8 @@ struct _GsdNightLight {
         gboolean           forced;
         gboolean           disabled_until_tmw;
         GDateTime         *disabled_until_tmw_dt;
-        gboolean           geoclue_enabled;
         GSource           *source;
         guint              validate_id;
-        GClueClient       *geoclue_client;
-        GClueSimple       *geoclue_simple;
         GSettings         *location_settings;
         gdouble            cached_sunrise;
         gdouble            cached_sunset;
@@ -454,91 +449,6 @@ settings_changed_cb (GSettings *settings, gchar *key, gpointer user_data)
         night_light_recheck (self);
 }
 
-static void
-on_location_notify (GClueSimple *simple,
-                    GParamSpec  *pspec,
-                    gpointer     user_data)
-{
-        GsdNightLight *self = GSD_NIGHT_LIGHT (user_data);
-        GClueLocation *location;
-        gdouble latitude, longitude;
-
-        location = gclue_simple_get_location (simple);
-        latitude = gclue_location_get_latitude (location);
-        longitude = gclue_location_get_longitude (location);
-
-        g_settings_set_value (self->settings,
-                              "night-light-last-coordinates",
-                              g_variant_new ("(dd)", latitude, longitude));
-
-        g_debug ("got geoclue latitude %f, longitude %f", latitude, longitude);
-
-        /* recheck the levels if the location changed significantly */
-        if (update_cached_sunrise_sunset (self))
-                night_light_recheck_schedule (self);
-}
-
-static void
-on_geoclue_simple_ready (GObject      *source_object,
-                         GAsyncResult *res,
-                         gpointer      user_data)
-{
-        GsdNightLight *self = GSD_NIGHT_LIGHT (user_data);
-        GClueSimple *geoclue_simple;
-        g_autoptr(GError) error = NULL;
-
-        geoclue_simple = gclue_simple_new_finish (res, &error);
-        if (geoclue_simple == NULL) {
-                if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
-                        g_warning ("Failed to connect to GeoClue2 service: %s", error->message);
-                return;
-        }
-
-        self->geoclue_simple = geoclue_simple;
-        self->geoclue_client = gclue_simple_get_client (self->geoclue_simple);
-        g_object_set (G_OBJECT (self->geoclue_client),
-                      "time-threshold", 60*60, NULL); /* 1 hour */
-
-        g_signal_connect (self->geoclue_simple, "notify::location",
-                          G_CALLBACK (on_location_notify), user_data);
-
-        on_location_notify (self->geoclue_simple, NULL, user_data);
-}
-
-static void
-start_geoclue (GsdNightLight *self)
-{
-        self->cancellable = g_cancellable_new ();
-        gclue_simple_new (DESKTOP_ID,
-                          GCLUE_ACCURACY_LEVEL_CITY,
-                          self->cancellable,
-                          on_geoclue_simple_ready,
-                          self);
-
-}
-
-static void
-stop_geoclue (GsdNightLight *self)
-{
-        g_cancellable_cancel (self->cancellable);
-        g_clear_object (&self->cancellable);
-
-        if (self->geoclue_client != NULL) {
-                gclue_client_call_stop (self->geoclue_client, NULL, NULL, NULL);
-                self->geoclue_client = NULL;
-        }
-        g_clear_object (&self->geoclue_simple);
-}
-
-static void
-check_location_settings (GsdNightLight *self)
-{
-        if (g_settings_get_boolean (self->location_settings, "enabled") && self->geoclue_enabled)
-                start_geoclue (self);
-        else
-                stop_geoclue (self);
-}
-
 void
 gsd_night_light_set_disabled_until_tmw (GsdNightLight *self, gboolean value)
 {
@@ -608,12 +518,6 @@ gsd_night_light_get_temperature (GsdNightLight *self)
         return self->cached_temperature;
 }
 
-void
-gsd_night_light_set_geoclue_enabled (GsdNightLight *self, gboolean enabled)
-{
-        self->geoclue_enabled = enabled;
-}
-
 gboolean
 gsd_night_light_start (GsdNightLight *self, GError **error)
 {
@@ -624,10 +528,6 @@ gsd_night_light_start (GsdNightLight *self, GError **error)
         g_signal_connect (self->settings, "changed",
                           G_CALLBACK (settings_changed_cb), self);
 
-        g_signal_connect_swapped (self->location_settings, "changed::enabled",
-                                  G_CALLBACK (check_location_settings), self);
-        check_location_settings (self);
-
         return TRUE;
 }
 
@@ -636,8 +536,6 @@ gsd_night_light_finalize (GObject *object)
 {
         GsdNightLight *self = GSD_NIGHT_LIGHT (object);
 
-        stop_geoclue (self);
-
         poll_timeout_destroy (self);
         poll_smooth_destroy (self);
 
@@ -783,7 +681,6 @@ gsd_night_light_class_init (GsdNightLightClass *klass)
 static void
 gsd_night_light_init (GsdNightLight *self)
 {
-        self->geoclue_enabled = TRUE;
         self->smooth_enabled = TRUE;
         self->cached_sunrise = -1.f;
         self->cached_sunset = -1.f;
diff --git a/plugins/color/gsd-night-light.h b/plugins/color/gsd-night-light.h
index 8803c338..ec1ae7ac 100644
--- a/plugins/color/gsd-night-light.h
+++ b/plugins/color/gsd-night-light.h
@@ -46,8 +46,6 @@ void             gsd_night_light_set_forced             (GsdNightLight *self,
                                                          gboolean       value);
 
 /* only for the self test program */
-void             gsd_night_light_set_geoclue_enabled    (GsdNightLight *self,
-                                                         gboolean       enabled);
 void             gsd_night_light_set_date_time_now      (GsdNightLight *self,
                                                          GDateTime     *datetime);
 void             gsd_night_light_set_smooth_enabled     (GsdNightLight *self,
diff --git a/plugins/color/meson.build b/plugins/color/meson.build
index 2ae1740a..45688712 100644
--- a/plugins/color/meson.build
+++ b/plugins/color/meson.build
@@ -15,7 +15,6 @@ deps = plugins_deps + [
   gnome_desktop_dep,
   lcms_dep,
   libcanberra_gtk_dep,
-  libgeoclue_dep,
   libnotify_dep,
   m_dep,
 ]
diff --git a/plugins/datetime/gsd-timezone-monitor.c b/plugins/datetime/gsd-timezone-monitor.c
index ca3e6a7f..16493366 100644
--- a/plugins/datetime/gsd-timezone-monitor.c
+++ b/plugins/datetime/gsd-timezone-monitor.c
@@ -25,7 +25,6 @@
 #include "tz.h"
 #include "weather-tz.h"
 
-#include <geoclue.h>
 #include <geocode-glib/geocode-glib.h>
 #include <polkit/polkit.h>
 
@@ -45,10 +44,6 @@ typedef struct
         GPermission *permission;
         Timedate1 *dtm;
 
-        GClueClient *geoclue_client;
-        GClueSimple *geoclue_simple;
-        GCancellable *geoclue_cancellable;
-
         TzDB *tzdb;
         WeatherTzDB *weather_tzdb;
         gchar *current_timezone;
@@ -255,113 +250,6 @@ on_reverse_geocoding_ready (GObject      *source_object,
         g_object_unref (place);
 }
 
-static void
-start_reverse_geocoding (GsdTimezoneMonitor *self,
-                         gdouble             latitude,
-                         gdouble             longitude)
-{
-        GeocodeLocation *location;
-        GeocodeReverse *reverse;
-        GsdTimezoneMonitorPrivate *priv = gsd_timezone_monitor_get_instance_private (self);
-
-        location = geocode_location_new (latitude,
-                                         longitude,
-                                         GEOCODE_LOCATION_ACCURACY_CITY);
-
-        reverse = geocode_reverse_new_for_location (location);
-        geocode_reverse_resolve_async (reverse,
-                                       priv->geoclue_cancellable,
-                                       on_reverse_geocoding_ready,
-                                       self);
-
-        g_object_unref (location);
-        g_object_unref (reverse);
-}
-
-static void
-on_location_notify (GClueSimple *simple,
-                    GParamSpec  *pspec,
-                    gpointer     user_data)
-{
-        GsdTimezoneMonitor *self = user_data;
-        GClueLocation *location;
-        gdouble latitude, longitude;
-
-        location = gclue_simple_get_location (simple);
-
-        latitude = gclue_location_get_latitude (location);
-        longitude = gclue_location_get_longitude (location);
-
-        g_debug ("Got location %lf,%lf", latitude, longitude);
-
-        start_reverse_geocoding (self, latitude, longitude);
-}
-
-static void
-on_geoclue_simple_ready (GObject      *source_object,
-                         GAsyncResult *res,
-                         gpointer      user_data)
-{
-        GError *error = NULL;
-        GsdTimezoneMonitorPrivate *priv;
-        GClueSimple *geoclue_simple;
-
-        geoclue_simple = gclue_simple_new_finish (res, &error);
-        if (geoclue_simple == NULL) {
-                if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
-                        g_warning ("Failed to connect to GeoClue2 service: %s", error->message);
-                g_error_free (error);
-                return;
-        }
-
-        g_debug ("Geoclue now available");
-
-        priv = gsd_timezone_monitor_get_instance_private (user_data);
-        priv->geoclue_simple = geoclue_simple;
-        priv->geoclue_client = gclue_simple_get_client (priv->geoclue_simple);
-        gclue_client_set_distance_threshold (priv->geoclue_client,
-                                             GEOCODE_LOCATION_ACCURACY_CITY);
-
-        g_signal_connect (priv->geoclue_simple, "notify::location",
-                          G_CALLBACK (on_location_notify), user_data);
-
-        on_location_notify (priv->geoclue_simple, NULL, user_data);
-}
-
-static void
-start_geoclue (GsdTimezoneMonitor *self)
-{
-        GsdTimezoneMonitorPrivate *priv = gsd_timezone_monitor_get_instance_private (self);
-
-        g_debug ("Timezone monitor enabled, starting geoclue");
-
-        priv->geoclue_cancellable = g_cancellable_new ();
-        gclue_simple_new (DESKTOP_ID,
-                          GCLUE_ACCURACY_LEVEL_CITY,
-                          priv->geoclue_cancellable,
-                          on_geoclue_simple_ready,
-                          self);
-
-}
-
-static void
-stop_geoclue (GsdTimezoneMonitor *self)
-{
-        GsdTimezoneMonitorPrivate *priv = gsd_timezone_monitor_get_instance_private (self);
-
-        g_debug ("Timezone monitor disabled, stopping geoclue");
-
-        g_cancellable_cancel (priv->geoclue_cancellable);
-        g_clear_object (&priv->geoclue_cancellable);
-
-        if (priv->geoclue_client) {
-                gclue_client_call_stop (priv->geoclue_client, NULL, NULL, NULL);
-                priv->geoclue_client = NULL;
-        }
-
-        g_clear_object (&priv->geoclue_simple);
-}
-
 GsdTimezoneMonitor *
 gsd_timezone_monitor_new (void)
 {
@@ -376,8 +264,6 @@ gsd_timezone_monitor_finalize (GObject *obj)
 
         g_debug ("Stopping timezone monitor");
 
-        stop_geoclue (monitor);
-
         if (priv->cancellable) {
                 g_cancellable_cancel (priv->cancellable);
                 g_clear_object (&priv->cancellable);
@@ -411,16 +297,6 @@ gsd_timezone_monitor_class_init (GsdTimezoneMonitorClass *klass)
                               G_TYPE_NONE, 1, G_TYPE_POINTER);
 }
 
-static void
-check_location_settings (GsdTimezoneMonitor *self)
-{
-        GsdTimezoneMonitorPrivate *priv = gsd_timezone_monitor_get_instance_private (self);
-        if (g_settings_get_boolean (priv->location_settings, "enabled"))
-                start_geoclue (self);
-        else
-                stop_geoclue (self);
-}
-
 static void
 gsd_timezone_monitor_init (GsdTimezoneMonitor *self)
 {
@@ -463,7 +339,4 @@ gsd_timezone_monitor_init (GsdTimezoneMonitor *self)
         priv->weather_tzdb = weather_tz_db_new ();
 
         priv->location_settings = g_settings_new ("org.gnome.system.location");
-        g_signal_connect_swapped (priv->location_settings, "changed::enabled",
-                                  G_CALLBACK (check_location_settings), self);
-        check_location_settings (self);
 }
diff --git a/plugins/datetime/meson.build b/plugins/datetime/meson.build
index ed2d433f..364b6150 100644
--- a/plugins/datetime/meson.build
+++ b/plugins/datetime/meson.build
@@ -20,7 +20,6 @@ sources += gnome.gdbus_codegen(
 deps = plugins_deps + [
   geocode_glib_dep,
   gweather_dep,
-  libgeoclue_dep,
   libnotify_dep,
   m_dep,
   polkit_gobject_dep
