diff --git a/media-sound/snapcast/Manifest b/media-sound/snapcast/Manifest
index fe5f1872dd63d..86960e37e41dc 100644
--- a/media-sound/snapcast/Manifest
+++ b/media-sound/snapcast/Manifest
@@ -1 +1,2 @@
DIST snapcast-0.31.0.tar.gz 1128037 BLAKE2B 82444e9fc75e82b5f57e3e115a8bfbde2a5839bc68e25db47df0f25675cf73a836f2e8b09afb077410bd3c36917abb17ce302c18b67b440567c55b673301e7f5 SHA512 9c3eef7a18aaf6479a96810aeb58d11cc87654021d8d07b29f9b623c70bd7fd9aa08f5dee430c11de72abafa1a1b5abe500b93eef4b17b7c56df55c2f2a29867
+DIST snapcast-0.34.0.tar.gz 1173157 BLAKE2B e141c7fe264801ba598e09edad41cc543811e36ee51c02597dc180bd79370b6693aeaed919ce4c56749064f6034c26409c6aa7273a01b33fdc265315d501f76d SHA512 509c76432f71c1f08975740f7e633289254d157d2676f0c20d4a2578515e5ed5bb0036706df35fd2d4cba091881fc6c84d870c80e6cf7c6923392daf9c1cfbb1
diff --git a/media-sound/snapcast/files/snapcast-0.34.0-drop-lint.patch b/media-sound/snapcast/files/snapcast-0.34.0-drop-lint.patch
new file mode 100644
index 0000000000000..dd4939d45df7a
--- /dev/null
+++ b/media-sound/snapcast/files/snapcast-0.34.0-drop-lint.patch
@@ -0,0 +1,13 @@
+We don't want any automagic lint probing.
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -98,9 +98,6 @@ else()
+ endif()
+
+ include(GNUInstallDirs)
+-include(${CMAKE_SOURCE_DIR}/cmake/clang-tidy.cmake)
+-include(${CMAKE_SOURCE_DIR}/cmake/cppcheck.cmake)
+-include(${CMAKE_SOURCE_DIR}/cmake/reformat.cmake)
+
+ if(NOT WIN32)
+ option(BUILD_SERVER "Build Snapserver" ON) # no Windows server for now
diff --git a/media-sound/snapcast/files/snapcast-0.34.0-opt_soxr.patch b/media-sound/snapcast/files/snapcast-0.34.0-opt_soxr.patch
new file mode 100644
index 0000000000000..31e919bac048a
--- /dev/null
+++ b/media-sound/snapcast/files/snapcast-0.34.0-opt_soxr.patch
@@ -0,0 +1,19 @@
+avoid automagic for soxr
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -256,12 +256,10 @@ if(NOT WIN32 AND NOT ANDROID)
+ endif()
+ endif()
+
+- pkg_search_module(SOXR soxr)
+- if(SOXR_FOUND)
++ if(BUILD_WITH_SOXR)
++ pkg_search_module(SOXR REQUIRED soxr)
+ add_compile_definitions(HAS_SOXR)
+- else()
+- message(STATUS "soxr not found")
+- endif(SOXR_FOUND)
++ endif()
+
+ if(BUILD_WITH_FLAC)
+ pkg_search_module(FLAC REQUIRED flac)
diff --git a/media-sound/snapcast/files/snapcast-0.34.0-snapclient_group.patch b/media-sound/snapcast/files/snapcast-0.34.0-snapclient_group.patch
new file mode 100644
index 0000000000000..7648602e7890d
--- /dev/null
+++ b/media-sound/snapcast/files/snapcast-0.34.0-snapclient_group.patch
@@ -0,0 +1,11 @@
+--- a/extras/package/rpm/snapclient.service
++++ b/extras/package/rpm/snapclient.service
+@@ -8,7 +8,7 @@ After=network-online.target time-sync.target sound.target avahi-daemon.service
+ EnvironmentFile=-/etc/default/snapclient
+ ExecStart=/usr/bin/snapclient --logsink=system $SNAPCLIENT_OPTS
+ User=snapclient
+-Group=snapclient
++Group=audio
+ Restart=on-failure
+
+ [Install]
diff --git a/media-sound/snapcast/files/snapclient.confd-r1 b/media-sound/snapcast/files/snapclient.confd-r1
new file mode 100644
index 0000000000000..fe254b70d88e4
--- /dev/null
+++ b/media-sound/snapcast/files/snapclient.confd-r1
@@ -0,0 +1,7 @@
+# conf.d file for snapclient
+SNAPCLIENT_USER="snapclient:audio"
+
+# snapclient [options...] [url]
+# For all command line options, please see `man snapclient.1`
+# if ’url’ is not configured, snapclient defaults to ’tcp://_snapcast._tcp’
+SNAPCLIENT_OPTS="--logsink=system"
diff --git a/media-sound/snapcast/files/snapclient.initd-r1 b/media-sound/snapcast/files/snapclient.initd-r1
new file mode 100644
index 0000000000000..755b1ee6ce7ce
--- /dev/null
+++ b/media-sound/snapcast/files/snapclient.initd-r1
@@ -0,0 +1,14 @@
+#!/sbin/openrc-run
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+name=snapclient
+command="/usr/bin/snapclient"
+command_args="${SNAPCLIENT_OPTS}"
+command_user="${SNAPCLIENT_USER:-snapclient:audio}"
+command_background=true
+pidfile="/run/${RC_SVCNAME}.pid"
+
+depend() {
+ use avahi-daemon
+}
diff --git a/media-sound/snapcast/files/snapserver.confd-r1 b/media-sound/snapcast/files/snapserver.confd-r1
new file mode 100644
index 0000000000000..04b6633f98a4c
--- /dev/null
+++ b/media-sound/snapcast/files/snapserver.confd-r1
@@ -0,0 +1,5 @@
+# conf.d file for snapserver
+SNAPSERVER_USER="snapserver:snapserver"
+
+# For all command line options, please see `snapserver -hh`
+SNAPSERVER_OPTS="--logging.sink=system --server.datadir=/var/lib/snapserver"
diff --git a/media-sound/snapcast/files/snapserver.initd-r1 b/media-sound/snapcast/files/snapserver.initd-r1
new file mode 100644
index 0000000000000..e2963d59f9267
--- /dev/null
+++ b/media-sound/snapcast/files/snapserver.initd-r1
@@ -0,0 +1,14 @@
+#!/sbin/openrc-run
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+name=snapserver
+command="/usr/bin/snapserver"
+command_args="${SNAPSERVER_OPTS}"
+command_user="${SNAPSERVER_USER:-snapserver:snapserver}"
+command_background=true
+pidfile="/run/${RC_SVCNAME}.pid"
+
+depend() {
+ use avahi-daemon
+}
diff --git a/media-sound/snapcast/metadata.xml b/media-sound/snapcast/metadata.xml
index b98f35b6a3f44..760d162056863 100644
--- a/media-sound/snapcast/metadata.xml
+++ b/media-sound/snapcast/metadata.xml
@@ -4,7 +4,9 @@
@@ -12,8 +14,8 @@
Johannes Pohl
github@badaix.de
- https://github.com/badaix/snapcast/issues
- badaix/snapcast
+ https://github.com/snapcast/snapcast/issues
+ snapcast/snapcast
Snapcast plays audio streams time sychronized on multiple devices over
diff --git a/media-sound/snapcast/snapcast-0.34.0.ebuild b/media-sound/snapcast/snapcast-0.34.0.ebuild
new file mode 100644
index 0000000000000..77afff286a344
--- /dev/null
+++ b/media-sound/snapcast/snapcast-0.34.0.ebuild
@@ -0,0 +1,151 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{11..14} )
+inherit cmake edo optfeature python-single-r1 systemd
+
+DESCRIPTION="Synchronous multi-room audio player"
+HOMEPAGE="https://github.com/snapcast/snapcast"
+SRC_URI="https://github.com/snapcast/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="GPL-3+"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~ppc ~ppc64 ~riscv ~x86"
+IUSE="alsa +client +expat +flac jack +opus pipewire python +server soxr ssl test tremor +vorbis +zeroconf"
+REQUIRED_USE="
+ || ( server client )
+ server? (
+ python? ( ${PYTHON_REQUIRED_USE} )
+ )
+"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ alsa? ( media-libs/alsa-lib )
+ client? (
+ acct-user/snapclient
+ tremor? (
+ media-libs/libogg
+ media-libs/tremor
+ )
+ )
+ flac? ( media-libs/flac:= )
+ jack? ( virtual/jack )
+ opus? ( media-libs/opus )
+ pipewire? ( media-video/pipewire:= )
+ server? (
+ acct-group/snapserver
+ >=acct-user/snapserver-0-r3
+ expat? ( dev-libs/expat )
+ python? ( ${PYTHON_DEPS} )
+ )
+ soxr? ( media-libs/soxr )
+ ssl? ( dev-libs/openssl:= )
+ vorbis? (
+ media-libs/libogg
+ media-libs/libvorbis
+ )
+ zeroconf? ( net-dns/avahi[dbus] )
+"
+DEPEND="
+ ${RDEPEND}
+ dev-cpp/nlohmann_json
+ dev-libs/boost:=
+ jack? ( dev-libs/boost:=[context] )
+ test? (
+ >=dev-cpp/catch-3:0
+ dev-libs/openssl
+ )
+"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-0.34.0-snapclient_group.patch
+ "${FILESDIR}"/${PN}-0.34.0-opt_soxr.patch
+ "${FILESDIR}"/${PN}-0.34.0-drop-lint.patch
+)
+
+pkg_setup() {
+ use server && use python && python-single-r1_pkg_setup
+}
+
+src_prepare() {
+ # 3rd-party
+ rm common/json.hpp || die
+ sed -e 's@"common/json.hpp"@@' \
+ -i common/message/json_message.hpp \
+ -i common/stream_uri.hpp \
+ -i server/control_server.cpp \
+ -i server/streamreader/metadata.hpp \
+ -i server/streamreader/pcm_stream.hpp \
+ -i server/streamreader/properties.hpp \
+ -i server/config.hpp \
+ -i server/jsonrpcpp.hpp \
+ -i server/jwt.hpp || die
+
+ cmake_src_prepare
+}
+
+src_configure() {
+ local mycmakeargs=(
+ -DBUILD_CLIENT=$(usex client)
+ -DBUILD_SERVER=$(usex server)
+ -DBUILD_STATIC_LIBS=no
+ -DBUILD_TESTS=$(usex test)
+ -DCMAKE_INSTALL_SYSCONFDIR="${EPREFIX}/etc"
+ -DBUILD_WITH_ALSA=$(usex alsa)
+ -DBUILD_WITH_AVAHI=$(usex zeroconf)
+ -DBUILD_WITH_EXPAT=$(usex expat)
+ -DBUILD_WITH_FLAC=$(usex flac)
+ -DBUILD_WITH_JACK=$(usex jack)
+ -DBUILD_WITH_OPUS=$(usex opus)
+ -DBUILD_WITH_PIPEWIRE=$(usex pipewire)
+ -DBUILD_WITH_SOXR=$(usex soxr)
+ -DBUILD_WITH_SSL=$(usex ssl)
+ -DBUILD_WITH_TREMOR=$(usex tremor)
+ -DBUILD_WITH_VORBIS=$(usex vorbis)
+ )
+
+ cmake_src_configure
+}
+
+src_test() {
+ edo "${S}"/bin/snapcast_test
+}
+
+src_install() {
+ cmake_src_install
+
+ local bin
+ for bin in server client ; do
+ if use ${bin} ; then
+ doman ${bin}/snap${bin}.1
+
+ newconfd "${FILESDIR}"/snap${bin}.confd-r1 snap${bin}
+ newinitd "${FILESDIR}"/snap${bin}.initd-r1 snap${bin}
+ systemd_dounit extras/package/rpm/snap${bin}.service
+ fi
+ done
+
+ if use server; then
+ if use python; then
+ python_fix_shebang "${ED}"/usr/share/snapserver/plug-ins
+ else
+ rm "${ED}"/usr/share/snapserver/plug-ins/*.py || die
+ fi
+ fi
+}
+
+pkg_postinst() {
+ if use client && ! use zeroconf; then
+ ewarn "zeroconf is disabled but the url by default is 'tcp://_snapcast._tcp'."
+ ewarn "Please define an url in SNAPCLIENT_OPTS into ${EROOT}/etc/conf.d/snapclient"
+ fi
+ if use server && use python; then
+ optfeature "librespot stream plugin" dev-python/websocket-client dev-python/requests
+ optfeature "mopidy stream plugin" dev-python/websocket-client
+ optfeature "mpd stream plugin" dev-python/dbus-python dev-python/musicbrainzngs
+ optfeature "mpd stream plugin" dev-python/pygobject dev-python/python-mpd2
+ fi
+}