Commit f302d482 authored by Linus Karl's avatar Linus Karl
Browse files

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.
parent 58aa6737
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
{ 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";
+19 −0
Original line number Diff line number Diff line
{ 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";
+18 −4
Original line number Diff line number Diff line
{ 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; {