diff --git a/features.in/ldm/README b/features.in/ldm/README
new file mode 100644
index 00000000..c24bb609
--- /dev/null
+++ b/features.in/ldm/README
@@ -0,0 +1,9 @@
+Simple hook to run Linux Driver Management tools to configure hybrid graphics
+(aka Optimus/PRIME) for different DM's.
+
+Currently supported:
++ LightDM
++ GDM
++ SDDM
+
+See https://github.com/solus-project/linux-driver-management
diff --git a/features.in/ldm/config.mk b/features.in/ldm/config.mk
new file mode 100644
index 00000000..a2ee47cc
--- /dev/null
+++ b/features.in/ldm/config.mk
@@ -0,0 +1,23 @@
++ldm: use/ldm/session; @:
+
+# common
+use/ldm: sub/rootfs use/services
+	@$(call add_feature)
+	@$(call add,COMMON_PACKAGES,ldm-tools)
+
+# configure X11 session
+use/ldm/session: use/ldm
+	@$(call add,COMMON_PACKAGES,ldm-session-init)
+	@$(call add,DEFAULT_SERVICES_ENABLE,ldm)
+
+# configure lightdm session
+use/ldm/session/lightdm: use/ldm/session
+	@$(call add,COMMON_PACKAGES,ldm-session-init-lightdm)
+
+# configure sddm session
+use/ldm/session/sddm: use/ldm/session
+	@$(call add,COMMON_PACKAGES,ldm-session-init-sddm)
+
+# configure gdm session
+use/ldm/session/gdm: use/ldm/session
+	@$(call add,COMMON_PACKAGES,ldm-session-init-gdm)
diff --git a/features.in/ldm/rootfs/image-scripts.d/50-ldm b/features.in/ldm/rootfs/image-scripts.d/50-ldm
new file mode 100755
index 00000000..891bba65
--- /dev/null
+++ b/features.in/ldm/rootfs/image-scripts.d/50-ldm
@@ -0,0 +1,17 @@
+#!/bin/sh -efu
+# initiate LDM hook on boot
+
+cat << EOF > /etc/systemd/system/ldm.service
+[Unit]
+Description=Runs LDM configuration hooks
+
+[Service]
+ExecStart=/usr/bin/linux-driver-management configure gpu
+Type=oneshot
+RemainAfterExit=yes
+
+[Install]
+WantedBy=default.target
+EOF
+
+systemctl enable ldm.service