diff --git a/CMakeLists.txt b/CMakeLists.txt
index 8c71334597d45ef00a807fa162a326ea96588979..a129a2cb41352327a6cb059ce60d58b9e0d7a501 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -67,6 +67,13 @@ set_package_properties(KF6DocTools PROPERTIES
     TYPE OPTIONAL
 )
 
+find_package(Libcap)
+set_package_properties(Libcap PROPERTIES
+    TYPE OPTIONAL
+    PURPOSE "Needed for scheduled wakeup which can wake from suspend (CAP_WAKE_ALARM)"
+)
+set(HAVE_LIBCAP ${Libcap_FOUND})
+
 find_package(DDCUtil)
 if(DDCUtil_FOUND)
     add_definitions(-DWITH_DDCUTIL)
diff --git a/daemon/CMakeLists.txt b/daemon/CMakeLists.txt
index b0dc9397f8a61cc0ace52b1443a01f7055fbaa07..2d656f515e7e382bd5ee5172dad324f57855c977 100644
--- a/daemon/CMakeLists.txt
+++ b/daemon/CMakeLists.txt
@@ -191,6 +191,15 @@ endif ()
 target_link_libraries(powerdevil ${UDEV_LIBS})
 
 install(TARGETS powerdevil DESTINATION ${KDE_INSTALL_FULL_LIBEXECDIR})
+if (HAVE_LIBCAP)
+    install(
+    CODE "execute_process(
+            COMMAND
+                ${SETCAP_EXECUTABLE}
+                CAP_WAKE_ALARM=+ep
+                \$ENV{DESTDIR}${KDE_INSTALL_FULL_LIBEXECDIR}/org_kde_powerdevil)"
+    )
+endif()
 
 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/powerdevil.desktop
         DESTINATION ${KDE_INSTALL_AUTOSTARTDIR})
