diff --git a/gui-wm/miracle-wm/Manifest b/gui-wm/miracle-wm/Manifest
index 790ade9c09..b2cc8222df 100644
--- a/gui-wm/miracle-wm/Manifest
+++ b/gui-wm/miracle-wm/Manifest
@@ -1 +1,2 @@
+DIST miracle-wm-0.10.1.tar.gz 2750063 BLAKE2B c4c36d1ab97307eff5688cca02157c99b87e358764e142334e50be1b128749f7b1f0b9cb1de3a573ac09be785cfe039c4ac91c26a454da1296c0037d0b867f49 SHA512 cff2f1ac2fd6bcfa132f20812c176873093ed63b0780b164262c019c58386cf302eb3ec62f2e6a3eca4b4885b55d566027b86ec97a975db364867cd2ab34e8b0
DIST miracle-wm-0.9.1.tar.gz 2658768 BLAKE2B e334e7c3a9e66c75f056e081040d7c20763a59d6cd93799224a2dc43b2d2079c2d0769c4d2ea14ac2ee92df19e8bff58178b3176b31607648d3a085dc1ee006f SHA512 49ce5955627dc072bc6e671170fc0bd32bc8e6fa48e84c75e04c3c47985ec8f6d3fa5a4a7c0f8abd29f364db6ed68bf2034097b91e3c16332d5ebde69629bdac
diff --git a/gui-wm/miracle-wm/files/miracle-wm-0.10.1-add-missing-headers.patch b/gui-wm/miracle-wm/files/miracle-wm-0.10.1-add-missing-headers.patch
new file mode 100644
index 0000000000..9b58bdfdc8
--- /dev/null
+++ b/gui-wm/miracle-wm/files/miracle-wm-0.10.1-add-missing-headers.patch
@@ -0,0 +1,82 @@
+Add missing headers for no PCH build.
+--- a/src/shell_application_spawner.h
++++ b/src/shell_application_spawner.h
+@@ -19,6 +19,7 @@ along with this program. If not, see .
+ #define MIRACLE_WM_SHELL_APPLICATION_SPAWNER_H
+
+ #include
++#include
+
+ namespace miracle
+ {
+--- a/src/window_container.h
++++ b/src/window_container.h
+@@ -20,6 +20,7 @@ along with this program. If not, see .
+
+ #include "container.h"
+ #include "container_effect.h"
++#include
+ #include
+
+ namespace miracle
+--- a/src/container_effect.h
++++ b/src/container_effect.h
+@@ -17,6 +17,7 @@ along with this program. If not, see .
+
+ #ifndef MIRACLE_CONTAINER_EFFECT_H
+ #define MIRACLE_CONTAINER_EFFECT_H
++#include
+ #include
+
+ namespace miracle
+--- a/src/plugin_managed_container.cpp
++++ b/src/plugin_managed_container.cpp
+@@ -21,6 +21,7 @@ along with this program. If not, see .
+ #include "compositor_state.h"
+ #include "container_listener.h"
+ #include "window_controller.h"
++#include
+ #include
+
+ using namespace miracle;
+--- a/src/freestyle_window_container.cpp
++++ b/src/freestyle_window_container.cpp
+@@ -23,6 +23,7 @@ along with this program. If not, see .
+ #include "container_listener.h"
+ #include "direction.h"
+ #include "window_controller.h"
++#include
+ #include
+
+ using namespace miracle;
+--- a/src/plugin_handle.h
++++ b/src/plugin_handle.h
+@@ -15,6 +15,8 @@ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+ **/
+
++#include
++
+ namespace miracle
+ {
+ typedef uint32_t PluginHandle;
+--- a/src/parent_background_internal_client.cpp
++++ b/src/parent_background_internal_client.cpp
+@@ -28,6 +28,7 @@ along with this program. If not, see .
+ #include
+ #include
+ #include
++#include
+ #include
+ #include
+ #include
+--- a/src/move_service.h
++++ b/src/move_service.h
+@@ -19,6 +19,7 @@ along with this program. If not, see .
+ #define MIRACLE_WM_MOVE_SERVICE_H
+
+ #include
++#include
+ #include
+
+ namespace miracle
diff --git a/gui-wm/miracle-wm/files/miracle-wm-0.10.1-disable-mirtest.patch b/gui-wm/miracle-wm/files/miracle-wm-0.10.1-disable-mirtest.patch
new file mode 100644
index 0000000000..25e0c5afd7
--- /dev/null
+++ b/gui-wm/miracle-wm/files/miracle-wm-0.10.1-disable-mirtest.patch
@@ -0,0 +1,19 @@
+mirtest is not packaged and only used for end to end tests.
+--- a/tests/CMakeLists.txt
++++ b/tests/CMakeLists.txt
+@@ -10,7 +10,6 @@ include_directories(
+ find_package(PkgConfig)
+ pkg_check_modules(MIRAL miral REQUIRED)
+ pkg_check_modules(MIRSERVER mirserver REQUIRED)
+-pkg_check_modules(MIRTEST mirtest REQUIRED)
+ pkg_check_modules(YAML REQUIRED IMPORTED_TARGET yaml-cpp)
+ find_package(GTest REQUIRED)
+ find_package(nlohmann_json 3.2.0 REQUIRED)
+@@ -50,7 +50,6 @@ set(SOURCES
+ test_workspace_manager.cpp
+ test_compositor_state.cpp
+ test_plugin_helpers.cpp
+- test_display_config.cpp
+ stub_configuration.h
+ stub_surface.h
+ stub_window_controller.h
diff --git a/gui-wm/miracle-wm/files/miracle-wm-0.10.1-no-automagic.patch b/gui-wm/miracle-wm/files/miracle-wm-0.10.1-no-automagic.patch
new file mode 100644
index 0000000000..3d5540511e
--- /dev/null
+++ b/gui-wm/miracle-wm/files/miracle-wm-0.10.1-no-automagic.patch
@@ -0,0 +1,18 @@
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -14,7 +14,6 @@ if(CMAKE_GENERATOR STREQUAL "")
+ endif()
+
+ # Enable ccache if available
+-find_program(CCACHE_PROGRAM ccache)
+ if(CCACHE_PROGRAM)
+ message(STATUS "Using ccache: ${CCACHE_PROGRAM}")
+ set(CMAKE_CXX_COMPILER_LAUNCHER ${CCACHE_PROGRAM})
+@@ -22,7 +21,6 @@ if(CCACHE_PROGRAM)
+ endif()
+
+ # Enable mold if available
+-find_program(MOLD_LINKER mold)
+ if(MOLD_LINKER)
+ message(STATUS "Using mold linker: ${MOLD_LINKER}")
+ add_link_options(-fuse-ld=mold)
diff --git a/gui-wm/miracle-wm/metadata.xml b/gui-wm/miracle-wm/metadata.xml
index 08413345f7..ffeb69e29d 100644
--- a/gui-wm/miracle-wm/metadata.xml
+++ b/gui-wm/miracle-wm/metadata.xml
@@ -8,4 +8,7 @@
miracle-wm-org/miracle-wm
+
diff --git a/gui-wm/miracle-wm/miracle-wm-0.10.1.ebuild b/gui-wm/miracle-wm/miracle-wm-0.10.1.ebuild
new file mode 100644
index 0000000000..063ffd7d11
--- /dev/null
+++ b/gui-wm/miracle-wm/miracle-wm-0.10.1.ebuild
@@ -0,0 +1,89 @@
+# Copyright 2024-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit cmake python-single-r1
+
+DESCRIPTION="Tiling Wayland compositor based on Mir"
+HOMEPAGE="https://github.com/miracle-wm-org/miracle-wm"
+SRC_URI="https://github.com/miracle-wm-org/miracle-wm/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="GPL-3+ MIT"
+SLOT="0"
+KEYWORDS="~amd64"
+IUSE="systemd test +tools"
+REQUIRED_USE="systemd? ( ${PYTHON_REQUIRED_USE} )"
+RESTRICT="!test? ( test )"
+
+COMMON_DEPEND="
+ dev-cpp/yaml-cpp:=
+ dev-cpp/nlohmann_json
+ dev-libs/glib:2
+ dev-libs/json-c:=
+ dev-libs/libevdev
+ dev-libs/libpcre2:=
+ dev-libs/wayland
+ >=gui-libs/mir-2.18:=
+ media-libs/libglvnd
+ x11-base/xwayland
+ x11-libs/libxkbcommon
+ tools? (
+ gui-libs/gtk:4
+ gui-libs/gtk4-layer-shell
+ x11-libs/cairo
+ )
+"
+RDEPEND="
+ ${COMMON_DEPEND}
+ systemd? (
+ ${PYTHON_DEPS}
+ $(python_gen_cond_dep '
+ dev-python/dbus-next[${PYTHON_USEDEP}]
+ dev-python/tenacity[${PYTHON_USEDEP}]
+ ')
+ )
+"
+DEPEND="
+ ${COMMON_DEPEND}
+ media-libs/glm
+"
+BDEPEND="
+ virtual/pkgconfig
+ test? ( dev-cpp/gtest )
+"
+
+PATCHES=(
+ "${FILESDIR}/${PN}-0.10.1-disable-mirtest.patch"
+ "${FILESDIR}/${PN}-0.10.1-no-automagic.patch"
+ "${FILESDIR}/${PN}-0.10.1-add-missing-headers.patch"
+)
+
+pkg_setup() {
+ use systemd && python-single-r1_pkg_setup
+}
+
+src_prepare() {
+ cmake_src_prepare
+ use test || cmake_comment_add_subdirectory tests/
+ use systemd && python_fix_shebang session/usr/bin/libexec/miracle-wm-wait-sni-ready
+}
+
+src_configure() {
+ local mycmakeargs=(
+ -DSYSTEMD_INTEGRATION=$(usex systemd)
+ -DENABLE_TESTS=$(usex test)
+ # depends on wasmedge, which is not available as a package
+ -DFEATURE_PLUGIN_SYSTEM=OFF
+ -DBUILD_ERROR_REPORTER=$(usex tools)
+ -DBUILD_DEBUG_OVERLAY=$(usex tools)
+ )
+ cmake_src_configure
+}
+
+src_test() {
+ "${BUILD_DIR}/tests/miracle-wm-tests" || die
+ "${BUILD_DIR}/miracle-wm-c/test_miracle_wm_c_api" || die
+}