diff --git a/pkgs/applications/misc/openrgb/default.nix b/pkgs/applications/misc/openrgb/default.nix index ea81b58a2098..bd1664e85ff5 100644 --- a/pkgs/applications/misc/openrgb/default.nix +++ b/pkgs/applications/misc/openrgb/default.nix @@ -1,4 +1,4 @@ -{ lib, stdenv, fetchFromGitLab, qmake, wrapQtAppsHook, libusb1, hidapi, pkg-config, coreutils, mbedtls_2, qtbase, qttools }: +{ lib, stdenv, fetchFromGitLab, qmake, wrapQtAppsHook, libusb1, hidapi, pkg-config, coreutils, mbedtls_2, qtbase, qttools, symlinkJoin, openrgb }: stdenv.mkDerivation rec { pname = "openrgb"; @@ -25,6 +25,29 @@ stdenv.mkDerivation rec { HOME=$TMPDIR $out/bin/openrgb --help > /dev/null ''; + passthru.withPlugins = plugins: + let pluginsDir = symlinkJoin { + name = "openrgb-plugins"; + paths = plugins; + # Remove all library version symlinks except one, + # or they will result in duplicates in the UI. + # We leave the one pointing to the actual library, usually the most + # qualified one (eg. libOpenRGBHardwareSyncPlugin.so.1.0.0). + postBuild = '' + for f in $out/lib/*; do + if [ "$(dirname $(readlink "$f"))" == "." ]; then + rm "$f" + fi + done + ''; + }; + in openrgb.overrideAttrs (old: { + qmakeFlags = old.qmakeFlags or [] ++ [ + # Welcome to Escape Hell, we have backslashes + ''DEFINES+=OPENRGB_EXTRA_PLUGIN_DIRECTORY=\\\""${lib.escape ["\\" "\"" " "] (toString pluginsDir)}/lib\\\""'' + ]; + }); + meta = with lib; { description = "Open source RGB lighting control"; homepage = "https://gitlab.com/CalcProgrammer1/OpenRGB";