indilib: fix udev rules

This fixes the udev rules so that the indi packages can be added to
nixos services.udev.packages option. It also fixes the loading of
firmware for devices which need fxload.

+48 -4
+11
pkgs/development/libraries/science/astronomy/indilib/default.nix
··· 1 1 { stdenv 2 2 , lib 3 3 , fetchFromGitHub 4 + , bash 4 5 , cmake 5 6 , cfitsio 6 7 , libusb1 8 + , kmod 7 9 , zlib 8 10 , boost 9 11 , libev ··· 57 59 58 60 # Socket address collisions between tests 59 61 enableParallelChecking = false; 62 + 63 + postFixup = lib.optionalString stdenv.isLinux '' 64 + for f in $out/lib/udev/rules.d/*.rules 65 + do 66 + substituteInPlace $f --replace "/bin/sh" "${bash}/bin/sh" \ 67 + --replace "/sbin/modprobe" "${kmod}/sbin/modprobe" 68 + done 69 + ''; 70 + 60 71 61 72 meta = with lib; { 62 73 homepage = "https://www.indilib.org/";
+19
pkgs/development/libraries/science/astronomy/indilib/indi-3rdparty.nix
··· 1 1 { stdenv 2 2 , lib 3 + , bash 3 4 , cmake 5 + , coreutils 4 6 , cfitsio 5 7 , libusb1 6 8 , zlib ··· 23 25 , withFirmware ? false 24 26 , firmware ? null 25 27 }: 28 + 29 + let 30 + libusb-with-fxload = libusb1.override { withExamples = true;}; 31 + in 26 32 27 33 stdenv.mkDerivation rec { 28 34 pname = "indi-3rdparty"; ··· 67 73 "-DWITH_FISHCAMP=off" 68 74 "-DWITH_SBIG=off" 69 75 ]; 76 + 77 + postFixup = lib.optionalString stdenv.isLinux '' 78 + for f in $out/lib/udev/rules.d/*.rules 79 + do 80 + substituteInPlace $f --replace "/sbin/fxload" "${libusb-with-fxload}/sbin/fxload" \ 81 + --replace "/lib/firmware/" "$out/lib/firmware/" \ 82 + --replace "/bin/sleep" "${coreutils}/bin/sleep" \ 83 + --replace "/bin/cat" "${coreutils}/bin/cat" \ 84 + --replace "/bin/echo" "${coreutils}/bin/echo" \ 85 + --replace "/bin/sh" "${bash}/bin/sh" 86 + done 87 + ''; 88 + 70 89 71 90 meta = with lib; { 72 91 homepage = "https://www.indilib.org/";
+18 -4
pkgs/development/libraries/science/astronomy/indilib/indi-firmware.nix
··· 1 1 { stdenv 2 2 , lib 3 + , bash 3 4 , cmake 4 5 , cfitsio 6 + , coreutils 5 7 , libusb1 6 8 , zlib 7 9 , boost ··· 21 23 , src 22 24 , autoPatchelfHook 23 25 }: 24 - 26 + let 27 + libusb-with-fxload = libusb1.override { withExamples = true;}; 28 + in 25 29 stdenv.mkDerivation rec { 26 30 pname = "indi-firmware"; 27 31 ··· 39 43 "-DCMAKE_INSTALL_LIBDIR=lib" 40 44 "-DUDEVRULES_INSTALL_DIR=lib/udev/rules.d" 41 45 "-DRULES_INSTALL_DIR=lib/udev/rules.d" 42 - "-DFIRMWARE_INSTALL_DIR=\${CMAKE_INSTALL_PREFIX}/lib/firmware" 46 + "-DFIRMWARE_INSTALL_DIR=lib/firmware" 47 + "-DQHY_FIRMWARE_INSTALL_DIR=\${CMAKE_INSTALL_PREFIX}/lib/firmware/qhy" 43 48 "-DCONF_DIR=etc" 44 49 "-DBUILD_LIBS=1" 45 50 "-DWITH_PENTAX=off" ··· 52 57 done 53 58 ''; 54 59 55 - postFixup = '' 56 - rm $out/lib/udev/rules.d/99-fli.rules 60 + postFixup = lib.optionalString stdenv.isLinux '' 61 + for f in $out/lib/udev/rules.d/*.rules 62 + do 63 + substituteInPlace "$f" --replace "/sbin/fxload" "${libusb-with-fxload}/sbin/fxload" \ 64 + --replace "/bin/sleep" "${coreutils}/bin/sleep" \ 65 + --replace "/bin/cat" "${coreutils}/bin/cat" \ 66 + --replace "/bin/echo" "${coreutils}/bin/echo" \ 67 + --replace "/bin/sh" "${bash}/bin/sh" \ 68 + --replace "/lib/firmware/" "$out/lib/firmware/" 69 + sed -e 's|-D $env{DEVNAME}|-p $env{BUSNUM},$env{DEVNUM}|' -i "$f" 70 + done 57 71 ''; 58 72 59 73 meta = with lib; {