Change:
Project description A wlroots-compatible Wayland color picker that does not suck. Metadata homepage URL: source URL: license: platforms: linux Just because you made available on NixOS, I wanted to point you on hyprpicker, too - if you're interested to have a look into this(?)
I'll take a look into packaging this.

Discussion:
<ins> { lib , stdenv , fetchFromGitHub , meson , ninja }: stdenv.mkDerivation rec { pname = "hyprland-protocols"; version = "unstable-2023-01-13"; src = fetchFromGitHub { owner = "hyprwm"; repo = pname; rev = "eb7dcc0132ad25addc3e8d434c4bfae6bd3a8c90"; hash = "sha256-gkLgUg9/fP04bKCJMj/rN0r6PV/cbLShDvKQyFvVap0="; }; nativeBuildInputs = [ meson ninja ]; meta = { homepage = "https://github.com/hyprwm/hyprland-protocols"; description = "Wayland protocol extensions for Hyprland"; license = lib.licenses.bsd3; maintainers = with lib.maintainers; [ fufexan ]; platforms = lib.platforms.linux; }; } </ins>

{ lib , stdenv , fetchFromGitHub <del> , fetchFromGitLab , cmake </del> <ins> , pkg-config , meson , ninja , cairo , git , hyprland-protocols , jq </ins> , libdrm , libinput , libxcb , libxkbcommon , mesa <del> , pango , pkg-config </del> <ins> , pciutils , systemd , udis86 </ins> , wayland , wayland-protocols , wayland-scanner , wlroots , xcbutilwm <ins> , xwayland , debug ? false , enableXWayland ? true , hidpiXWayland ? false , legacyRenderer ? false , nvidiaPatches ? false , withSystemd ? true </ins> }: <del> stdenv.mkDerivation (finalAttrs: { pname = "hyprland"; version = "0.6.1beta"; </del> <ins> let assertXWayland = lib.assertMsg (hidpiXWayland -> enableXWayland) '' Hyprland: cannot have hidpiXWayland when enableXWayland is false. ''; in assert assertXWayland; stdenv.mkDerivation rec { pname = "hyprland" + lib.optionalString debug "-debug"; version = "0.23.0beta"; </ins> src = fetchFromGitHub { owner = "hyprwm"; <del> repo = "Hyprland"; rev = "v${finalAttrs.version}"; hash = "sha256-0Msqe2ErAJvnO1zHoB2k6TkDhTYnHRGkvJrfSG12dTU="; </del> <ins> repo = "hyprland"; rev = "v${version}"; hash = "sha256-aPSmhgof4nIJquHmtxxirIMVv439wTYYCwf1ekS96gA="; </ins> }; <ins> patches = [ # make meson use the provided dependencies instead of the git submodules "${src}/nix/meson-build.patch" ]; postPatch = '' # Fix hardcoded paths to /usr installation sed -i "s#/usr#$out#" src/render/OpenGL.cpp substituteInPlace meson.build  --replace "@GIT_COMMIT_HASH@" '${version}'  --replace "@GIT_DIRTY@" "" ''; </ins> nativeBuildInputs = [ <del> cmake </del> <ins> jq meson ninja </ins> pkg-config <del> wayland-scanner </del> ]; <del> buildInputs = [ libdrm libinput libxcb libxkbcommon mesa pango wayland wayland-protocols xcbutilwm ] ++ [ # INFO: When updating src, remember to synchronize this wlroots with the # exact commit used by upstream (wlroots.overrideAttrs (_: { version = "unstable-2022-06-07"; src = fetchFromGitLab { domain = "gitlab.freedesktop.org"; owner = "wlroots"; repo = "wlroots"; rev = "b89ed9015c3fbe8d339e9d65cf70fdca6e5645bc"; hash = "sha256-8y3u8CoigjoZOVbA2wCWBHlDNEakv0AVxU46/cOC00s="; }; })) </del> <ins> outputs = [ "out" "man" </ins> ]; <del> # build with system wlroots postPatch = '' sed -Ei 's|"../wlroots/include/([a-zA-Z0-9./_-]+)"|<1>|g' src/includes.hpp ''; preConfigure = '' make protocols ''; </del> <ins> buildInputs = [ cairo git hyprland-protocols libdrm libinput libxkbcommon mesa udis86 wayland wayland-protocols wayland-scanner pciutils (wlroots.override { inherit enableXWayland hidpiXWayland nvidiaPatches; }) ] ++ lib.optionals enableXWayland [ libxcb xcbutilwm xwayland ] ++ lib.optionals withSystemd [ systemd ]; </ins> <del> postBuild = '' pushd ../hyprctl ${stdenv.cc.targetPrefix}c++ -std=c++20 -w ./main.cpp -o ./hyprctl popd ''; </del> <ins> mesonBuildType = if debug then "debug" else "release"; </ins> <del> installPhase = '' runHook preInstall </del> <ins> mesonFlags = builtins.concatLists [ (lib.optional (!enableXWayland) "-Dxwayland=disabled") (lib.optional legacyRenderer "-DLEGACY_RENDERER:STRING=true") (lib.optional withSystemd "-Dsystemd=enabled") ]; </ins> <del> install -Dm755 ../hyprctl/hyprctl ./Hyprland -t $out/bin runHook postInstall ''; </del> <ins> passthru.providedSessions = [ "hyprland" ]; </ins> meta = with lib; { <del> inherit (finalAttrs.src.meta) homepage; </del> <ins> homepage = "https://github.com/vaxerski/Hyprland"; </ins> description = "A dynamic tiling Wayland compositor that doesn't sacrifice on its looks"; license = licenses.bsd3; <del> maintainers = with maintainers; [ wozeparrot ]; inherit (wayland.meta) platforms; </del> <ins> maintainers = with maintainers; [ wozeparrot fufexan ]; </ins> mainProgram = "Hyprland"; <ins> platforms = wlroots.meta.platforms; </ins> }; <del> }) </del> <ins> } </ins>

<ins> { udis86 , fetchFromGitHub }: udis86.overrideAttrs (old: { version = "unstable-2022-10-13"; src = fetchFromGitHub { owner = "canihavesomecoffee"; repo = "udis86"; rev = "5336633af70f3917760a6d441ff02d93477b0c86"; hash = "sha256-HifdUQPGsKQKQprByeIznvRLONdOXeolOsU5nkwIv3g="; }; patches = [ ]; }) </ins>

<ins> { fetchFromGitLab , hyprland , wlroots , xwayland , fetchpatch , lib , libdisplay-info , libliftoff , hwdata , hidpiXWayland ? true , enableXWayland ? true , nvidiaPatches ? false }: let libdisplay-info-new = libdisplay-info.overrideAttrs (old: { version = "0.1.1+date=2023-03-02"; src = fetchFromGitLab { domain = "gitlab.freedesktop.org"; owner = "emersion"; repo = old.pname; rev = "147d6611a64a6ab04611b923e30efacaca6fc678"; sha256 = "sha256-/q79o13Zvu7x02SBGu0W5yQznQ+p7ltZ9L6cMW5t/o4="; }; }); libliftoff-new = libliftoff.overrideAttrs (old: { version = "0.5.0-dev"; src = fetchFromGitLab { domain = "gitlab.freedesktop.org"; owner = "emersion"; repo = old.pname; rev = "d98ae243280074b0ba44bff92215ae8d785658c0"; sha256 = "sha256-DjwlS8rXE7srs7A8+tHqXyUsFGtucYSeq6X0T/pVOc8="; }; NIX_CFLAGS_COMPILE = toString [ "-Wno-error=sign-conversion" ]; }); in assert (lib.assertMsg (hidpiXWayland -> enableXWayland) '' wlroots-hyprland: cannot have hidpiXWayland when enableXWayland is false. ''); (wlroots.overrideAttrs (old: { version = "0.17.0-dev"; src = fetchFromGitLab { domain = "gitlab.freedesktop.org"; owner = "wlroots"; repo = "wlroots"; rev = "5ae17de23f5fd9bb252a698f3771c840280e2c05"; hash = "sha256-dWrk+Q3bLdtFe5rkyaAKWCQJCeE/KFNllcu1DvBC38c="; }; pname = old.pname + "-hyprland" + ( if hidpiXWayland then "-hidpi" else "" ) + ( if nvidiaPatches then "-nvidia" else "" ); patches = (old.patches or [ ]) ++ (lib.optionals (enableXWayland && hidpiXWayland) [ "${hyprland.src}/nix/wlroots-hidpi.patch" (fetchpatch { url = "https://gitlab.freedesktop.org/wlroots/wlroots/-/commit/18595000f3a21502fd60bf213122859cc348f9af.diff"; sha256 = "sha256-jvfkAMh3gzkfuoRhB4E9T5X1Hu62wgUjj4tZkJm0mrI="; revert = true; }) ]) ++ (lib.optionals nvidiaPatches [ (fetchpatch { url = "https://aur.archlinux.org/cgit/aur.git/plain/nvidia.patch?h=hyprland-nvidia-git&id=757614af7729352fda534abe9eb1a88fe77dfe04"; sha256 = "A9f1p5EW++mGCaNq8w7ZJfeWmvTfUm4iO+1KDcnqYX8="; }) ]); postPatch = (old.postPatch or "") + ( if nvidiaPatches then '' substituteInPlace render/gles2/renderer.c --replace "glFlush();" "glFinish();" '' else "" ); buildInputs = old.buildInputs ++ [ hwdata libdisplay-info-new libliftoff-new ]; })).override { xwayland = xwayland.overrideAttrs (old: { patches = (old.patches or [ ]) ++ (lib.optionals hidpiXWayland [ "${hyprland.src}/nix/xwayland-vsync.patch" "${hyprland.src}/nix/xwayland-hidpi.patch" ]); }); } </ins>

<ins> { lib , stdenv , fetchFromGitHub , pkg-config , cmake , ninja , cairo , fribidi , libdatrie , libjpeg , libselinux , libsepol , libthai , pango , pcre , utillinux , wayland , wayland-protocols , wayland-scanner , wlroots , libXdmcp , debug ? false }: stdenv.mkDerivation { pname = "hyprpicker" + lib.optionalString debug "-debug"; version = "unstable-2023-03-09"; src = fetchFromGitHub { owner = "hyprwm"; repo = "hyprpicker"; rev = "234c2da51a71941c0cd2ee380f42de365f90dd6f"; hash = "sha256-wb1oXsaM0AkThPJGjn0Ytxt8vbBQG+mg2AGY0uxhUJ0="; }; cmakeFlags = lib.optional debug "-DCMAKE_BUILD_TYPE=Debug"; nativeBuildInputs = [ cmake ninja pkg-config ]; buildInputs = [ cairo fribidi libdatrie libjpeg libselinux libsepol libthai pango pcre wayland wayland-protocols wayland-scanner wlroots libXdmcp utillinux ]; configurePhase = '' runHook preConfigure make protocols runHook postConfigure ''; buildPhase = '' runHook preBuild make release runHook postBuild ''; installPhase = '' runHook preInstall mkdir -p $out/{bin,share/licenses} install -Dm755 build/hyprpicker -t $out/bin install -Dm644 LICENSE -t $out/share/licenses/hyprpicker runHook postInstall ''; meta = with lib; { description = "A wlroots-compatible Wayland color picker that does not suck"; homepage = "https://github.com/hyprwm/hyprpicker"; license = licenses.bsd3; maintainers = with maintainers; [ fufexan ]; platforms = wayland.meta.platforms; }; } </ins>

<ins> { lib , stdenv , fetchFromGitHub , makeWrapper , meson , ninja , pkg-config , hyprland-protocols , hyprland-share-picker , inih , libdrm , mesa , pipewire , systemd , wayland , wayland-protocols , wayland-scanner }: let source = import ./source.nix { inherit lib fetchFromGitHub wayland; }; in stdenv.mkDerivation { pname = "xdg-desktop-portal-hyprland"; inherit (source) src version meta; strictDeps = true; depsBuildBuild = [ pkg-config ]; nativeBuildInputs = [ makeWrapper meson ninja pkg-config wayland-scanner ]; buildInputs = [ hyprland-protocols inih libdrm mesa pipewire systemd wayland wayland-protocols ]; mesonFlags = [ "-Dsd-bus-provider=libsystemd" ]; postInstall = '' wrapProgram $out/libexec/xdg-desktop-portal-hyprland --prefix PATH ":" ${lib.makeBinPath [hyprland-share-picker]} ''; } </ins>

<ins> { stdenv , lib , fetchFromGitHub , cmake , qtbase , makeShellWrapper , wrapQtAppsHook , hyprland , grim , slurp , wayland }: let source = import ./source.nix { inherit lib fetchFromGitHub wayland; }; in stdenv.mkDerivation { pname = "hyprland-share-picker"; inherit (source) version; src = "${source.src}/hyprland-share-picker"; nativeBuildInputs = [ cmake wrapQtAppsHook makeShellWrapper ]; buildInputs = [ qtbase ]; dontWrapQtApps = true; postInstall = '' wrapProgramShell $out/bin/hyprland-share-picker  "''${qtWrapperArgs[@]}"  --prefix PATH ":" ${lib.makeBinPath [grim slurp hyprland]} ''; meta = source.meta // { description = "Helper program for xdg-desktp-portal-hyprland"; }; } </ins>

<ins> { lib , fetchFromGitHub , wayland }: { version = "unstable-2023-03-16"; src = fetchFromGitHub { owner = "hyprwm"; repo = "xdg-desktop-portal-hyprland"; rev = "85f49f4d6c9c398428117e9bdb588f53f09e52e0"; hash = "sha256-qed+BV0NBt1egGCBEM7d5MiZJevQb8jd1WybfFM53Ak="; }; meta = with lib; { description = "xdg-desktop-portal backend for Hyprland"; homepage = "https://github.com/hyprwm/xdg-desktop-portal-hyprland"; license = licenses.mit; maintainers = with maintainers; [ fufexan ]; platforms = wayland.meta.platforms; }; } </ins>

hunt = callPackage ../tools/misc/hunt { }; hypr = callPackage ../applications/window-managers/hyprwm/hypr { <del> cairo = cairo.override { xcbSupport = true; }; </del> <ins> cairo = cairo.override { xcbSupport = true; };  }; hyprland = callPackage ../applications/window-managers/hyprwm/hyprland { stdenv = gcc12Stdenv; wlroots = pkgs.callPackage ../applications/window-managers/hyprwm/hyprland/wlroots.nix { }; udis86 = pkgs.callPackage ../applications/window-managers/hyprwm/hyprland/udis86.nix { }; </ins> }; <del> hyprland = callPackage ../applications/window-managers/hyprwm/hyprland { }; </del> <ins> hyprland-protocols = callPackage ../applications/window-managers/hyprwm/hyprland-protocols { }; hyprland-share-picker = libsForQt5.callPackage ../applications/window-managers/hyprwm/xdg-desktop-portal-hyprland/hyprland-share-picker.nix { }; </ins> <del> hyprpaper = callPackage ../applications/window-managers/hyprwm/hyprpaper { }; </del> <ins> hyprpaper = callPackage ../applications/window-managers/hyprwm/hyprpaper { stdenv = gcc12Stdenv; }; hyprpicker = callPackage ../applications/window-managers/hyprwm/hyprpicker { }; </ins> hysteria = callPackage ../tools/networking/hysteria { };

xdg-desktop-portal-gtk = callPackage ../development/libraries/xdg-desktop-portal-gtk { }; <ins> xdg-desktop-portal-hyprland = callPackage ../applications/window-managers/hyprwm/xdg-desktop-portal-hyprland { }; </ins> xdg-desktop-portal-wlr = callPackage ../development/libraries/xdg-desktop-portal-wlr { }; xdg-user-dirs = callPackage ../tools/X11/xdg-user-dirs { };