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.
This commit is contained in:
@@ -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";
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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; {
|
||||
|
||||
Reference in New Issue
Block a user