diff --git a/build/gapps.sh b/build/gapps.sh
index 80ed7de..52e5ec5 100755
--- a/build/gapps.sh
+++ b/build/gapps.sh
@@ -43,6 +43,8 @@ function create() {
test -d $OUT/$GARCH || mkdir -p $OUT/$GARCH
test -d $OUT/$GARCH/system || mkdir -p $OUT/$GARCH/system
echo "Build directories are now ready" >> $GLOG
+ echo "Compiling RROs"
+ $TOP/overlay/build_overlays.sh $GARCH $OUT/$GARCH
echo "Getting prebuilts..."
echo "Copying stuff" >> $GLOG
cp $TOP/toybox-$GARCH $OUT/$GARCH/toybox >> $GLOG
diff --git a/build/target/product/AndroidProducts.mk b/build/target/product/AndroidProducts.mk
new file mode 100644
index 0000000..27ee0de
--- /dev/null
+++ b/build/target/product/AndroidProducts.mk
@@ -0,0 +1,5 @@
+PRODUCT_MAKEFILES := \
+ $(LOCAL_DIR)/lineage_gapps_arm.mk \
+ $(LOCAL_DIR)/lineage_gapps_arm64.mk \
+ $(LOCAL_DIR)/lineage_gapps_x86.mk \
+ $(LOCAL_DIR)/lineage_gapps_x86_64.mk
diff --git a/build/target/product/lineage_gapps_arm.mk b/build/target/product/lineage_gapps_arm.mk
new file mode 100644
index 0000000..f4c3bf8
--- /dev/null
+++ b/build/target/product/lineage_gapps_arm.mk
@@ -0,0 +1,6 @@
+$(call inherit-product, vendor/lineage/build/target/product/lineage_arm.mk)
+
+PRODUCT_NAME := lineage_gapps_arm
+
+PRODUCT_USE_DYNAMIC_PARTITIONS := false
+PRODUCT_SOONG_NAMESPACES += vendor/gapps/overlay
diff --git a/build/target/product/lineage_gapps_arm64.mk b/build/target/product/lineage_gapps_arm64.mk
new file mode 100644
index 0000000..a5f868d
--- /dev/null
+++ b/build/target/product/lineage_gapps_arm64.mk
@@ -0,0 +1,6 @@
+$(call inherit-product, vendor/lineage/build/target/product/lineage_arm64.mk)
+
+PRODUCT_NAME := lineage_gapps_arm64
+
+PRODUCT_USE_DYNAMIC_PARTITIONS := false
+PRODUCT_SOONG_NAMESPACES += vendor/gapps/overlay
diff --git a/build/target/product/lineage_gapps_x86.mk b/build/target/product/lineage_gapps_x86.mk
new file mode 100644
index 0000000..2ed76d8
--- /dev/null
+++ b/build/target/product/lineage_gapps_x86.mk
@@ -0,0 +1,6 @@
+$(call inherit-product, vendor/lineage/build/target/product/lineage_x86.mk)
+
+PRODUCT_NAME := lineage_gapps_x86
+
+PRODUCT_USE_DYNAMIC_PARTITIONS := false
+PRODUCT_SOONG_NAMESPACES += vendor/gapps/overlay
diff --git a/build/target/product/lineage_gapps_x86_64.mk b/build/target/product/lineage_gapps_x86_64.mk
new file mode 100644
index 0000000..f9d7a66
--- /dev/null
+++ b/build/target/product/lineage_gapps_x86_64.mk
@@ -0,0 +1,6 @@
+$(call inherit-product, vendor/lineage/build/target/product/lineage_x86_64.mk)
+
+PRODUCT_NAME := lineage_gapps_x86_64
+
+PRODUCT_USE_DYNAMIC_PARTITIONS := false
+PRODUCT_SOONG_NAMESPACES += vendor/gapps/overlay
diff --git a/common/common-vendor.mk b/common/common-vendor.mk
index 9c96b66..e30db94 100644
--- a/common/common-vendor.mk
+++ b/common/common-vendor.mk
@@ -29,3 +29,6 @@ ifeq ($(TARGET_IS_GROUPER),)
PRODUCT_PACKAGES += \
GoogleRestore
endif
+
+PRODUCT_SOONG_NAMESPACES += vendor/gapps/overlay
+PRODUCT_PACKAGES += GmsOverlay
diff --git a/overlay/Android.bp b/overlay/Android.bp
new file mode 100644
index 0000000..9515b25
--- /dev/null
+++ b/overlay/Android.bp
@@ -0,0 +1,2 @@
+soong_namespace {
+}
diff --git a/overlay/GmsOverlay/Android.bp b/overlay/GmsOverlay/Android.bp
new file mode 100644
index 0000000..8151e72
--- /dev/null
+++ b/overlay/GmsOverlay/Android.bp
@@ -0,0 +1,4 @@
+runtime_resource_overlay {
+ name: "GmsOverlay",
+ product_specific: true
+}
diff --git a/overlay/GmsOverlay/AndroidManifest.xml b/overlay/GmsOverlay/AndroidManifest.xml
new file mode 100644
index 0000000..915b88e
--- /dev/null
+++ b/overlay/GmsOverlay/AndroidManifest.xml
@@ -0,0 +1,6 @@
+
+
+
diff --git a/overlay/GmsOverlay/res/values/config.xml b/overlay/GmsOverlay/res/values/config.xml
new file mode 100644
index 0000000..a6c31c4
--- /dev/null
+++ b/overlay/GmsOverlay/res/values/config.xml
@@ -0,0 +1,40 @@
+
+
+
+ com.google.android.marvin.talkback/.TalkBackService
+
+
+ com.google.android.tts
+
+
+ com.google.android.apps.wellbeing
+
+
+ com.google.android.apps.wellbeing
+
+
+
+ - com.android.dialer
+ - com.google.android.dialer
+ - com.android.server.telecom
+ - android
+ - com.android.systemui
+
+
+
+ com.google.android.gms:com.google.android.apps.wellbeing
+
+
+
+ - com.google.android.apps.wellbeing
+
+
+
+
+ - com.android.vending
+
+
+
+ com.google.android.projection.gearhead
+
+
diff --git a/overlay/build_overlays.sh b/overlay/build_overlays.sh
new file mode 100755
index 0000000..a5e5d9f
--- /dev/null
+++ b/overlay/build_overlays.sh
@@ -0,0 +1,27 @@
+#!/bin/bash
+
+set -e
+
+GARCH=$1
+GOUT=$2
+
+SCRIPT_DIR=$(dirname "$0")
+cd "$SCRIPT_DIR"
+
+OVERLAYS=$(for dir in $(ls -d */); do echo ${dir%%/}; done)
+
+croot 2>/dev/null || cd ../../../
+
+source build/envsetup.sh
+breakfast gapps_$GARCH
+m installclean
+m $OVERLAYS | tee $OUT/.log
+
+LOC="$(cat $OUT/.log | sed -r -e 's/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g' -e 's/^\[ {0,2}[0-9]{1,3}% [0-9]{1,6}\/[0-9]{1,6}\] +//' \
+ | grep '^Install: ' | cut -d ':' -f 2)"
+RELOUT=$(echo $OUT | sed "s#^${ANDROID_BUILD_TOP}/##")
+FILES=$(echo $LOC | tr " " "\n" | sed "s#.*${RELOUT}##" | sort | uniq)
+
+for TARGET in $FILES; do
+ mkdir -p $(dirname $GOUT/$TARGET) && cp $OUT/$TARGET $GOUT/$TARGET
+done
diff --git a/setup-makefiles.sh b/setup-makefiles.sh
index b007e7e..2439b45 100755
--- a/setup-makefiles.sh
+++ b/setup-makefiles.sh
@@ -49,6 +49,15 @@ echo "ifeq (\$(TARGET_IS_GROUPER),)" >> "$PRODUCTMK"
write_makefiles "$MY_DIR"/proprietary-files-common-nongrouper.txt
echo "endif" >> "$PRODUCTMK"
+# Overlays
+cd overlay
+OVERLAYS=$(for dir in $(ls -d */); do echo ${dir%%/}; done)
+OVERLAYS=$(echo $OVERLAYS | paste -s -d ' ')
+cd - >/dev/null
+printf "\n" >> "$PRODUCTMK"
+echo "PRODUCT_SOONG_NAMESPACES += vendor/$VENDOR/overlay" >> "$PRODUCTMK"
+echo "PRODUCT_PACKAGES += $OVERLAYS" >> "$PRODUCTMK"
+
sed -i 's/TARGET_DEVICE/TARGET_ARCH/g' "$ANDROIDMK"
# We are done with common