about summary refs log tree commit diff
path: root/nixpkgs/pkgs/applications/misc/octoprint
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2021-01-15 10:30:44 +0000
committerAlyssa Ross <hi@alyssa.is>2021-01-15 10:30:44 +0000
commite0794be8a0d11e90461e5a9c85012a36b93ec976 (patch)
treeefd9cbc55ea3322867bf601c4d536758a3dd5fcc /nixpkgs/pkgs/applications/misc/octoprint
parent3538874082ded7647b1ccec0343c7c1e882cfef3 (diff)
parent1a57d96edd156958b12782e8c8b6a374142a7248 (diff)
downloadnixlib-e0794be8a0d11e90461e5a9c85012a36b93ec976.tar
nixlib-e0794be8a0d11e90461e5a9c85012a36b93ec976.tar.gz
nixlib-e0794be8a0d11e90461e5a9c85012a36b93ec976.tar.bz2
nixlib-e0794be8a0d11e90461e5a9c85012a36b93ec976.tar.lz
nixlib-e0794be8a0d11e90461e5a9c85012a36b93ec976.tar.xz
nixlib-e0794be8a0d11e90461e5a9c85012a36b93ec976.tar.zst
nixlib-e0794be8a0d11e90461e5a9c85012a36b93ec976.zip
Merge commit '1a57d96edd156958b12782e8c8b6a374142a7248'
Diffstat (limited to 'nixpkgs/pkgs/applications/misc/octoprint')
-rw-r--r--nixpkgs/pkgs/applications/misc/octoprint/default.nix80
-rw-r--r--nixpkgs/pkgs/applications/misc/octoprint/m33-fio-one-library.patch175
-rw-r--r--nixpkgs/pkgs/applications/misc/octoprint/plugins.nix286
3 files changed, 214 insertions, 327 deletions
diff --git a/nixpkgs/pkgs/applications/misc/octoprint/default.nix b/nixpkgs/pkgs/applications/misc/octoprint/default.nix
index 82cdf18b4846..974b733ae640 100644
--- a/nixpkgs/pkgs/applications/misc/octoprint/default.nix
+++ b/nixpkgs/pkgs/applications/misc/octoprint/default.nix
@@ -25,13 +25,30 @@ let
       [
         # the following dependencies are non trivial to update since later versions introduce backwards incompatible
         # changes that might affect plugins, or due to other observed problems
-        (mkOverride "markupsafe" "1.1.1" "29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b")
+        (mkOverride "flask-babel" "1.0.0" "0gmb165vkwv5v7dxsxa2i3zhafns0fh938m2zdcrv4d8z5l099yn")
         (mkOverride "rsa" "4.0" "1a836406405730121ae9823e19c6e806c62bbad73f890574fff50efa4122c487")
         (mkOverride "markdown" "3.1.1" "2e50876bcdd74517e7b71f3e7a76102050edec255b3983403f1a63e7c8a41e7a")
         (mkOverride "tornado" "5.1.1" "4e5158d97583502a7e2739951553cbd88a72076f152b4b11b64b9a10c4c49409")
         (mkOverride "unidecode" "0.04.21" "280a6ab88e1f2eb5af79edff450021a0d3f0448952847cd79677e55e58bad051")
         (mkOverride "sarge" "0.1.5.post0" "1c1ll7pys9vra5cfi8jxlgrgaql6c27l6inpy15aprgqhc4ck36s")
 
+        # Octoprint needs zeroconf >=0.24 <0.25. While this should be done in
+        # the mkOverride aboves, this package also has broken tests, so we need
+        # a proper override.
+        (
+          self: super: {
+            zeroconf = super.zeroconf.overrideAttrs (oldAttrs: rec {
+              version = "0.24.5";
+              src = oldAttrs.src.override {
+                inherit version;
+                sha256 = "0jpgd0rk91si93857mjrizan5gc42kj1q4fi4160qgk68la88fl9";
+              };
+              buildInputs = [ self.nose ];
+              checkPhase = "nosetests";
+            });
+          }
+        )
+
         # Built-in dependency
         (
           self: super: {
@@ -55,13 +72,13 @@ let
           self: super: {
             octoprint-firmwarecheck = self.buildPythonPackage rec {
               pname = "OctoPrint-FirmwareCheck";
-              version = "2020.06.22";
+              version = "2020.09.23";
 
               src = fetchFromGitHub {
                 owner = "OctoPrint";
                 repo = "OctoPrint-FirmwareCheck";
                 rev = version;
-                sha256 = "19y7hrgg9z8hl7cwqkvg8nc8bk0wwrsfvjd1wawy33wn60psqv1h";
+                sha256 = "1l1ajhnsc39prgk59mp93h90dgl9gh660cci00z5b5gj2h6dv1d1";
               };
               doCheck = false;
             };
@@ -72,53 +89,54 @@ let
           self: super: {
             octoprint = self.buildPythonPackage rec {
               pname = "OctoPrint";
-              version = "1.4.2";
+              version = "1.5.1";
 
               src = fetchFromGitHub {
                 owner = "OctoPrint";
                 repo = "OctoPrint";
                 rev = version;
-                sha256 = "1bblrjwkccy1ifw7lf55g3k9lq1sqzwd49vj8bfzj2w07a7qda62";
+                sha256 = "04x58cjivslsrld341ip11c50d50p2q01090nsyji0j255v986j9";
               };
 
               propagatedBuildInputs = with super; [
-                octoprint-firmwarecheck
-                octoprint-filecheck
-                markupsafe
-                tornado
-                markdown
-                rsa
-                regex
+                blinker
+                cachelib
+                click
+                emoji
+                feedparser
+                filetype
                 flask
-                jinja2
-                flask_login
                 flask-babel
                 flask_assets
-                werkzeug
+                flask_login
+                frozendict
+                future
                 itsdangerous
-                cachelib
-                pyyaml
-                pyserial
+                jinja2
+                markdown
+                markupsafe
                 netaddr
-                watchdog
-                sarge
                 netifaces
-                pylru
+                octoprint-filecheck
+                octoprint-firmwarecheck
                 pkginfo
+                psutil
+                pylru
+                pyserial
+                pyyaml
+                regex
                 requests
+                rsa
+                sarge
                 semantic-version
-                psutil
-                click
-                feedparser
-                future
-                websocket_client
-                wrapt
-                emoji
-                frozendict
                 sentry-sdk
-                filetype
+                tornado
                 unidecode
-                blinker
+                watchdog
+                websocket_client
+                werkzeug
+                wrapt
+                zeroconf
               ] ++ lib.optionals stdenv.isDarwin [ py.pkgs.appdirs ];
 
               checkInputs = with super; [ pytestCheckHook mock ddt ];
diff --git a/nixpkgs/pkgs/applications/misc/octoprint/m33-fio-one-library.patch b/nixpkgs/pkgs/applications/misc/octoprint/m33-fio-one-library.patch
deleted file mode 100644
index 24c9c4a80f5d..000000000000
--- a/nixpkgs/pkgs/applications/misc/octoprint/m33-fio-one-library.patch
+++ /dev/null
@@ -1,175 +0,0 @@
-From 314bcebfcd1759981ce12255be29d8ae68cd400b Mon Sep 17 00:00:00 2001
-From: Nikolay Amiantov <ab@fmap.me>
-Date: Wed, 23 Nov 2016 00:40:48 +0300
-Subject: [PATCH] Build and use one version of preprocessor library
-
----
- octoprint_m33fio/__init__.py   | 73 ++----------------------------------------
- shared library source/Makefile | 62 +++--------------------------------
- 2 files changed, 6 insertions(+), 129 deletions(-)
-
-diff --git a/octoprint_m33fio/__init__.py b/octoprint_m33fio/__init__.py
-index 054870a..4d5ecc1 100755
---- a/octoprint_m33fio/__init__.py
-+++ b/octoprint_m33fio/__init__.py
-@@ -1189,78 +1189,9 @@ class M33FioPlugin(
- 		# Check if using shared library or checking if it is usable
- 		if self._settings.get_boolean(["UseSharedLibrary"]) or isUsable :
- 	
--			# Check if running on Linux
--			if platform.uname()[0].startswith("Linux") :
--
--				# Check if running on a Raspberry Pi 1
--				if platform.uname()[4].startswith("armv6l") and self.getCpuHardware() == "BCM2708" :
--	
--					# Set shared library
--					self.sharedLibrary = ctypes.cdll.LoadLibrary(self._basefolder.replace("\\", "/") + "/static/libraries/preprocessor_arm1176jzf-s.so")
--	
--				# Otherwise check if running on a Raspberry Pi 2 or Raspberry Pi 3
--				elif platform.uname()[4].startswith("armv7l") and self.getCpuHardware() == "BCM2709" :
--	
--					# Set shared library
--					self.sharedLibrary = ctypes.cdll.LoadLibrary(self._basefolder.replace("\\", "/") + "/static/libraries/preprocessor_arm_cortex-a7.so")
--	
--				# Otherwise check if running on an ARM7 device
--				elif platform.uname()[4].startswith("armv7") :
--	
--					# Set shared library
--					self.sharedLibrary = ctypes.cdll.LoadLibrary(self._basefolder.replace("\\", "/") + "/static/libraries/preprocessor_arm7.so")
--	
--				# Otherwise check if using an i386 or x86-64 device
--				elif platform.uname()[4].endswith("86") or platform.uname()[4].endswith("64") :
--
--					# Check if Python is running as 32-bit
--					if platform.architecture()[0].startswith("32") :
--		
--						# Set shared library
--						self.sharedLibrary = ctypes.cdll.LoadLibrary(self._basefolder.replace("\\", "/") + "/static/libraries/preprocessor_i386.so")
--	
--					# Otherwise check if Python is running as 64-bit
--					elif platform.architecture()[0].startswith("64") :
--		
--						# Set shared library
--						self.sharedLibrary = ctypes.cdll.LoadLibrary(self._basefolder.replace("\\", "/") + "/static/libraries/preprocessor_x86-64.so")
--
--			# Otherwise check if running on Windows and using an i386 or x86-64 device
--			elif platform.uname()[0].startswith("Windows") and (platform.uname()[4].endswith("86") or platform.uname()[4].endswith("64")) :
-+			# Set shared library
-+			self.sharedLibrary = ctypes.cdll.LoadLibrary(self._basefolder.replace('\\', '/') + "/static/libraries/libpreprocessor.so")
- 
--				# Check if Python is running as 32-bit
--				if platform.architecture()[0].startswith("32") :
--	
--					# Set shared library
--					self.sharedLibrary = ctypes.cdll.LoadLibrary(self._basefolder.replace("\\", "/") + "/static/libraries/preprocessor_i386.dll")
--
--				# Otherwise check if Python is running as 64-bit
--				elif platform.architecture()[0].startswith("64") :
--	
--					# Set shared library
--					self.sharedLibrary = ctypes.cdll.LoadLibrary(self._basefolder.replace("\\", "/") + "/static/libraries/preprocessor_x86-64.dll")
--
--			# Otherwise check if running on macOS and using an i386 or x86-64 device
--			elif platform.uname()[0].startswith("Darwin") and (platform.uname()[4].endswith("86") or platform.uname()[4].endswith("64")) :
--
--				# Check if Python is running as 32-bit
--				if platform.architecture()[0].startswith("32") :
--	
--					# Set shared library
--					self.sharedLibrary = ctypes.cdll.LoadLibrary(self._basefolder.replace("\\", "/") + "/static/libraries/preprocessor_i386.dylib")
--
--				# Otherwise check if Python is running as 64-bit
--				elif platform.architecture()[0].startswith("64") :
--	
--					# Set shared library
--					self.sharedLibrary = ctypes.cdll.LoadLibrary(self._basefolder.replace("\\", "/") + "/static/libraries/preprocessor_x86-64.dylib")
--			
--			# Otherwise check if running FreeBSD
--			elif platform.uname()[0].startswith("FreeBSD") :
--			
--				# TODO: Compile FreeBSD shared library pre-processors
--				pass
--			
- 			# Check if shared library was set
- 			if self.sharedLibrary :
- 
-diff --git a/shared library source/Makefile b/shared library source/Makefile
-index 792b4f4..4c74f5c 100755
---- a/shared library source/Makefile	
-+++ b/shared library source/Makefile	
-@@ -1,68 +1,14 @@
--# Target platform options: LINUX32, LINUX64, WINDOWS32, WINDOWS64, PI, PI2, ARM7, MACOS32, MACOS64
--LIBRARY_NAME = preprocessor
--TARGET_PLATFORM = LINUX64
-+LIBRARY_NAME = libpreprocessor
- VER = .1
- 
--ifeq ($(TARGET_PLATFORM), LINUX32)
--	PROG = $(LIBRARY_NAME)_i386.so
--	CC = g++
--	CFLAGS = -fPIC -m32 -static-libgcc -O3 -Wl,-soname,$(PROG)$(VER) -static-libstdc++
--endif
--
--ifeq ($(TARGET_PLATFORM), LINUX64)
--	PROG = $(LIBRARY_NAME)_x86-64.so
--	CC = g++
--	CFLAGS = -fPIC -m64 -static-libgcc -O3 -Wl,-soname,$(PROG)$(VER) -static-libstdc++
--endif
--
--ifeq ($(TARGET_PLATFORM), WINDOWS32)
--	PROG = $(LIBRARY_NAME)_i386.dll
--	CC = i686-w64-mingw32-g++
--	CFLAGS = -static-libgcc -O3 -Wl,-soname,$(PROG)$(VER) -static-libstdc++
--endif
--
--ifeq ($(TARGET_PLATFORM), WINDOWS64)
--	PROG = $(LIBRARY_NAME)_x86-64.dll
--	CC = x86_64-w64-mingw32-g++
--	CFLAGS = -static-libgcc -O3 -Wl,-soname,$(PROG)$(VER) -static-libstdc++
--endif
--
--ifeq ($(TARGET_PLATFORM), PI)
--	PROG = $(LIBRARY_NAME)_arm1176jzf-s.so
--	CC = /opt/arm-toolchain/arm-bcm2708/arm-rpi-4.9.3-linux-gnueabihf/bin/arm-linux-gnueabihf-g++
--	CFLAGS = -fPIC -mcpu=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard -static-libgcc -O3 -Wl,-soname,$(PROG)$(VER) -static-libstdc++
--endif
--
--ifeq ($(TARGET_PLATFORM), PI2)
--	PROG = $(LIBRARY_NAME)_arm_cortex-a7.so
--	CC = /opt/arm-toolchain/arm-bcm2708/arm-rpi-4.9.3-linux-gnueabihf/bin/arm-linux-gnueabihf-g++
--	CFLAGS = -fPIC -mcpu=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard -static-libgcc -O3 -Wl,-soname,$(PROG)$(VER) -static-libstdc++
--endif
--
--ifeq ($(TARGET_PLATFORM), ARM7)
--	PROG = $(LIBRARY_NAME)_arm7.so
--	CC = /opt/arm-toolchain/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf-g++
--	CFLAGS = -fPIC -mcpu=generic-armv7-a -mfpu=vfp -mfloat-abi=hard -static-libgcc -O3 -Wl,-soname,$(PROG)$(VER) -static-libstdc++
--endif
--
--ifeq ($(TARGET_PLATFORM), MACOS32)
--	PROG = $(LIBRARY_NAME)_i386.dylib
--	CC = clang++
--	CFLAGS = -fPIC -m32 -stdlib=libc++ -O3 -Wl,-install_name,$(PROG)$(VER)
--
--endif
--
--ifeq ($(TARGET_PLATFORM), MACOS64)
--	PROG = $(LIBRARY_NAME)_x86-64.dylib
--	CC = clang++
--	CFLAGS = -fPIC -m64 -stdlib=libc++ -O3 -Wl,-install_name,$(PROG)$(VER)
--endif
-+PROG = $(LIBRARY_NAME).so
-+CFLAGS = -fPIC -O3 -Wl,-soname,$(PROG)$(VER)
- 
- SRCS = preprocessor.cpp gcode.cpp vector.cpp
- CFLAGS += -Wall -std=c++11 -fvisibility=hidden -shared
- 
- all:
--	$(CC) $(CFLAGS) -o ../octoprint_m33fio/static/libraries/$(PROG) $(SRCS)
-+	$(CXX) $(CFLAGS) -o ../octoprint_m33fio/static/libraries/$(PROG) $(SRCS)
- 
- clean:
- 	rm -f ../octoprint_m33fio/static/libraries/$(PROG)
--- 
-2.14.1
-
diff --git a/nixpkgs/pkgs/applications/misc/octoprint/plugins.nix b/nixpkgs/pkgs/applications/misc/octoprint/plugins.nix
index ddf68b6f7c38..421690f29d46 100644
--- a/nixpkgs/pkgs/applications/misc/octoprint/plugins.nix
+++ b/nixpkgs/pkgs/applications/misc/octoprint/plugins.nix
@@ -13,132 +13,166 @@ self: super: let
 in {
   inherit buildPlugin;
 
-  # Deprecated alias
-  m3d-fio = self.m33-fio; # added 2016-08-13
+  abl-expert = buildPlugin rec {
+    pname = "ABL_Expert";
+    version = "0.6";
 
-  m33-fio = buildPlugin rec {
-    pname = "M33-Fio";
-    version = "1.21";
+    src = fetchgit {
+      url = "https://framagit.org/razer/Octoprint_ABL_Expert/";
+      rev = version;
+      sha256 = "0ij3rvdwya1sbymwm5swlh2j4jagb6fal945g88zrzh5xf26hzjh";
+    };
 
-    src = fetchFromGitHub {
-      owner = "donovan6000";
-      repo = "M33-Fio";
-      rev = "V${version}";
-      sha256 = "1la3611kkqn8yiwjn6cizc45ri8pnk6ckld1na4nk6mqk88jvjq7";
+    meta = with stdenv.lib; {
+      description = "Marlin auto bed leveling control, mesh correction, and z probe handling";
+      homepage = "https://framagit.org/razer/Octoprint_ABL_Expert/";
+      license = licenses.agpl3;
+      maintainers = with maintainers; [ WhittlesJr ];
     };
+  };
 
-    patches = [
-      ./m33-fio-one-library.patch
-    ];
+  bedlevelvisualizer = buildPlugin rec {
+    pname = "BedLevelVisualizer";
+    version = "0.1.15";
 
-    postPatch = ''
-      rm -rf octoprint_m33fio/static/libraries/*
-      (
-        cd 'shared library source'
-        make
-      )
-    '';
+    src = fetchFromGitHub {
+      owner = "jneilliii";
+      repo = "OctoPrint-${pname}";
+      rev = version;
+      sha256 = "1bq39fnarnpk8phxfbpx6l4n9anf358z1cgid5r89nadmn2a0cny";
+    };
+
+    propagatedBuildInputs = with super; [ numpy ];
 
     meta = with stdenv.lib; {
-      description = "OctoPrint plugin for the Micro 3D printer";
-      homepage = "https://github.com/donovan6000/M33-Fio";
-      license = licenses.gpl3;
-      maintainers = with maintainers; [ abbradar ];
+      description = "Displays 3D mesh of bed topography report";
+      homepage = "https://github.com/jneilliii/OctoPrint-BedLevelVisualizer";
+      license = licenses.agpl3;
+      maintainers = with maintainers; [ lovesegfault ];
     };
   };
 
-  mqtt = buildPlugin rec {
-    pname = "MQTT";
-    version = "0.8.6";
+  curaenginelegacy = buildPlugin rec {
+    pname = "CuraEngineLegacy";
+    version = "1.1.1";
 
     src = fetchFromGitHub {
       owner = "OctoPrint";
-      repo = "OctoPrint-MQTT";
+      repo = "OctoPrint-${pname}";
       rev = version;
-      sha256 = "0y1jnfplcy8mh3szrfbbvngl02j49cbdizglrfsry4fvqg50zjxd";
+      sha256 = "1a7pxlmj1a7blkv97sn1k390pbjcxx2860011pbjcdnli74zpvv5";
     };
 
-    propagatedBuildInputs = with super; [ paho-mqtt ];
-
     meta = with stdenv.lib; {
-      description = "Publish printer status MQTT";
-      homepage = "https://github.com/OctoPrint/OctoPrint-MQTT";
+      description = "Plugin for slicing via Cura Legacy from within OctoPrint";
+      homepage = "https://github.com/OctoPrint/OctoPrint-CuraEngineLegacy";
       license = licenses.agpl3;
-      maintainers = with maintainers; [ peterhoeg ];
+      maintainers = with maintainers; [ gebner ];
     };
   };
 
-  titlestatus = buildPlugin rec {
-    pname = "TitleStatus";
-    version = "0.0.4";
+  displaylayerprogress = buildPlugin rec {
+    pname = "OctoPrint-DisplayLayerProgress";
+    version = "1.24.0";
 
     src = fetchFromGitHub {
-      owner = "MoonshineSG";
-      repo = "OctoPrint-TitleStatus";
+      owner = "OllisGit";
+      repo = pname;
       rev = version;
-      sha256 = "1l78xrabn5hcly2mgxwi17nwgnp2s6jxi9iy4wnw8k8icv74ag7k";
+      sha256 = "1lbivg3rcjzv8zqvp8n8gcaczxdm7gvd5ihjb6jq0fgf958lv59n";
     };
 
     meta = with stdenv.lib; {
-      description = "Show printers status in window title";
-      homepage = "https://github.com/MoonshineSG/OctoPrint-TitleStatus";
+      description = "OctoPrint-Plugin that sends the current progress of a print via M117 command";
+      homepage = "https://github.com/OllisGit/OctoPrint-DisplayLayerProgress";
       license = licenses.agpl3;
-      maintainers = with maintainers; [ abbradar ];
+      maintainers = with maintainers; [ j0hax ];
     };
   };
 
-  stlviewer = buildPlugin rec {
-    pname = "STLViewer";
-    version = "0.4.2";
+  gcodeeditor = buildPlugin rec {
+    pname = "GcodeEditor";
+    version = "0.2.9";
 
     src = fetchFromGitHub {
-      owner = "jneilliii";
-      repo = "OctoPrint-STLViewer";
+      owner = "ieatacid";
+      repo = "OctoPrint-${pname}";
       rev = version;
-      sha256 = "0mkvh44fn2ch4z2avsdjwi1rp353ylmk9j5fln4x7rx8ph8y7g2b";
+      sha256 = "1yjj9lmxbzmzrn7gahw9lj7554fphalbjjp8ns0rr9py3rshwxkm";
     };
 
     meta = with stdenv.lib; {
-      description = "A simple stl viewer tab for OctoPrint";
-      homepage = "https://github.com/jneilliii/Octoprint-STLViewer";
+      description = "Edit gcode on OctoPrint";
+      homepage = "https://github.com/ieatacid/OctoPrint-GcodeEditor";
       license = licenses.agpl3;
-      maintainers = with maintainers; [ abbradar ];
+      maintainers = with maintainers; [ WhittlesJr ];
     };
   };
 
-  curaenginelegacy = buildPlugin rec {
-    pname = "CuraEngineLegacy";
-    version = "1.0.2";
+  marlingcodedocumentation = buildPlugin rec {
+    pname = "MarlinGcodeDocumentation";
+    version = "0.11.0";
+
+    src = fetchFromGitHub {
+      owner = "costas-basdekis";
+      repo = pname;
+      rev = "v${version}";
+      sha256 = "0vx06w9hqwy0k4r8g67y8gdckfdx7wl8ghfx6hmxc1s8fgkghfkc";
+    };
+
+    meta = with stdenv.lib; {
+      description = "Displays GCode documentation for Marlin in the Octoprint terminal command line";
+      homepage = "https://github.com/costas-basdekis/MarlinGcodeDocumentation";
+      license = licenses.agpl3;
+      maintainers = with maintainers; [ lovesegfault ];
+    };
+  };
+
+  mqtt = buildPlugin rec {
+    pname = "MQTT";
+    version = "0.8.7";
 
     src = fetchFromGitHub {
       owner = "OctoPrint";
-      repo = "OctoPrint-${pname}";
+      repo = "OctoPrint-MQTT";
       rev = version;
-      sha256 = "1cdb276wfyf3wcfj5g3migd6b6aqmkrxncrqjfcfx4j4k3xac965";
+      sha256 = "0k82h7wafbcqdvk5wjw4dp9lydwszfj1lf8vvymwbqdn7pf5h0dy";
     };
 
+    propagatedBuildInputs = with super; [ paho-mqtt ];
+
     meta = with stdenv.lib; {
-      description = "Plugin for slicing via Cura Legacy from within OctoPrint";
-      homepage = "https://github.com/OctoPrint/OctoPrint-CuraEngineLegacy";
+      description = "Publish printer status MQTT";
+      homepage = "https://github.com/OctoPrint/OctoPrint-MQTT";
       license = licenses.agpl3;
-      maintainers = with maintainers; [ gebner ];
+      maintainers = with maintainers; [ peterhoeg ];
     };
   };
 
-  touchui = buildPlugin rec {
-    pname = "TouchUI";
-    version = "0.3.14";
+  printtimegenius = buildPlugin rec {
+    pname = "PrintTimeGenius";
+    version = "2.2.6";
 
     src = fetchFromGitHub {
-      owner = "BillyBlaze";
+      owner = "eyal0";
       repo = "OctoPrint-${pname}";
       rev = version;
-      sha256 = "033b9nk3kpnmjw9nggcaxy39hcgfviykcy2cx0j6m411agvmqbzf";
+      sha256 = "04zfgd3x3lbriyzwhpqnwdcfdm19fsqgsb7l2ix5d0ssmqxwg2r6";
     };
 
+    preConfigure = ''
+      # PrintTimeGenius ships with marlin-calc binaries for multiple architectures
+      rm */analyzers/marlin-calc*
+      sed 's@"{}.{}".format(binary_base_name, machine)@"${pkgs.marlin-calc}/bin/marlin-calc"@' -i */analyzers/analyze_progress.py
+    '';
+
+    patches = [
+      ./printtimegenius-logging.patch
+    ];
+
     meta = with stdenv.lib; {
-      description = "Touch friendly interface for a small TFT module or phone for OctoPrint";
-      homepage = "https://github.com/BillyBlaze/OctoPrint-TouchUI";
+      description = "Better print time estimation for OctoPrint";
+      homepage = "https://github.com/eyal0/OctoPrint-PrintTimeGenius";
       license = licenses.agpl3;
       maintainers = with maintainers; [ gebner ];
     };
@@ -168,119 +202,129 @@ in {
     };
   };
 
-  printtimegenius = buildPlugin rec {
-    pname = "PrintTimeGenius";
-    version = "2.2.1";
+  simpleemergencystop = buildPlugin rec {
+    pname = "SimpleEmergencyStop";
+    version = "1.0.3";
 
     src = fetchFromGitHub {
-      owner = "eyal0";
+      owner = "Sebclem";
       repo = "OctoPrint-${pname}";
       rev = version;
-      sha256 = "1dr93vbpxgxw3b1q4rwam8f4dmiwr5vnfr9796g6jx8xkpfzzy1h";
+      sha256 = "0hhh5grmn32abkix1b9fr1d0pcpdi2r066iypcxdxcza9qzwjiyi";
     };
 
-    preConfigure = ''
-      # PrintTimeGenius ships with marlin-calc binaries for multiple architectures
-      rm */analyzers/marlin-calc*
-      sed 's@"{}.{}".format(binary_base_name, machine)@"${pkgs.marlin-calc}/bin/marlin-calc"@' -i */analyzers/analyze_progress.py
-    '';
+    meta = with stdenv.lib; {
+      description = "A simple plugin that add an emergency stop buton on NavBar of OctoPrint";
+      homepage = "https://github.com/Sebclem/OctoPrint-SimpleEmergencyStop";
+      license = licenses.agpl3;
+      maintainers = with maintainers; [ WhittlesJr ];
+    };
+  };
 
-    patches = [
-      ./printtimegenius-logging.patch
-    ];
+  stlviewer = buildPlugin rec {
+    pname = "STLViewer";
+    version = "0.4.2";
+
+    src = fetchFromGitHub {
+      owner = "jneilliii";
+      repo = "OctoPrint-STLViewer";
+      rev = version;
+      sha256 = "0mkvh44fn2ch4z2avsdjwi1rp353ylmk9j5fln4x7rx8ph8y7g2b";
+    };
 
     meta = with stdenv.lib; {
-      description = "Better print time estimation for OctoPrint";
-      homepage = "https://github.com/eyal0/OctoPrint-PrintTimeGenius";
+      description = "A simple stl viewer tab for OctoPrint";
+      homepage = "https://github.com/jneilliii/Octoprint-STLViewer";
       license = licenses.agpl3;
-      maintainers = with maintainers; [ gebner ];
+      maintainers = with maintainers; [ abbradar ];
     };
   };
 
-  abl-expert = buildPlugin rec {
-    pname = "ABL_Expert";
-    version = "2019-12-21";
+  themeify = buildPlugin rec {
+    pname = "Themeify";
+    version = "1.2.2";
 
-    src = fetchgit {
-      url = "https://framagit.org/razer/Octoprint_ABL_Expert/";
-      rev = "f11fbe05088ad618bfd9d064ac3881faec223f33";
-      sha256 = "026r4prkyvwzxag5pv36455q7s3gaig37nmr2nbvhwq3d2lbi5s4";
+    src = fetchFromGitHub {
+      owner = "Birkbjo";
+      repo = "Octoprint-${pname}";
+      rev = "v${version}";
+      sha256 = "0j1qs6kyh947npdy7pqda25fjkqinpas3sy0qyscqlxi558lhvx2";
     };
 
     meta = with stdenv.lib; {
-      description = "Marlin auto bed leveling control, mesh correction, and z probe handling";
-      homepage = "https://framagit.org/razer/Octoprint_ABL_Expert/";
+      description = "Beautiful themes for OctoPrint";
+      homepage = "https://github.com/birkbjo/OctoPrint-Themeify";
       license = licenses.agpl3;
-      maintainers = with maintainers; [ WhittlesJr ];
+      maintainers = with maintainers; [ lovesegfault ];
     };
   };
 
-  gcodeeditor = buildPlugin rec {
-    pname = "GcodeEditor";
-    version = "0.2.6";
+  titlestatus = buildPlugin rec {
+    pname = "TitleStatus";
+    version = "0.0.5";
 
     src = fetchFromGitHub {
-      owner = "ieatacid";
-      repo = "OctoPrint-${pname}";
+      owner = "MoonshineSG";
+      repo = "OctoPrint-TitleStatus";
       rev = version;
-      sha256 = "0c6p78r3vd6ys3kld308pyln09zjbr9yif1ljvcx6wlml2i5l1vh";
+      sha256 = "10nxjrixg0i6n6x8ghc1ndshm25c97bvkcis5j9kmlkkzs36i2c6";
     };
 
     meta = with stdenv.lib; {
-      description = "Edit gcode on OctoPrint";
-      homepage = "https://github.com/ieatacid/OctoPrint-GcodeEditor";
+      description = "Show printers status in window title";
+      homepage = "https://github.com/MoonshineSG/OctoPrint-TitleStatus";
       license = licenses.agpl3;
-      maintainers = with maintainers; [ WhittlesJr ];
+      maintainers = with maintainers; [ abbradar ];
     };
   };
 
-  simpleemergencystop = buildPlugin rec {
-    pname = "SimpleEmergencyStop";
-    version = "0.2.5";
+  touchui = buildPlugin rec {
+    pname = "TouchUI";
+    version = "0.3.16";
 
     src = fetchFromGitHub {
-      owner = "Sebclem";
+      owner = "BillyBlaze";
       repo = "OctoPrint-${pname}";
       rev = version;
-      sha256 = "10wadv09wv2h96igvq3byw9hz1si82n3c7v5y0ii3j7hm2d06y8p";
+      sha256 = "1jlqjirc4ygl4k7jp93l2h6b18jap3mzz8sf2g61j9w0kgv9l365";
     };
 
     meta = with stdenv.lib; {
-      description = "A simple plugin that add an emergency stop buton on NavBar of OctoPrint";
-      homepage = "https://github.com/Sebclem/OctoPrint-SimpleEmergencyStop";
+      description = "Touch friendly interface for a small TFT module or phone for OctoPrint";
+      homepage = "https://github.com/BillyBlaze/OctoPrint-TouchUI";
       license = licenses.agpl3;
-      maintainers = with maintainers; [ WhittlesJr ];
+      maintainers = with maintainers; [ gebner ];
     };
   };
 
-  displaylayerprogress = buildPlugin rec {
-    pname = "OctoPrint-DisplayLayerProgress";
-    version = "1.23.2";
+  octoklipper = buildPlugin rec {
+    pname = "OctoKlipper";
+    version = "0.3.2";
 
     src = fetchFromGitHub {
-      owner = "OllisGit";
-      repo = pname;
+      owner = "AliceGrey";
+      repo = "OctoprintKlipperPlugin";
       rev = version;
-      sha256 = "0yv8gy5dq0rl7zxkvqa98az391aiixl8wbzkyvbmpjar9r6whdzm";
+      sha256 = "15yg2blbgqp2gdpsqqm8qiiznq5qaq8wss07jimkl0865vrvlz7l";
     };
 
     meta = with stdenv.lib; {
-      description = "OctoPrint-Plugin that sends the current progress of a print via M117 command";
-      homepage = "https://github.com/OllisGit/OctoPrint-DisplayLayerProgress";
+      description = "A plugin for a better integration of Klipper into OctoPrint";
+      homepage = "https://github.com/AliceGrey/OctoprintKlipperPlugin";
       license = licenses.agpl3;
-      maintainers = with maintainers; [ j0hax ];
+      maintainers = with maintainers; [ lovesegfault ];
     };
   };
 
   octoprint-dashboard = buildPlugin rec {
     pname = "OctoPrint-Dashboard";
-    version = "1.13.0";
+    version = "1.15.2";
 
     src = fetchFromGitHub {
       owner = "StefanCohen";
       repo = pname;
       rev = version;
-      sha256 = "1879l05gkkryvhxkmhr3xvd10d4m7i0cr3jk1gdcv47xwyr6q9pf";
+      sha256 = "0p94jwd7kagh3sixhcrqmsgbay4aaf9l1pgyi2b45jym8pvld5n4";
     };
 
     meta = with stdenv.lib; {