--- a/configure.ac
+++ b/configure.ac
@@ -83,8 +83,40 @@
                                gobject-introspection-1.0 >= $GOBJECT_INTROSPECTION_MIN_VERSION
 			       libcanberra
                                polkit-agent-1 >= $POLKIT_MIN_VERSION xfixes
-                               libnm-glib libnm-util gnome-keyring-1
                                gnome-desktop-3.0 >= GNOME_DESKTOP_MIN_VERSION)
+
+##########################
+# Check for NetworkManager
+##########################
+NM_MIN_VERSION=0.9
+AC_ARG_ENABLE(networkmanager,
+              AS_HELP_STRING([--disable-networkmanager],
+                             [disable NetworkManager support @<:@default=auto@:>@]),,
+              [enable_networkmanager=auto])
+
+if test "x$enable_networkmanager" != "xno"; then
+   PKG_CHECK_MODULES(NETWORKMANAGER,
+                     [libnm-glib libnm-util gnome-keyring-1],
+                     [have_networkmanager=yes],
+                     [have_networkmanager=no])
+
+   CINNAMON_CFLAGS="$CINNAMON_CFLAGS $NETWORKMANAGER_CFLAGS"
+   CINNAMON_LIBS="$CINNAMON_LIBS $NETWORKMANAGER_LIBS"
+else
+   have_networkmanager="no  (disabled)"
+fi
+
+if test "x$have_networkmanager" = "xyes"; then
+   AC_DEFINE(HAVE_NETWORKMANAGER, [1], [Define if we have NetworkManager])
+   AC_SUBST([HAVE_NETWORKMANAGER], [1])
+else
+   if test "x$enable_networkmanager" = "xyes"; then
+      AC_MSG_ERROR([Couldn't find NetworkManager.])
+   fi
+   AC_SUBST([HAVE_NETWORKMANAGER], [0])
+fi
+
+AM_CONDITIONAL(HAVE_NETWORKMANAGER, test "$have_networkmanager" = "yes")
 
 PKG_CHECK_MODULES(CINNAMON_PERF_HELPER, gtk+-3.0 gio-2.0)
 
@@ -242,3 +274,15 @@
   files/Makefile
 ])
 AC_OUTPUT
+
+echo "
+Build configuration:
+
+       Prefix:                                 ${prefix}
+       Source code location:                   ${srcdir}
+       Compiler:                               ${CC}
+       Compiler Warnings:                      $enable_compile_warnings
+
+       Support for NetworkManager:             $have_networkmanager
+       Support for GStreamer recording:        $build_recorder
+"
--- a/js/misc/config.js.in
+++ b/js/misc/config.js.in
@@ -8,5 +8,7 @@
 const GJS_VERSION = '@GJS_VERSION@';
 /* 1 if gnome-bluetooth is available, 0 otherwise */
 const HAVE_BLUETOOTH = @HAVE_BLUETOOTH@;
+/* 1 if networkmanager is available, 0 otherwise */
+const HAVE_NETWORKMANAGER = @HAVE_NETWORKMANAGER@;
 /* The system TLS CA list */
 const CINNAMON_SYSTEM_CA_FILE = '@CINNAMON_SYSTEM_CA_FILE@';
--- a/js/ui/main.js
+++ b/js/ui/main.js
@@ -57,6 +57,7 @@
 const AppletManager = imports.ui.appletManager;
 const AutomountManager = imports.ui.automountManager;
 const AutorunManager = imports.ui.autorunManager;
+const Config = imports.misc.config;
 const DeskletManager = imports.ui.deskletManager;
 const EndSessionDialog = imports.ui.endSessionDialog;
 const PolkitAuthenticationAgent = imports.ui.polkitAuthenticationAgent;
@@ -70,7 +71,7 @@
 const RunDialog = imports.ui.runDialog;
 const Layout = imports.ui.layout;
 const LookingGlass = imports.ui.lookingGlass;
-const NetworkAgent = imports.ui.networkAgent;
+const NetworkAgent = Config.HAVE_NETWORKMANAGER ? imports.ui.networkAgent : null;
 const NotificationDaemon = imports.ui.notificationDaemon;
 const WindowAttentionHandler = imports.ui.windowAttentionHandler;
 const Scripting = imports.ui.scripting;
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -111,9 +111,7 @@
 	cinnamon-generic-container.h	\
 	cinnamon-gtk-embed.h		\
 	cinnamon-global.h			\
-	cinnamon-mobile-providers.h	\
 	cinnamon-mount-operation.h		\
-	cinnamon-network-agent.h		\
 	cinnamon-perf-log.h		\
 	cinnamon-screenshot.h	\
 	cinnamon-screen-grabber.h	\
@@ -125,6 +123,10 @@
 	cinnamon-window-tracker.h		\
 	cinnamon-wm.h			\
 	cinnamon-xfixes-cursor.h
+
+if HAVE_NETWORKMANAGER
+cinnamon_public_headers_h += cinnamon-mobile-providers.h cinnamon-network-agent.h
+endif
 
 libcinnamon_la_SOURCES =		\
 	$(cinnamon_built_sources)		\
@@ -149,9 +151,7 @@
 	cinnamon-generic-container.c	\
 	cinnamon-gtk-embed.c		\
 	cinnamon-global.c			\
-	cinnamon-mobile-providers.c	\
 	cinnamon-mount-operation.c		\
-	cinnamon-network-agent.c		\
 	cinnamon-perf-log.c		\
 	cinnamon-polkit-authentication-agent.h	\
 	cinnamon-polkit-authentication-agent.c	\
@@ -166,6 +166,10 @@
 	cinnamon-wm.c			\
 	cinnamon-xfixes-cursor.c
 
+if HAVE_NETWORKMANAGER
+libcinnamon_la_SOURCES += cinnamon-mobile-providers.c cinnamon-network-agent.c
+endif
+
 libcinnamon_la_gir_sources = \
 	$(filter-out %-private.h $(cinnamon_recorder_non_gir_sources), $(cinnamon_public_headers_h) $(libcinnamon_la_SOURCES))
 
@@ -277,7 +281,10 @@
 libcinnamon_la_CPPFLAGS = $(cinnamon_cflags)
 
 Cinnamon-0.1.gir: libcinnamon.la St-1.0.gir
-Cinnamon_0_1_gir_INCLUDES = Clutter-1.0 ClutterX11-1.0 Meta-Muffin.0 Soup-2.4 GMenu-3.0 NetworkManager-1.0 NMClient-1.0
+Cinnamon_0_1_gir_INCLUDES = Clutter-1.0 ClutterX11-1.0 Meta-Muffin.0 Soup-2.4 GMenu-3.0
+if HAVE_NETWORKMANAGER
+Cinnamon_0_1_gir_INCLUDES += NetworkManager-1.0 NMClient-1.0
+endif
 Cinnamon_0_1_gir_CFLAGS = $(libcinnamon_la_CPPFLAGS) -I $(srcdir)
 Cinnamon_0_1_gir_LIBS = libcinnamon.la
 Cinnamon_0_1_gir_FILES = $(libcinnamon_la_gir_sources)