1{ lib, stdenvNoCC, fetchFromGitHub, python3, makeWrapper, unstableGitUpdater, nixosTests }:
2
3let
4 pythonEnv = python3.withPackages (packages: with packages; [
5 tornado
6 pyserial-asyncio
7 pillow
8 lmdb
9 streaming-form-data
10 distro
11 inotify-simple
12 libnacl
13 paho-mqtt
14 pycurl
15 zeroconf
16 preprocess-cancellation
17 jinja2
18 dbus-next
19 apprise
20 ]);
21in stdenvNoCC.mkDerivation rec {
22 pname = "moonraker";
23 version = "unstable-2022-11-18";
24
25 src = fetchFromGitHub {
26 owner = "Arksine";
27 repo = "moonraker";
28 rev = "362bc1a3d3ad397416f7fc48b8efe33837428b90";
29 sha256 = "sha256-cebRHOx2hg470jM1CoQAk13Whv+KN2qx97BTlpjxSZg=";
30 };
31
32 nativeBuildInputs = [ makeWrapper ];
33
34 installPhase = ''
35 mkdir -p $out $out/bin $out/lib
36 cp -r moonraker $out/lib
37
38 makeWrapper ${pythonEnv}/bin/python $out/bin/moonraker \
39 --add-flags "$out/lib/moonraker/moonraker.py"
40 '';
41
42 passthru = {
43 updateScript = unstableGitUpdater { url = meta.homepage; };
44 tests.moonraker = nixosTests.moonraker;
45 };
46
47 meta = with lib; {
48 description = "API web server for Klipper";
49 homepage = "https://github.com/Arksine/moonraker";
50 license = licenses.gpl3Only;
51 maintainers = with maintainers; [ zhaofengli ];
52 };
53}