{ stdenv, python3, makeDesktopItem }:

let

  spyder-kernels = with python3.pkgs; buildPythonPackage rec {
    pname = "spyder-kernels";
    version = "0.4.2";

    src = fetchPypi {
      inherit pname version;
      sha256 = "a13cefb569ef9f63814cb5fcf3d0db66e09d2d7e6cc68c703d5118b2d7ba062b";
    };

    propagatedBuildInputs = [
      cloudpickle
      ipykernel
      wurlitzer
    ];

    # No tests
    doCheck = false;

    meta = {
      description = "Jupyter kernels for Spyder's console";
      homepage = https://github.com/spyder-ide/spyder-kernels;
      license = stdenv.lib.licenses.mit;
    };
  };

in python3.pkgs.buildPythonApplication rec {
  pname = "spyder";
  version = "3.3.3";

  src = python3.pkgs.fetchPypi {
    inherit pname version;
    sha256 = "ef31de03cf6f149077e64ed5736b8797dbd278e3c925e43f0bfc31bb55f6e5ba";
  };

  propagatedBuildInputs = with python3.pkgs; [
    jedi pycodestyle psutil pyflakes rope numpy scipy matplotlib pylint keyring
    numpydoc qtconsole qtawesome nbconvert mccabe pyopengl cloudpickle spyder-kernels
  ];

  # There is no test for spyder
  doCheck = false;

  desktopItem = makeDesktopItem {
    name = "Spyder";
    exec = "spyder";
    icon = "spyder";
    comment = "Scientific Python Development Environment";
    desktopName = "Spyder";
    genericName = "Python IDE";
    categories = "Application;Development;Editor;IDE;";
  };

  # Create desktop item
  postInstall = ''
    mkdir -p $out/share/icons
    cp spyder/images/spyder.svg $out/share/icons
    cp -r $desktopItem/share/applications/ $out/share
  '';

  meta = with stdenv.lib; {
    description = "Scientific python development environment";
    longDescription = ''
      Spyder (previously known as Pydee) is a powerful interactive development
      environment for the Python language with advanced editing, interactive
      testing, debugging and introspection features.
    '';
    homepage = https://github.com/spyder-ide/spyder/;
    license = licenses.mit;
    platforms = platforms.linux;
  };
}