Merge pull request #268619 from tweag/lib-descriptions
[NixPkgs.git] / pkgs / applications / window-managers / river / default.nix
blobe149bdd65218645cff1e48943d8d20e5c822a1a0
1 { lib
2 , stdenv
3 , fetchFromGitHub
4 , libGL
5 , libX11
6 , libevdev
7 , libinput
8 , libxkbcommon
9 , pixman
10 , pkg-config
11 , scdoc
12 , udev
13 , wayland
14 , wayland-protocols
15 , wlroots_0_16
16 , xwayland
17 , zig_0_10
18 , withManpages ? true
19 , xwaylandSupport ? true
22 stdenv.mkDerivation (finalAttrs: {
23   pname = "river";
24   version = "0.2.4";
26   outputs = [ "out" ] ++ lib.optionals withManpages [ "man" ];
28   src = fetchFromGitHub {
29     owner = "riverwm";
30     repo = "river";
31     rev = "refs/tags/v${finalAttrs.version}";
32     fetchSubmodules = true;
33     hash = "sha256-cIcO6owM6eYn+obYVaBOVQpnBx4++KOqQk5Hzo3GcNs=";
34   };
36   nativeBuildInputs = [
37     pkg-config
38     wayland
39     xwayland
40     zig_0_10.hook
41   ]
42   ++ lib.optional withManpages scdoc;
44   buildInputs = [
45     libGL
46     libevdev
47     libinput
48     libxkbcommon
49     pixman
50     udev
51     wayland-protocols
52     wlroots_0_16
53   ] ++ lib.optional xwaylandSupport libX11;
55   dontConfigure = true;
57   zigBuildFlags = lib.optional withManpages "-Dman-pages"
58                   ++ lib.optional xwaylandSupport "-Dxwayland";
60   postInstall = ''
61     install contrib/river.desktop -Dt $out/share/wayland-sessions
62   '';
64   passthru.providedSessions = [ "river" ];
66   meta = {
67     homepage = "https://github.com/ifreund/river";
68     description = "A dynamic tiling wayland compositor";
69     longDescription = ''
70       River is a dynamic tiling Wayland compositor with flexible runtime
71       configuration.
73       Its design goals are:
74       - Simple and predictable behavior, river should be easy to use and have a
75         low cognitive load.
76       - Window management based on a stack of views and tags.
77       - Dynamic layouts generated by external, user-written executables. A
78         default rivertile layout generator is provided.
79       - Scriptable configuration and control through a custom Wayland protocol
80         and separate riverctl binary implementing it.
81     '';
82     changelog = "https://github.com/ifreund/river/releases/tag/v${finalAttrs.version}";
83     license = lib.licenses.gpl3Plus;
84     maintainers = with lib.maintainers; [
85       adamcstephens
86       moni
87       rodrgz
88     ];
89     mainProgram = "river";
90     platforms = lib.platforms.linux;
91   };