summary refs log tree commit diff
diff options
context:
space:
mode:
authorPeter Hoeg <peter@hoeg.com>2022-11-18 17:54:06 +0800
committerPeter Hoeg <peter@hoeg.com>2022-11-22 09:11:12 +0800
commitead322b582033bb5cc4787908c04d0069c30e2f0 (patch)
tree58e61ee638bf73f8cb65c255c6f5e572831dfbc6
parent7229e4106536efd274f189bd9b95c52db20b7f86 (diff)
downloadnixpkgs-ead322b582033bb5cc4787908c04d0069c30e2f0.tar
nixpkgs-ead322b582033bb5cc4787908c04d0069c30e2f0.tar.gz
nixpkgs-ead322b582033bb5cc4787908c04d0069c30e2f0.tar.bz2
nixpkgs-ead322b582033bb5cc4787908c04d0069c30e2f0.tar.lz
nixpkgs-ead322b582033bb5cc4787908c04d0069c30e2f0.tar.xz
nixpkgs-ead322b582033bb5cc4787908c04d0069c30e2f0.tar.zst
nixpkgs-ead322b582033bb5cc4787908c04d0069c30e2f0.zip
wlroots: deduplicate builders
-rw-r--r--pkgs/development/libraries/wlroots/0.14.nix64
-rw-r--r--pkgs/development/libraries/wlroots/0.15.nix69
-rw-r--r--pkgs/development/libraries/wlroots/default.nix124
-rw-r--r--pkgs/top-level/all-packages.nix7
4 files changed, 128 insertions, 136 deletions
diff --git a/pkgs/development/libraries/wlroots/0.14.nix b/pkgs/development/libraries/wlroots/0.14.nix
deleted file mode 100644
index db10e57443c..00000000000
--- a/pkgs/development/libraries/wlroots/0.14.nix
+++ /dev/null
@@ -1,64 +0,0 @@
-{ lib, stdenv, fetchFromGitHub, meson, ninja, pkg-config, wayland-scanner
-, libGL, wayland, wayland-protocols, libinput, libxkbcommon, pixman
-, libcap, mesa, xorg
-, libpng, ffmpeg_4, seatd
-
-, enableXWayland ? true, xwayland ? null
-}:
-
-stdenv.mkDerivation rec {
-  pname = "wlroots";
-  version = "0.14.1";
-
-  src = fetchFromGitHub {
-    owner = "swaywm";
-    repo = "wlroots";
-    rev = version;
-    sha256 = "1sshp3lvlkl1i670kxhwsb4xzxl8raz6769kqvgmxzcb63ns9ay1";
-  };
-
-  # $out for the library and $examples for the example programs (in examples):
-  outputs = [ "out" "examples" ];
-
-  strictDeps = true;
-  depsBuildBuild = [ pkg-config ];
-
-  nativeBuildInputs = [ meson ninja pkg-config wayland-scanner ];
-
-  buildInputs = [
-    libGL wayland wayland-protocols libinput libxkbcommon pixman
-    xorg.xcbutilwm xorg.libX11 libcap xorg.xcbutilimage xorg.xcbutilerrors mesa
-    libpng ffmpeg_4 xorg.xcbutilrenderutil seatd
-  ]
-    ++ lib.optional enableXWayland xwayland
-  ;
-
-  mesonFlags =
-    lib.optional (!enableXWayland) "-Dxwayland=disabled"
-  ;
-
-  postFixup = ''
-    # Install ALL example programs to $examples:
-    # screencopy dmabuf-capture input-inhibitor layer-shell idle-inhibit idle
-    # screenshot output-layout multi-pointer rotation tablet touch pointer
-    # simple
-    mkdir -p $examples/bin
-    cd ./examples
-    for binary in $(find . -executable -type f -printf '%P\n' | grep -vE '\.so'); do
-      cp "$binary" "$examples/bin/wlroots-$binary"
-    done
-  '';
-
-  meta = with lib; {
-    description = "A modular Wayland compositor library";
-    longDescription = ''
-      Pluggable, composable, unopinionated modules for building a Wayland
-      compositor; or about 50,000 lines of code you were going to write anyway.
-    '';
-    inherit (src.meta) homepage;
-    changelog = "https://github.com/swaywm/wlroots/releases/tag/${version}";
-    license     = licenses.mit;
-    platforms   = platforms.linux;
-    maintainers = with maintainers; [ primeos synthetica ];
-  };
-}
diff --git a/pkgs/development/libraries/wlroots/0.15.nix b/pkgs/development/libraries/wlroots/0.15.nix
deleted file mode 100644
index 117b7ebdc5d..00000000000
--- a/pkgs/development/libraries/wlroots/0.15.nix
+++ /dev/null
@@ -1,69 +0,0 @@
-{ lib, stdenv, fetchFromGitLab, meson, ninja, pkg-config, wayland-scanner
-, libGL, wayland, wayland-protocols, libinput, libxkbcommon, pixman
-,libcap, mesa, xorg
-, libpng, ffmpeg_4, seatd, vulkan-loader, glslang
-, nixosTests
-
-, enableXWayland ? true, xwayland ? null
-}:
-
-stdenv.mkDerivation rec {
-  pname = "wlroots";
-  version = "0.15.1";
-
-  src = fetchFromGitLab {
-    domain = "gitlab.freedesktop.org";
-    owner = "wlroots";
-    repo = "wlroots";
-    rev = version;
-    sha256 = "sha256-MFR38UuB/wW7J9ODDUOfgTzKLse0SSMIRYTpEaEdRwM=";
-  };
-
-  # $out for the library and $examples for the example programs (in examples):
-  outputs = [ "out" "examples" ];
-
-  strictDeps = true;
-  depsBuildBuild = [ pkg-config ];
-
-  nativeBuildInputs = [ meson ninja pkg-config wayland-scanner glslang ];
-
-  buildInputs = [
-    libGL wayland wayland-protocols libinput libxkbcommon pixman
-    xorg.xcbutilwm xorg.libX11 libcap xorg.xcbutilimage xorg.xcbutilerrors mesa
-    libpng ffmpeg_4 xorg.xcbutilrenderutil seatd vulkan-loader
-  ]
-    ++ lib.optional enableXWayland xwayland
-  ;
-
-  mesonFlags =
-    lib.optional (!enableXWayland) "-Dxwayland=disabled"
-  ;
-
-  postFixup = ''
-    # Install ALL example programs to $examples:
-    # screencopy dmabuf-capture input-inhibitor layer-shell idle-inhibit idle
-    # screenshot output-layout multi-pointer rotation tablet touch pointer
-    # simple
-    mkdir -p $examples/bin
-    cd ./examples
-    for binary in $(find . -executable -type f -printf '%P\n' | grep -vE '\.so'); do
-      cp "$binary" "$examples/bin/wlroots-$binary"
-    done
-  '';
-
-  # Test via TinyWL (the "minimum viable product" Wayland compositor based on wlroots):
-  passthru.tests.tinywl = nixosTests.tinywl;
-
-  meta = with lib; {
-    description = "A modular Wayland compositor library";
-    longDescription = ''
-      Pluggable, composable, unopinionated modules for building a Wayland
-      compositor; or about 50,000 lines of code you were going to write anyway.
-    '';
-    inherit (src.meta) homepage;
-    changelog = "https://gitlab.freedesktop.org/wlroots/wlroots/-/tags/${version}";
-    license     = licenses.mit;
-    platforms   = platforms.linux;
-    maintainers = with maintainers; [ primeos synthetica ];
-  };
-}
diff --git a/pkgs/development/libraries/wlroots/default.nix b/pkgs/development/libraries/wlroots/default.nix
new file mode 100644
index 00000000000..3d35828f289
--- /dev/null
+++ b/pkgs/development/libraries/wlroots/default.nix
@@ -0,0 +1,124 @@
+{ lib
+, stdenv
+, fetchFromGitLab
+, meson
+, ninja
+, pkg-config
+, wayland-scanner
+, libGL
+, wayland
+, wayland-protocols
+, libinput
+, libxkbcommon
+, pixman
+, libcap
+, mesa
+, xorg
+, libpng
+, ffmpeg_4
+, hwdata
+, seatd
+, vulkan-loader
+, glslang
+, nixosTests
+
+, enableXWayland ? true
+, xwayland ? null
+}:
+
+let
+  generic = { version, hash, extraBuildInputs ? [ ], extraNativeBuildInputs ? [ ], extraPatch ? "" }:
+    stdenv.mkDerivation rec {
+      pname = "wlroots";
+      inherit version;
+
+      src = fetchFromGitLab {
+        domain = "gitlab.freedesktop.org";
+        owner = "wlroots";
+        repo = "wlroots";
+        rev = version;
+        inherit hash;
+      };
+
+      postPatch = extraPatch;
+
+      # $out for the library and $examples for the example programs (in examples):
+      outputs = [ "out" "examples" ];
+
+      strictDeps = true;
+      depsBuildBuild = [ pkg-config ];
+
+      nativeBuildInputs = [ meson ninja pkg-config wayland-scanner ]
+        ++ extraNativeBuildInputs;
+
+      buildInputs = [
+        ffmpeg_4
+        libGL
+        libcap
+        libinput
+        libpng
+        libxkbcommon
+        mesa
+        pixman
+        seatd
+        vulkan-loader
+        wayland
+        wayland-protocols
+        xorg.libX11
+        xorg.xcbutilerrors
+        xorg.xcbutilimage
+        xorg.xcbutilrenderutil
+        xorg.xcbutilwm
+      ]
+      ++ lib.optional enableXWayland xwayland
+      ++ extraBuildInputs;
+
+      mesonFlags =
+        lib.optional (!enableXWayland) "-Dxwayland=disabled"
+      ;
+
+      postFixup = ''
+        # Install ALL example programs to $examples:
+        # screencopy dmabuf-capture input-inhibitor layer-shell idle-inhibit idle
+        # screenshot output-layout multi-pointer rotation tablet touch pointer
+        # simple
+        mkdir -p $examples/bin
+        cd ./examples
+        for binary in $(find . -executable -type f -printf '%P\n' | grep -vE '\.so'); do
+          cp "$binary" "$examples/bin/wlroots-$binary"
+        done
+      '';
+
+      # Test via TinyWL (the "minimum viable product" Wayland compositor based on wlroots):
+      passthru.tests.tinywl = nixosTests.tinywl;
+
+      meta = with lib; {
+        description = "A modular Wayland compositor library";
+        longDescription = ''
+          Pluggable, composable, unopinionated modules for building a Wayland
+          compositor; or about 50,000 lines of code you were going to write anyway.
+        '';
+        inherit (src.meta) homepage;
+        changelog = "https://gitlab.freedesktop.org/wlroots/wlroots/-/tags/${version}";
+        license = licenses.mit;
+        platforms = platforms.linux;
+        maintainers = with maintainers; [ primeos synthetica ];
+      };
+    };
+
+in
+rec {
+  wlroots_0_14 = generic {
+    version = "0.14.1";
+    hash = "sha256-wauk7TCL/V7fxjOZY77KiPbfydIc9gmOiYFOuum4UOs=";
+  };
+
+  wlroots_0_15 = generic {
+    version = "0.15.1";
+    hash = "sha256-MFR38UuB/wW7J9ODDUOfgTzKLse0SSMIRYTpEaEdRwM=";
+    extraBuildInputs = [ vulkan-loader ];
+    extraNativeBuildInputs = [ glslang ];
+  };
+
+  wlroots = wlroots_0_15;
+}
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 8a4a31df277..d75cefbeb21 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -29397,9 +29397,10 @@ with pkgs;
     electron = electron_17;
   };
 
-  wlroots = wlroots_0_15;
-  wlroots_0_14 = callPackage ../development/libraries/wlroots/0.14.nix { };
-  wlroots_0_15 = callPackage ../development/libraries/wlroots/0.15.nix { };
+  inherit (callPackages ../development/libraries/wlroots {})
+    wlroots_0_14
+    wlroots_0_15
+    wlroots;
 
   sway-unwrapped = callPackage ../applications/window-managers/sway { };
   sway = callPackage ../applications/window-managers/sway/wrapper.nix { };