diff --git a/init-common.rc b/init-common.rc
index 0dcc3f0..f10721d 100644
--- a/init-common.rc
+++ b/init-common.rc
@@ -48,3 +48,28 @@
 
 on property:persist.vendor.charge.start.level=* && property:sys.all.modules.ready=1
     write /sys/module/htc_battery/parameters/charge_start_level ${persist.vendor.charge.start.level}
+
+# Write the dark theme magic (`theme-dark`, or 0x7468656d652d6461726b in hex string) to /misc
+# partition. Offset 12360 (0x3048) in vendor space is effectively offset 14408 (0x3848) in /misc
+# partition.
+service vendor.darkboot /vendor/bin/misc_writer --vendor-space-offset 12360 --hex-string 0x7468656d652d6461726b
+    disabled
+    oneshot
+
+# Clear the 10-byte dark theme magic in /misc partition. Offset 0 in vendor space is effectively
+# offset 2048 in /misc partition.
+service vendor.darkboot_clear /vendor/bin/misc_writer --vendor-space-offset 12360 --hex-string 0x00000000000000000000
+    disabled
+    oneshot
+
+# Set the dark boot flag on dark mode (UiModeManager.MODE_NIGHT_YES == 2).
+on property:persist.sys.theme=2
+    start vendor.darkboot
+
+# Clear the dark theme flag on light mode (UiModeManager.MODE_NIGHT_NO == 1) or auto mode
+# (UiModeManager.MODE_NIGHT_AUTO == 0).
+on property:persist.sys.theme=1
+    start vendor.darkboot_clear
+
+on property:persist.sys.theme=0
+    start vendor.darkboot_clear
diff --git a/recovery/Android.bp b/recovery/Android.bp
new file mode 100644
index 0000000..fffe848
--- /dev/null
+++ b/recovery/Android.bp
@@ -0,0 +1,38 @@
+//
+// Copyright (C) 2019 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+cc_library_static {
+    name: "librecovery_ui_walleye",
+    owner: "google",
+    cflags: [
+        "-Wall",
+        "-Wextra",
+        "-Werror",
+        "-pedantic",
+    ],
+    srcs: [
+        "recovery_ui.cpp",
+    ],
+
+    static_libs: [
+        "libbootloader_message",
+    ],
+
+    shared_libs: [
+        "libbase",
+        "librecovery_ui",
+    ],
+}
diff --git a/recovery/recovery_ui.cpp b/recovery/recovery_ui.cpp
new file mode 100644
index 0000000..0ac214f
--- /dev/null
+++ b/recovery/recovery_ui.cpp
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <string>
+
+#include <android-base/logging.h>
+#include <bootloader_message/bootloader_message.h>
+#include <recovery_ui/device.h>
+#include <recovery_ui/screen_ui.h>
+
+// Wipes the provisioned flag as part of data wipe.
+static bool WipeProvisionedFlag() {
+    // Must be consistent with the one in init.hardware.rc (10-byte `theme-dark`). The magic is at
+    // 0x3048 in vendor space, or (0x800 + 0x3048) since the start of /misc.
+    const std::string wipe_str(10, '\x00');
+    constexpr size_t kProvisionedFlagOffsetInVendorSpace = 0x3048;
+    if (std::string err; !WriteMiscPartitionVendorSpace(
+            wipe_str.data(), wipe_str.size(), kProvisionedFlagOffsetInVendorSpace, &err)) {
+        LOG(ERROR) << "Failed to write wipe string: " << err;
+        return false;
+    }
+    LOG(INFO) << "Provisioned flag wiped successful";
+    return true;
+}
+
+class WalleyeDevice : public Device {
+  public:
+    WalleyeDevice(ScreenRecoveryUI* ui) : Device(ui) {}
+
+    // Hook to wipe user data not stored in /data.
+    bool PostWipeData() override {
+        // Try to do everything but report a failure if anything wasn't successful.
+        bool total_success = true;
+        auto ui = GetUI();
+        ui->Print("Wiping provisioned flag...\n");
+        if (!WipeProvisionedFlag()) {
+            total_success = false;
+        }
+        return total_success;
+    }
+};
+
+Device* make_device() {
+    return new WalleyeDevice(new ScreenRecoveryUI);
+}
diff --git a/walleye/BoardConfig.mk b/walleye/BoardConfig.mk
index cf98414..88b4896 100644
--- a/walleye/BoardConfig.mk
+++ b/walleye/BoardConfig.mk
@@ -35,3 +35,8 @@
 BOARD_KERNEL_CMDLINE += androidboot.dtbo_idx=3
 
 BOARD_EXT4_SHARE_DUP_BLOCKS := true
+
+TARGET_RECOVERY_UI_LIB := \
+    librecovery_ui_walleye \
+    libbootloader_message \
+    libfstab
