python312Packages.yoda: 2.0.1 -> 2.0.2
[NixPkgs.git] / pkgs / by-name / ri / river / package.nix
blob2f3ed61976af565819a9a4a0044c2529b4f57408
1 { lib
2 , stdenv
3 , callPackage
4 , fetchFromGitea
5 , libGL
6 , libX11
7 , libevdev
8 , libinput
9 , libxkbcommon
10 , pixman
11 , pkg-config
12 , scdoc
13 , udev
14 , wayland
15 , wayland-protocols
16 , wayland-scanner
17 , wlroots_0_18
18 , xwayland
19 , zig_0_13
20 , withManpages ? true
21 , xwaylandSupport ? true
24 stdenv.mkDerivation (finalAttrs: {
25   pname = "river";
26   version = "0.3.5";
28   outputs = [ "out" ] ++ lib.optionals withManpages [ "man" ];
30   src = fetchFromGitea {
31     domain = "codeberg.org";
32     owner = "river";
33     repo = "river";
34     rev = "refs/tags/v${finalAttrs.version}";
35     fetchSubmodules = true;
36     hash = "sha256-NUKjQOT6UgNYCebeHMxOhX08r3493IOL3qHZivEcbAg=";
37   };
39   deps = callPackage ./build.zig.zon.nix { };
41   nativeBuildInputs = [
42     pkg-config
43     wayland-scanner
44     xwayland
45     zig_0_13.hook
46   ]
47   ++ lib.optional withManpages scdoc;
49   buildInputs = [
50     libGL
51     libevdev
52     libinput
53     libxkbcommon
54     pixman
55     udev
56     wayland
57     wayland-protocols
58     wlroots_0_18
59   ] ++ lib.optional xwaylandSupport libX11;
61   dontConfigure = true;
63   zigBuildFlags = [
64     "--system"
65     "${finalAttrs.deps}"
66   ] ++ lib.optional withManpages "-Dman-pages" ++ lib.optional xwaylandSupport "-Dxwayland";
68   postInstall = ''
69     install contrib/river.desktop -Dt $out/share/wayland-sessions
70   '';
72   passthru = {
73     providedSessions = [ "river" ];
74     updateScript = ./update.nu;
75   };
77   meta = {
78     homepage = "https://codeberg.org/river/river";
79     description = "Dynamic tiling wayland compositor";
80     longDescription = ''
81       River is a dynamic tiling Wayland compositor with flexible runtime
82       configuration.
84       Its design goals are:
85       - Simple and predictable behavior, river should be easy to use and have a
86         low cognitive load.
87       - Window management based on a stack of views and tags.
88       - Dynamic layouts generated by external, user-written executables. A
89         default rivertile layout generator is provided.
90       - Scriptable configuration and control through a custom Wayland protocol
91         and separate riverctl binary implementing it.
92     '';
93     changelog = "https://codeberg.org/river/river/releases/tag/v${finalAttrs.version}";
94     license = lib.licenses.gpl3Plus;
95     maintainers = with lib.maintainers; [
96       adamcstephens
97       moni
98       rodrgz
99     ];
100     mainProgram = "river";
101     platforms = lib.platforms.linux;
102   };