1{
2 lib,
3 fetchFromGitHub,
4 buildPythonPackage,
5
6 # build-system
7 cython,
8 git,
9 pkgconfig,
10 setuptools,
11 setuptools-scm,
12
13 # dependneices
14 numpy,
15
16 # optional-dependenices
17 pyusb,
18
19 # tests
20 mock,
21 pytestCheckHook,
22 zipp,
23}:
24
25## Usage
26# In NixOS, add the package to services.udev.packages for non-root plugdev
27# users to get device access permission:
28# services.udev.packages = [ pkgs.python3Packages.seabreeze ];
29
30buildPythonPackage rec {
31 pname = "seabreeze";
32 version = "2.6.0";
33 pyproject = true;
34
35 src = fetchFromGitHub {
36 owner = "ap--";
37 repo = "python-seabreeze";
38 rev = "refs/tags/v${version}";
39 hash = "sha256-Ead9G4i8/mFwPqL2PGsndtmX93Njld3nvTTr6ROJTac=";
40 leaveDotGit = true;
41 };
42
43 nativeBuildInputs = [
44 cython
45 git
46 pkgconfig
47 setuptools
48 setuptools-scm
49 ];
50
51 propagatedBuildInputs = [ numpy ];
52
53 passthru.optional-dependencies = {
54 pyseabreeze = [ pyusb ];
55 };
56
57 postInstall = ''
58 mkdir -p $out/etc/udev/rules.d
59 cp os_support/10-oceanoptics.rules $out/etc/udev/rules.d/10-oceanoptics.rules
60 '';
61
62 # few backends enabled, but still some tests
63 nativeCheckInputs = [
64 pytestCheckHook
65 mock
66 zipp
67 ] ++ lib.flatten (lib.attrValues passthru.optional-dependencies);
68
69 setupPyBuildFlags = [ "--without-cseabreeze" ];
70
71 meta = with lib; {
72 homepage = "https://github.com/ap--/python-seabreeze";
73 description = "A python library to access Ocean Optics spectrometers";
74 maintainers = [ ];
75 license = licenses.mit;
76 };
77}