commit: 98e653356898c110945763850ceef8b1864fcf3b
Author: Takuya Wakazono <pastalian46 <AT> gmail <DOT> com>
AuthorDate: Wed Nov 26 12:21:46 2025 +0000
Commit: Takuya Wakazono <pastalian46 <AT> gmail <DOT> com>
CommitDate: Wed Nov 26 12:21:46 2025 +0000
URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=98e65335
gui-wm/niri: add 9999
Signed-off-by: Takuya Wakazono <pastalian46 <AT> gmail.com>
gui-wm/niri/niri-9999.ebuild | 150 +++++++++++++++++++++++++++++++++++++++++++
1 file changed, 150 insertions(+)
diff --git a/gui-wm/niri/niri-9999.ebuild b/gui-wm/niri/niri-9999.ebuild
new file mode 100644
index 0000000000..f31c874bda
--- /dev/null
+++ b/gui-wm/niri/niri-9999.ebuild
@@ -0,0 +1,150 @@
+# Copyright 2024-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+CRATES="
+"
+
+LLVM_COMPAT=( {18..21} )
+RUST_MIN_VER="1.82.0"
+
+inherit cargo llvm-r2 optfeature shell-completion systemd
+
+DESCRIPTION="Scrollable-tiling Wayland compositor"
+HOMEPAGE="https://github.com/YaLTeR/niri"
+
+if [[ ${PV} == 9999 ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/YaLTeR/niri.git"
+else
+ SRC_URI="
+ https://github.com/YaLTeR/niri/archive/refs/tags/v${PV}.tar.gz
-> ${P}.tar.gz
+
https://github.com/YaLTeR/niri/releases/download/v${PV}/${P}-vendored-dependencies.tar.xz
+ ${CARGO_CRATE_URIS}
+ "
+ KEYWORDS="~amd64"
+fi
+
+LICENSE="GPL-3+"
+# Dependent crate licenses
+LICENSE+="
+ Apache-2.0 Apache-2.0-with-LLVM-exceptions BSD-2 BSD ISC MIT MPL-2.0
+ Unicode-3.0 ZLIB
+"
+SLOT="0"
+IUSE="+dbus screencast systemd"
+REQUIRED_USE="
+ screencast? ( dbus )
+ systemd? ( dbus )
+"
+
+DEPEND="
+ dev-libs/glib:2
+ dev-libs/libinput:=
+ dev-libs/wayland
+ <media-libs/libdisplay-info-0.4.0:=
+ media-libs/mesa
+ sys-auth/seatd:=
+ virtual/libudev:=
+ x11-libs/cairo
+ x11-libs/libxkbcommon
+ x11-libs/pango
+ x11-libs/pixman
+ screencast? ( media-video/pipewire:= )
+"
+RDEPEND="
+ ${DEPEND}
+ screencast? ( sys-apps/xdg-desktop-portal-gnome )
+"
+# libclang is required for bindgen
+BDEPEND="
+ screencast? ( $(llvm_gen_dep 'llvm-core/clang:${LLVM_SLOT}') )
+"
+
+ECARGO_VENDOR="${WORKDIR}/vendor"
+
+QA_FLAGS_IGNORED="usr/bin/niri"
+
+src_unpack() {
+ if [[ ${PV} == 9999 ]]; then
+ git-r3_src_unpack
+ cargo_live_src_unpack
+ else
+ cargo_src_unpack
+ fi
+}
+
+pkg_setup() {
+ llvm-r2_pkg_setup
+ rust_pkg_setup
+}
+
+src_prepare() {
+ sed -i 's/git = "[^ ]*"/version = "*"/' Cargo.toml || die
+ # niri-session doesn't work on OpenRC
+ if ! use systemd; then
+ sed -i 's/niri-session/niri --session/' resources/niri.desktop
|| die
+ fi
+ default
+}
+
+src_configure() {
+ local myfeatures=(
+ $(usev dbus)
+ $(usev screencast xdp-gnome-screencast)
+ $(usev systemd)
+ )
+ cargo_src_configure --no-default-features
+}
+
+src_compile() {
+ if [[ ${PV} != 9999 ]]; then
+ local -x NIRI_BUILD_COMMIT="01be0e6"
+ fi
+ cargo_src_compile
+
+ "$(cargo_target_dir)"/niri completions bash > niri || die
+ "$(cargo_target_dir)"/niri completions fish > niri.fish || die
+ "$(cargo_target_dir)"/niri completions zsh > _niri || die
+}
+
+src_install() {
+ cargo_src_install
+
+ dobin resources/niri-session
+ systemd_douserunit resources/niri{.service,-shutdown.target}
+
+ insinto /usr/share/wayland-sessions
+ doins resources/niri.desktop
+
+ insinto /usr/share/xdg-desktop-portal
+ doins resources/niri-portals.conf
+
+ dobashcomp niri
+ dofishcomp niri.fish
+ dozshcomp _niri
+}
+
+src_test() {
+ # tests create a wayland socket in the xdg runtime dir
+ local -x XDG_RUNTIME_DIR="${T}/xdg"
+ mkdir "${XDG_RUNTIME_DIR}" || die
+ chmod 0700 "${XDG_RUNTIME_DIR}" || die
+
+ # bug 950626
+ # https://yalter.github.io/niri/Packaging-niri.html#running-tests
+ local -x RAYON_NUM_THREADS=2
+ local skip=(
+ # requires surfacesless EGL to be available
+ --skip=::egl
+ )
+ cargo_src_test -- --test-threads=2 "${skip[@]}"
+}
+
+pkg_postinst() {
+ optfeature "Default application launcher" "gui-apps/fuzzel"
+ optfeature "Default status bar" "gui-apps/waybar"
+ optfeature "Default terminal" "x11-terms/alacritty"
+ optfeature "Xwayland support" "gui-apps/xwayland-satellite"
+}