{ lib , stdenv , fetchFromGitHub , libGL , libX11 , libevdev , libinput , libxkbcommon , pixman , pkg-config , scdoc , udev , wayland , wayland-protocols , wlroots_0_16 , xwayland , zig_0_10 , withManpages ? true , xwaylandSupport ? true }: stdenv.mkDerivation (finalAttrs: { pname = "river"; version = "0.2.4"; outputs = [ "out" ] ++ lib.optionals withManpages [ "man" ]; src = fetchFromGitHub { owner = "riverwm"; repo = "river"; rev = "refs/tags/v${finalAttrs.version}"; fetchSubmodules = true; hash = "sha256-cIcO6owM6eYn+obYVaBOVQpnBx4++KOqQk5Hzo3GcNs="; }; nativeBuildInputs = [ pkg-config wayland xwayland zig_0_10.hook ] ++ lib.optional withManpages scdoc; buildInputs = [ libGL libevdev libinput libxkbcommon pixman udev wayland-protocols wlroots_0_16 ] ++ lib.optional xwaylandSupport libX11; dontConfigure = true; zigBuildFlags = lib.optional withManpages "-Dman-pages" ++ lib.optional xwaylandSupport "-Dxwayland"; postInstall = '' install contrib/river.desktop -Dt $out/share/wayland-sessions ''; passthru.providedSessions = [ "river" ]; meta = { homepage = "https://github.com/ifreund/river"; description = "A dynamic tiling wayland compositor"; longDescription = '' River is a dynamic tiling Wayland compositor with flexible runtime configuration. Its design goals are: - Simple and predictable behavior, river should be easy to use and have a low cognitive load. - Window management based on a stack of views and tags. - Dynamic layouts generated by external, user-written executables. A default rivertile layout generator is provided. - Scriptable configuration and control through a custom Wayland protocol and separate riverctl binary implementing it. ''; changelog = "https://github.com/ifreund/river/releases/tag/v${finalAttrs.version}"; license = lib.licenses.gpl3Plus; maintainers = with lib.maintainers; [ adamcstephens fortuneteller2k rodrgz ]; platforms = lib.platforms.linux; }; })