%bcond check 1 Name: niri Version: 25.02 Release: %autorelease Summary: Scrollable-tiling Wayland compositor SourceLicense: GPL-3.0-or-later # (MIT OR Apache-2.0) AND BSD-3-Clause # (MIT OR Apache-2.0) AND Unicode-3.0 # 0BSD OR MIT OR Apache-2.0 # Apache-2.0 # Apache-2.0 OR BSL-1.0 # Apache-2.0 OR MIT # Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT # BSD-2-Clause # BSD-2-Clause OR Apache-2.0 OR MIT # BSD-3-Clause OR MIT OR Apache-2.0 # GPL-3.0-or-later # ISC # MIT # MIT AND (MIT OR Apache-2.0) # MIT OR Apache-2.0 # MIT OR Apache-2.0 OR Zlib # MIT OR Zlib OR Apache-2.0 # MPL-2.0 # Unicode-3.0 # Unlicense OR MIT # Zlib OR Apache-2.0 OR MIT License: %{shrink: GPL-3.0-or-later AND Apache-2.0 AND BSD-2-Clause AND BSD-3-Clause AND ISC AND MIT AND MPL-2.0 AND Unicode-3.0 AND (0BSD OR MIT OR Apache-2.0) AND (Apache-2.0 OR BSL-1.0) AND (Apache-2.0 OR MIT) AND (Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT) AND (BSD-2-Clause OR Apache-2.0 OR MIT) AND (BSD-3-Clause OR MIT OR Apache-2.0) AND (MIT OR Apache-2.0 OR Zlib) AND (Unlicense OR MIT) } # LICENSE.dependencies contains a full license breakdown URL: https://github.com/YaLTeR/niri Source0: %{url}/archive/v%{version}/niri-%{version}.tar.gz Source1: niri-%{version}-vendor.tar.xz Source2: vendor.toml ExcludeArch: %{ix86} BuildRequires: cargo-rpm-macros BuildRequires: clang BuildRequires: gcc BuildRequires: glibc-devel BuildRequires: systemd-rpm-macros BuildRequires: pkgconfig(cairo) BuildRequires: pkgconfig(dbus-1) BuildRequires: pkgconfig(gbm) BuildRequires: pkgconfig(gdk-pixbuf-2.0) BuildRequires: pkgconfig(gio-2.0) BuildRequires: pkgconfig(glib-2.0) BuildRequires: pkgconfig(gobject-2.0) BuildRequires: pkgconfig(gtk4) BuildRequires: pkgconfig(libadwaita-1) BuildRequires: pkgconfig(libdisplay-info) BuildRequires: pkgconfig(libinput) BuildRequires: pkgconfig(libpipewire-0.3) BuildRequires: pkgconfig(libseat) BuildRequires: pkgconfig(libspa-0.2) BuildRequires: pkgconfig(libudev) BuildRequires: pkgconfig(pango) BuildRequires: pkgconfig(pangocairo) BuildRequires: pkgconfig(systemd) BuildRequires: pkgconfig(wayland-client) BuildRequires: pkgconfig(wayland-cursor) BuildRequires: pkgconfig(wayland-server) BuildRequires: pkgconfig(xkbcommon) # required for portal support Recommends: gnome-keyring Recommends: xdg-desktop-portal-gnome Recommends: xdg-desktop-portal-gtk # required for xwayland support Recommends: xwayland-satellite # applications bound by keyboard shortcuts in default configuration Recommends: alacritty Recommends: fuzzel Recommends: swaylock Recommends: wireplumber %description A scrollable-tiling Wayland compositor. %prep %autosetup -n niri-%{version} -a1 -p1 %cargo_prep -N # include full configuration for vendored dependencies cat %{SOURCE2} >> .cargo/config.toml %build # set version string without commit information export NIRI_BUILD_VERSION_STRING="%{version}" %cargo_build %{cargo_license_summary} %{cargo_license} > LICENSE.dependencies %{cargo_vendor_manifest} # replace un-parseable git snapshot dependency information sed 's/\(.*\) (.*#\(.*\))/\1+git\2/' -i cargo-vendor.txt %install install -Dpm0755 target/rpm/niri -t %{buildroot}%{_bindir} install -Dpm0755 resources/niri-session -t %{buildroot}%{_bindir} install -Dpm0644 resources/niri.desktop -t %{buildroot}%{_datadir}/wayland-sessions install -Dpm0644 resources/niri-portals.conf -t %{buildroot}%{_datadir}/xdg-desktop-portal install -Dpm0644 resources/niri.service -t %{buildroot}%{_userunitdir} install -Dpm0644 resources/niri-shutdown.target -t %{buildroot}%{_userunitdir} %if %{with check} %check # * skip tests that require a running session %cargo_test -- --workspace --exclude niri-visual-tests %endif %post %systemd_user_post niri.service %preun %systemd_user_preun niri.service %postun %systemd_user_postun_with_reload niri.service %files %license LICENSE %license LICENSE.dependencies %license cargo-vendor.txt %doc README.md %doc resources/default-config.kdl %doc wiki %{_bindir}/niri %{_bindir}/niri-session %dir %{_datadir}/wayland-sessions/ %{_datadir}/wayland-sessions/niri.desktop %dir %{_datadir}/xdg-desktop-portal/ %{_datadir}/xdg-desktop-portal/niri-portals.conf %{_userunitdir}/niri.service %{_userunitdir}/niri-shutdown.target %changelog %autochangelog