diff --git a/dev-libs/libpeas/Manifest b/dev-libs/libpeas/Manifest
index 45f433b79f363..42d1e4a9253d9 100644
--- a/dev-libs/libpeas/Manifest
+++ b/dev-libs/libpeas/Manifest
@@ -1 +1,2 @@
DIST libpeas-1.36.0.tar.xz 195432 BLAKE2B 12b12f041784e5fbeb03a36cad62625f7b60f770f7ff83d0660b28288262e125c2ca5f83032d4ae96faaa7b815ba9dcb245d3cbdac823765435a21e1eb08f663 SHA512 254087089475a3c1415e0ba8efb17aac56b96b1eee7c8e12933e72cc551ee39e9e3eac2d3d602bf9d369dd9fc7d3f5141e7683dec11b40b6c7b961b8e6c70a11
+DIST libpeas-2.0.3.tar.xz 156608 BLAKE2B 495a089f8ed9be0589f5c1129dbe054857e6f6ad62a46348dc0c1e4ee8aa96798615d610fec93a86a954020011032628344e4bbcfe6015b8b86ac7ef5dbf9c2d SHA512 ec4e0c0ec8d4cb513a1c30f74ad6c9181eaf6e91babcfce2872715ab57f0c3c6334b18f3dbc6271d14635ccfcda52a2101f81c3417b37bb82c163be3aed93f48
diff --git a/dev-libs/libpeas/libpeas-2.0.3.ebuild b/dev-libs/libpeas/libpeas-2.0.3.ebuild
new file mode 100644
index 0000000000000..a2ac5c8270f54
--- /dev/null
+++ b/dev-libs/libpeas/libpeas-2.0.3.ebuild
@@ -0,0 +1,91 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+LUA_COMPAT=( lua5-1 )
+PYTHON_COMPAT=( python3_{10..13} )
+
+inherit gnome.org lua-single meson python-single-r1 vala virtualx xdg
+
+DESCRIPTION="A GObject plugins library"
+HOMEPAGE="https://gitlab.gnome.org/GNOME/libpeas"
+
+LICENSE="LGPL-2.1+"
+SLOT="2"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~ia64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~x86-linux"
+
+IUSE="glade +gtk gtk-doc javascript lua +python vala"
+REQUIRED_USE="lua? ( ${LUA_REQUIRED_USE} )
+ python? ( ${PYTHON_REQUIRED_USE} )"
+
+RDEPEND="
+ >=dev-libs/glib-2.44:2
+ >=dev-libs/gobject-introspection-1.39:=
+ javascript? (
+ >=dev-libs/gjs-1.78.5
+ >=dev-lang/spidermonkey-115:115
+ )
+ gtk? ( >=x11-libs/gtk+-3.0.0:3[introspection] )
+ glade? ( >=dev-util/glade-3.9.1:3.10 )
+ lua? (
+ ${LUA_DEPS}
+ $(lua_gen_cond_dep '
+ >=dev-lua/lgi-0.9.0[${LUA_USEDEP}]
+ ')
+ )
+ python? (
+ ${PYTHON_DEPS}
+ $(python_gen_cond_dep '
+ >=dev-python/pygobject-3.2:3[${PYTHON_USEDEP}]
+ ')
+ )
+"
+DEPEND="${RDEPEND}"
+BDEPEND="
+ dev-util/glib-utils
+ gtk-doc? (
+ >=dev-util/gtk-doc-1.11
+ >=dev-util/gi-docgen-2021.7
+ app-text/docbook-xml-dtd:4.3
+ )
+ >=sys-devel/gettext-0.19.8
+ virtual/pkgconfig
+"
+
+pkg_setup() {
+ use lua && lua-single_pkg_setup
+ use python && python-single-r1_pkg_setup
+}
+
+src_prepare() {
+ default
+ use vala && vala_setup
+}
+
+src_configure() {
+ local emesonargs=(
+ $(meson_use javascript gjs)
+ $(meson_use lua lua51)
+ $(meson_use python python3)
+ # introspection was always enabled in autotools; would need readiness by consumers
+ # to USE flag it, but most need it for python plugins anyways
+ -Dintrospection=true
+ $(meson_use vala vapi)
+ $(meson_use gtk-doc gtk_doc)
+ )
+ meson_src_configure
+}
+
+src_test() {
+ virtx meson_src_test
+}
+
+src_install() {
+ meson_src_install
+
+ if use gtk-doc; then
+ mkdir -p "${ED}"/usr/share/gtk-doc/html/ || die
+ mv "${ED}"/usr/share/doc/libpeas{,-gtk}-1.0 "${ED}"/usr/share/gtk-doc/html/ || die
+ fi
+}
diff --git a/dev-libs/libpeas/metadata.xml b/dev-libs/libpeas/metadata.xml
index bb79b6b4e7bb8..0ee4b6088ae61 100644
--- a/dev-libs/libpeas/metadata.xml
+++ b/dev-libs/libpeas/metadata.xml
@@ -7,6 +7,7 @@