anchor.diff:        -e 's,PyYAML>=[^"]*,PyYAML,g' \
         -e 's,scandir>=[^"]*,scandir,g' \
         -e 's,werkzeug>=[^"]*,werkzeug,g' \
  -      -e 's,psutil>=[^"]*,psutil,g' \
  +      -e 's,psutil==[^"]*,psutil,g' \
         -e 's,requests>=[^"]*,requests,g' \
         -e 's,future>=[^"]*,future,g' \
         -e 's,pyserial>=[^"]*,pyserial,g' \
  
positive.code:   };
  
  in pythonPackages.buildPythonApplication rec {
    name = "OctoPrint-${version}";
    version = "1.3.6";
  
    src = fetchFromGitHub {
      owner = "foosel";
      repo = "OctoPrint";
      rev = version;
      sha256 = "0pgpkjw5zjnks5bky51gjaksq8mhrzkl52kpgf799hl35pd08xr3";
    };
  
    # We need old Tornado
  
negative.code:     psutil pyserial flask_login netaddr markdown sockjs-tornado
      pylru pyyaml sarge feedparser netifaces click websocket_client
      scandir chainmap future dateutil futures wrapt monotonic emoji
      frozendict
    ];
  
    checkInputs = with pythonPackages; [ nose mock ddt ];
  
    # Jailbreak dependencies.
    postPatch = ''
  