7 , enableUdev ? stdenv.hostPlatform.isLinux && !stdenv.hostPlatform.isStatic && !stdenv.hostPlatform.isAndroid
12 , withExamples ? false
14 , withDocs ? stdenv.buildPlatform.canExecute stdenv.hostPlatform
17 stdenv.mkDerivation rec {
21 src = fetchFromGitHub {
25 sha256 = "sha256-OtzYxWwiba0jRK9X+4deWWDDTeZWlysEt0qMyGUarDo=";
28 outputs = [ "out" "dev" ] ++ lib.optionals withDocs [ "doc" ];
33 ] ++ lib.optionals withDocs [ doxygen ];
34 propagatedBuildInputs =
35 lib.optional enableUdev udev ++
36 lib.optionals stdenv.hostPlatform.isDarwin [ libobjc IOKit Security ];
38 dontDisableStatic = withStatic;
40 # libusb-1.0.rc:11: fatal error: opening dependency file .deps/libusb-1.0.Tpo: No such file or directory
41 dontAddDisableDepTrack = stdenv.hostPlatform.isWindows;
44 lib.optional (!enableUdev) "--disable-udev"
45 ++ lib.optional (withExamples) "--enable-examples-build";
47 postBuild = lib.optionalString withDocs ''
49 mkdir -p "$doc/share/doc/libusb"
50 cp -r doc/api-1.0/* "$doc/share/doc/libusb/"
53 preFixup = lib.optionalString enableUdev ''
54 sed 's,-ludev,-L${lib.getLib udev}/lib -ludev,' -i $out/lib/libusb-1.0.la
57 postInstall = lib.optionalString withExamples ''
58 mkdir -p $out/{bin,sbin,examples/bin}
59 cp -r examples/.libs/* $out/examples/bin
60 ln -s $out/examples/bin/fxload $out/sbin/fxload
64 homepage = "https://libusb.info/";
65 description = "cross-platform user-mode USB device library";
67 libusb is a cross-platform user-mode library that provides access to USB devices.
69 platforms = platforms.all;
70 license = licenses.lgpl21Plus;
71 maintainers = with maintainers; [ prusnak realsnick ];