nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
1{
2 lib,
3 fetchFromGitHub,
4 meerk40t-camera,
5 python3Packages,
6 gtk3,
7 wrapGAppsHook3,
8}:
9
10python3Packages.buildPythonApplication rec {
11 pname = "MeerK40t";
12 version = "0.9.7051";
13 pyproject = true;
14
15 src = fetchFromGitHub {
16 owner = "meerk40t";
17 repo = pname;
18 tag = version;
19 hash = "sha256-v3lwFl4Qls+NzR2rYwNF8PyFTH0nNcLlF/uwc0h3Pc0=";
20 };
21
22 nativeBuildInputs = [
23 wrapGAppsHook3
24 ]
25 ++ (with python3Packages; [
26 setuptools
27 ]);
28
29 # prevent double wrapping
30 dontWrapGApps = true;
31
32 # https://github.com/meerk40t/meerk40t/blob/main/setup.py
33 propagatedBuildInputs =
34 with python3Packages;
35 [
36 meerk40t-camera
37 numpy
38 pyserial
39 pyusb
40 setuptools
41 wxpython
42 ]
43 ++ lib.flatten (lib.attrValues optional-dependencies);
44
45 optional-dependencies = with python3Packages; {
46 cam = [
47 opencv4
48 ];
49 camhead = [
50 opencv4
51 ];
52 dxf = [
53 ezdxf
54 ];
55 gui = [
56 wxpython
57 pillow
58 opencv4
59 ezdxf
60 ];
61 };
62
63 preFixup = ''
64 gappsWrapperArgs+=(
65 --prefix XDG_DATA_DIRS : "${gtk3}/share/gsettings-schemas/${gtk3.name}"
66 )
67 makeWrapperArgs+=("''${gappsWrapperArgs[@]}")
68 '';
69
70 nativeCheckInputs = with python3Packages; [
71 unittestCheckHook
72 ];
73
74 preCheck = ''
75 export HOME=$TMPDIR
76 '';
77
78 meta = with lib; {
79 changelog = "https://github.com/meerk40t/meerk40t/releases/tag/${src.tag}";
80 description = "MeerK40t LaserCutter Software";
81 mainProgram = "meerk40t";
82 homepage = "https://github.com/meerk40t/meerk40t";
83 license = licenses.mit;
84 maintainers = with maintainers; [ hexa ];
85 };
86}