about summary refs log tree commit diff
path: root/pkgs/by-name/ri/river/package.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/by-name/ri/river/package.nix')
-rw-r--r--pkgs/by-name/ri/river/package.nix101
1 files changed, 101 insertions, 0 deletions
diff --git a/pkgs/by-name/ri/river/package.nix b/pkgs/by-name/ri/river/package.nix
new file mode 100644
index 0000000000000..e28161b0b02c4
--- /dev/null
+++ b/pkgs/by-name/ri/river/package.nix
@@ -0,0 +1,101 @@
+{ lib
+, stdenv
+, callPackage
+, fetchFromGitea
+, libGL
+, libX11
+, libevdev
+, libinput
+, libxkbcommon
+, pixman
+, pkg-config
+, scdoc
+, udev
+, wayland
+, wayland-protocols
+, wlroots_0_17
+, xwayland
+, zig_0_13
+, withManpages ? true
+, xwaylandSupport ? true
+}:
+
+stdenv.mkDerivation (finalAttrs: {
+  pname = "river";
+  version = "0.3.3";
+
+  outputs = [ "out" ] ++ lib.optionals withManpages [ "man" ];
+
+  src = fetchFromGitea {
+    domain = "codeberg.org";
+    owner = "river";
+    repo = "river";
+    rev = "refs/tags/v${finalAttrs.version}";
+    fetchSubmodules = true;
+    hash = "sha256-DYaxtYJLZQqE2SyPfWec/zXsZKRnxK2QNgOkM7GJkLI=";
+  };
+
+  deps = callPackage ./build.zig.zon.nix { };
+
+  nativeBuildInputs = [
+    pkg-config
+    wayland
+    xwayland
+    zig_0_13.hook
+  ]
+  ++ lib.optional withManpages scdoc;
+
+  buildInputs = [
+    libGL
+    libevdev
+    libinput
+    libxkbcommon
+    pixman
+    udev
+    wayland-protocols
+    wlroots_0_17
+  ] ++ lib.optional xwaylandSupport libX11;
+
+  dontConfigure = true;
+
+  zigBuildFlags = [
+    "--system"
+    "${finalAttrs.deps}"
+  ] ++ lib.optional withManpages "-Dman-pages" ++ lib.optional xwaylandSupport "-Dxwayland";
+
+  postInstall = ''
+    install contrib/river.desktop -Dt $out/share/wayland-sessions
+  '';
+
+  passthru = {
+    providedSessions = [ "river" ];
+    updateScript = ./update.nu;
+  };
+
+  meta = {
+    homepage = "https://codeberg.org/river/river";
+    description = "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://codeberg.org/river/river/releases/tag/v${finalAttrs.version}";
+    license = lib.licenses.gpl3Plus;
+    maintainers = with lib.maintainers; [
+      adamcstephens
+      moni
+      rodrgz
+    ];
+    mainProgram = "river";
+    platforms = lib.platforms.linux;
+  };
+})