diff --git a/pkgs/development/libraries/science/astronomy/indilib/default.nix b/pkgs/development/libraries/science/astronomy/indilib/default.nix index d6d8919ccddf..0b4526e6e1eb 100644 --- a/pkgs/development/libraries/science/astronomy/indilib/default.nix +++ b/pkgs/development/libraries/science/astronomy/indilib/default.nix @@ -1,9 +1,11 @@ { stdenv , lib , fetchFromGitHub +, bash , cmake , cfitsio , libusb1 +, kmod , zlib , boost , libev @@ -58,6 +60,15 @@ stdenv.mkDerivation rec { # Socket address collisions between tests enableParallelChecking = false; + postFixup = lib.optionalString stdenv.isLinux '' + for f in $out/lib/udev/rules.d/*.rules + do + substituteInPlace $f --replace "/bin/sh" "${bash}/bin/sh" \ + --replace "/sbin/modprobe" "${kmod}/sbin/modprobe" + done + ''; + + meta = with lib; { homepage = "https://www.indilib.org/"; description = "Implementation of the INDI protocol for POSIX operating systems"; diff --git a/pkgs/development/libraries/science/astronomy/indilib/indi-3rdparty.nix b/pkgs/development/libraries/science/astronomy/indilib/indi-3rdparty.nix index 2423a6e20e34..fdbdb4db24bf 100644 --- a/pkgs/development/libraries/science/astronomy/indilib/indi-3rdparty.nix +++ b/pkgs/development/libraries/science/astronomy/indilib/indi-3rdparty.nix @@ -1,6 +1,8 @@ { stdenv , lib +, bash , cmake +, coreutils , cfitsio , libusb1 , zlib @@ -24,6 +26,10 @@ , firmware ? null }: +let + libusb-with-fxload = libusb1.override { withExamples = true;}; +in + stdenv.mkDerivation rec { pname = "indi-3rdparty"; @@ -68,6 +74,19 @@ stdenv.mkDerivation rec { "-DWITH_SBIG=off" ]; + postFixup = lib.optionalString stdenv.isLinux '' + for f in $out/lib/udev/rules.d/*.rules + do + substituteInPlace $f --replace "/sbin/fxload" "${libusb-with-fxload}/sbin/fxload" \ + --replace "/lib/firmware/" "$out/lib/firmware/" \ + --replace "/bin/sleep" "${coreutils}/bin/sleep" \ + --replace "/bin/cat" "${coreutils}/bin/cat" \ + --replace "/bin/echo" "${coreutils}/bin/echo" \ + --replace "/bin/sh" "${bash}/bin/sh" + done + ''; + + meta = with lib; { homepage = "https://www.indilib.org/"; description = "Third party drivers for the INDI astronomical software suite"; diff --git a/pkgs/development/libraries/science/astronomy/indilib/indi-firmware.nix b/pkgs/development/libraries/science/astronomy/indilib/indi-firmware.nix index 7875051cbf79..102a8b901cce 100644 --- a/pkgs/development/libraries/science/astronomy/indilib/indi-firmware.nix +++ b/pkgs/development/libraries/science/astronomy/indilib/indi-firmware.nix @@ -1,7 +1,9 @@ { stdenv , lib +, bash , cmake , cfitsio +, coreutils , libusb1 , zlib , boost @@ -21,7 +23,9 @@ , src , autoPatchelfHook }: - +let + libusb-with-fxload = libusb1.override { withExamples = true;}; +in stdenv.mkDerivation rec { pname = "indi-firmware"; @@ -39,7 +43,8 @@ stdenv.mkDerivation rec { "-DCMAKE_INSTALL_LIBDIR=lib" "-DUDEVRULES_INSTALL_DIR=lib/udev/rules.d" "-DRULES_INSTALL_DIR=lib/udev/rules.d" - "-DFIRMWARE_INSTALL_DIR=\${CMAKE_INSTALL_PREFIX}/lib/firmware" + "-DFIRMWARE_INSTALL_DIR=lib/firmware" + "-DQHY_FIRMWARE_INSTALL_DIR=\${CMAKE_INSTALL_PREFIX}/lib/firmware/qhy" "-DCONF_DIR=etc" "-DBUILD_LIBS=1" "-DWITH_PENTAX=off" @@ -52,8 +57,17 @@ stdenv.mkDerivation rec { done ''; - postFixup = '' - rm $out/lib/udev/rules.d/99-fli.rules + postFixup = lib.optionalString stdenv.isLinux '' + for f in $out/lib/udev/rules.d/*.rules + do + substituteInPlace "$f" --replace "/sbin/fxload" "${libusb-with-fxload}/sbin/fxload" \ + --replace "/bin/sleep" "${coreutils}/bin/sleep" \ + --replace "/bin/cat" "${coreutils}/bin/cat" \ + --replace "/bin/echo" "${coreutils}/bin/echo" \ + --replace "/bin/sh" "${bash}/bin/sh" \ + --replace "/lib/firmware/" "$out/lib/firmware/" + sed -e 's|-D $env{DEVNAME}|-p $env{BUSNUM},$env{DEVNUM}|' -i "$f" + done ''; meta = with lib; {