summary refs log tree commit diff
path: root/pkgs/applications/editors
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/applications/editors')
-rw-r--r--pkgs/applications/editors/android-studio/default.nix6
-rw-r--r--pkgs/applications/editors/emacs-modes/elpa-packages.nix2
-rw-r--r--pkgs/applications/editors/emacs-modes/emacs-libvterm/default.nix57
-rw-r--r--pkgs/applications/editors/emacs-modes/manual-packages.nix145
-rw-r--r--pkgs/applications/editors/emacs-modes/melpa-packages.nix585
-rw-r--r--pkgs/applications/editors/emacs-modes/melpa-stable-packages.nix235
-rw-r--r--pkgs/applications/editors/emacs-modes/nyan-mode/default.nix30
-rw-r--r--pkgs/applications/editors/emacs-modes/nyan-mode/directory.patch13
-rw-r--r--pkgs/applications/editors/emacs-modes/org-packages.nix2
-rw-r--r--pkgs/applications/editors/emacs-modes/redshank/default.nix23
-rw-r--r--pkgs/applications/editors/emacs-modes/stgit/default.nix25
-rwxr-xr-xpkgs/applications/editors/emacs-modes/update-melpa8
-rw-r--r--pkgs/applications/editors/emacs-modes/updater-emacs.nix65
-rw-r--r--pkgs/applications/editors/gnome-builder/default.nix4
-rw-r--r--pkgs/applications/editors/jetbrains/default.nix8
-rw-r--r--pkgs/applications/editors/kakoune/default.nix9
-rw-r--r--pkgs/applications/editors/neovim/qt.nix10
-rw-r--r--pkgs/applications/editors/quilter/default.nix6
-rw-r--r--pkgs/applications/editors/rednotebook/default.nix8
-rw-r--r--pkgs/applications/editors/thonny/default.nix4
-rw-r--r--pkgs/applications/editors/typora/default.nix10
21 files changed, 598 insertions, 657 deletions
diff --git a/pkgs/applications/editors/android-studio/default.nix b/pkgs/applications/editors/android-studio/default.nix
index 63c6d26df8e..794a881090c 100644
--- a/pkgs/applications/editors/android-studio/default.nix
+++ b/pkgs/applications/editors/android-studio/default.nix
@@ -13,9 +13,9 @@ let
     sha256Hash = "090rc307mfm0yw4h592l9307lq4aas8zq0ci49csn6kxhds8rsrm";
   };
   betaVersion = {
-    version = "3.5.0.18"; # "Android Studio 3.5 RC 1"
-    build = "191.5717577";
-    sha256Hash = "1p0w7xrfk33m1wvwnc3s3s7w9rm8wn9b3bjn566w2qpjv5ngdkn3";
+    version = "3.5.0.19"; # "Android Studio 3.5 RC 2"
+    build = "191.5763348";
+    sha256Hash = "0z7mjpk0cqwk4ysd3cdsahlg70ax90353qvvag9wgyzl2x2sr6d2";
   };
   latestVersion = { # canary & dev
     version = "3.6.0.3"; # "Android Studio 3.6 Canary 3"
diff --git a/pkgs/applications/editors/emacs-modes/elpa-packages.nix b/pkgs/applications/editors/emacs-modes/elpa-packages.nix
index 9c08e91af41..e7ed5a32b65 100644
--- a/pkgs/applications/editors/emacs-modes/elpa-packages.nix
+++ b/pkgs/applications/editors/emacs-modes/elpa-packages.nix
@@ -50,4 +50,4 @@ self:
 
     elpaPackages = super // overrides;
 
-  in elpaPackages // { inherit elpaBuild elpaPackages; }
+  in elpaPackages // { inherit elpaBuild; }
diff --git a/pkgs/applications/editors/emacs-modes/emacs-libvterm/default.nix b/pkgs/applications/editors/emacs-modes/emacs-libvterm/default.nix
deleted file mode 100644
index ba54b9404a0..00000000000
--- a/pkgs/applications/editors/emacs-modes/emacs-libvterm/default.nix
+++ /dev/null
@@ -1,57 +0,0 @@
-{ stdenv, fetchFromGitHub, cmake, emacs, libvterm-neovim }:
-
-let
-  emacsSources = stdenv.mkDerivation {
-    name = emacs.name + "-sources";
-    src = emacs.src;
-
-    dontConfigure = true;
-    dontBuild = true;
-    doCheck = false;
-    fixupPhase = ":";
-
-    installPhase = ''
-      mkdir -p $out
-      cp -a * $out
-    '';
-
-  };
-
-  libvterm = libvterm-neovim.overrideAttrs(old: rec {
-    pname = "libvterm-neovim";
-    version = "2019-04-27";
-    name = pname + "-" + version;
-    src = fetchFromGitHub {
-      owner = "neovim";
-      repo = "libvterm";
-      rev = "89675ffdda615ffc3f29d1c47a933f4f44183364";
-      sha256 = "0l9ixbj516vl41v78fi302ws655xawl7s94gmx1kb3fmfgamqisy";
-    };
-  });
-
-
-in stdenv.mkDerivation rec {
-  name = "emacs-libvterm-${version}";
-  version = "unstable-2019-07-22";
-
-  src = fetchFromGitHub {
-    owner = "akermu";
-    repo = "emacs-libvterm";
-    rev = "301fe9fdfd5fb2496c8428a11e0812fd8a4c0820";
-    sha256 = "0i1hn5gcxayqcbjrnpgczvbicq2vsyn59646ary3crs0mz9wlbpr";
-  };
-
-  nativeBuildInputs = [ cmake ];
-  buildInputs = [ emacs libvterm ];
-
-  cmakeFlags = [
-    "-DEMACS_SOURCE=${emacsSources}"
-    "-DUSE_SYSTEM_LIBVTERM=True"
-  ];
-
-  installPhase = ''
-    install -d $out/share/emacs/site-lisp
-    install ../*.el $out/share/emacs/site-lisp
-    install ../*.so $out/share/emacs/site-lisp
-  '';
-}
diff --git a/pkgs/applications/editors/emacs-modes/manual-packages.nix b/pkgs/applications/editors/emacs-modes/manual-packages.nix
new file mode 100644
index 00000000000..7f75de74ed6
--- /dev/null
+++ b/pkgs/applications/editors/emacs-modes/manual-packages.nix
@@ -0,0 +1,145 @@
+{ lib, external, pkgs }: self: with self; with lib.licenses; {
+
+  elisp-ffi = melpaBuild rec {
+    pname = "elisp-ffi";
+    version = "1.0.0";
+    src = pkgs.fetchFromGitHub {
+      owner = "skeeto";
+      repo = "elisp-ffi";
+      rev = "${version}";
+      sha256 = "0z2n3h5l5fj8wl8i1ilfzv11l3zba14sgph6gz7dx7q12cnp9j22";
+    };
+    buildInputs = [ external.libffi ];
+    preBuild = "make";
+    recipe = pkgs.writeText "recipe" ''
+      (elisp-ffi
+      :repo "skeeto/elisp-ffi"
+      :fetcher github
+      :files ("ffi-glue" "ffi.el"))
+    '';
+    meta = {
+      description = "Emacs Lisp Foreign Function Interface";
+      longDescription = ''
+        This library provides an FFI for Emacs Lisp so that Emacs
+        programs can invoke functions in native libraries. It works by
+        driving a subprocess to do the heavy lifting, passing result
+        values on to Emacs.
+      '';
+      license = publicDomain;
+    };
+  };
+
+  agda2-mode = with external; trivialBuild {
+    pname = "agda-mode";
+    version = Agda.version;
+
+    phases = [ "buildPhase" "installPhase" ];
+
+    # already byte-compiled by Agda builder
+    buildPhase = ''
+      agda=`${Agda}/bin/agda-mode locate`
+      cp `dirname $agda`/*.el* .
+    '';
+
+    meta = {
+      description = "Agda2-mode for Emacs extracted from Agda package";
+      longDescription = ''
+        Wrapper packages that liberates init.el from `agda-mode locate` magic.
+        Simply add this to user profile or systemPackages and do `(require 'agda2)` in init.el.
+      '';
+      homepage = Agda.meta.homepage;
+      license = Agda.meta.license;
+    };
+  };
+
+  ess-R-object-popup =
+    callPackage ./ess-R-object-popup { };
+
+  filesets-plus = callPackage ./filesets-plus { };
+
+  font-lock-plus = callPackage ./font-lock-plus { };
+
+  ghc-mod = melpaBuild rec {
+    pname = "ghc";
+    version = external.ghc-mod.version;
+    src = external.ghc-mod.src;
+    packageRequires = [ haskell-mode ];
+    propagatedUserEnvPkgs = [ external.ghc-mod ];
+    recipe = pkgs.writeText "recipe" ''
+      (ghc-mod :repo "DanielG/ghc-mod" :fetcher github :files ("elisp/*.el"))
+    '';
+    fileSpecs = [ "elisp/*.el" ];
+    meta = {
+      description = "An extension of haskell-mode that provides completion of symbols and documentation browsing";
+      license = bsd3;
+    };
+  };
+
+  haskell-unicode-input-method = melpaBuild rec {
+    pname = "emacs-haskell-unicode-input-method";
+    version = "20110905.2307";
+    src = pkgs.fetchFromGitHub {
+      owner = "roelvandijk";
+      repo = "emacs-haskell-unicode-input-method";
+      rev = "d8d168148c187ed19350bb7a1a190217c2915a63";
+      sha256 = "09b7bg2s9aa4s8f2kdqs4xps3jxkq5wsvbi87ih8b6id38blhf78";
+    };
+    recipe = pkgs.writeText "recipe" ''
+      (haskell-unicode-input-method
+       :repo "roelvandijk/emacs-haskell-unicode-input-method"
+       :fetcher github)
+    '';
+    packageRequires = [];
+    meta = {
+      homepage = "https://melpa.org/#haskell-unicode-input-method/";
+      license = lib.licenses.free;
+    };
+  };
+
+  hexrgb = callPackage ./hexrgb { };
+
+  header2 = callPackage ./header2 { };
+
+  helm-words = callPackage ./helm-words { };
+
+  icicles = callPackage ./icicles { };
+
+  rtags = melpaBuild rec {
+    inherit (external.rtags) version src meta;
+
+    pname = "rtags";
+
+    dontConfigure = true;
+
+    propagatedUserEnvPkgs = [ external.rtags ];
+    recipe = pkgs.writeText "recipe" ''
+      (rtags
+       :repo "andersbakken/rtags" :fetcher github
+       :files ("src/*.el"))
+    '';
+  };
+
+  lib-requires =
+    callPackage ./lib-requires { };
+
+  org-mac-link =
+    callPackage ./org-mac-link { };
+
+  perl-completion =
+    callPackage ./perl-completion { };
+
+  railgun = callPackage ./railgun { };
+
+  gn = callPackage ./gn { };
+
+  structured-haskell-mode = self.shm;
+
+  thingatpt-plus = callPackage ./thingatpt-plus { };
+
+  tramp = callPackage ./tramp { };
+
+  yaoddmuse = callPackage ./yaoddmuse { };
+
+  zeitgeist = callPackage ./zeitgeist { };
+
+}
diff --git a/pkgs/applications/editors/emacs-modes/melpa-packages.nix b/pkgs/applications/editors/emacs-modes/melpa-packages.nix
index 527a82aa469..24e541f2695 100644
--- a/pkgs/applications/editors/emacs-modes/melpa-packages.nix
+++ b/pkgs/applications/editors/emacs-modes/melpa-packages.nix
@@ -12,289 +12,450 @@ env NIXPKGS_ALLOW_BROKEN=1 nix-instantiate --show-trace ../../../../ -A emacsPac
 
 */
 
-{ lib, external }:
+{ lib, external, pkgs }: variant: self: let
 
-self:
-
-  let
-    inherit (import ./libgenerated.nix lib self) melpaDerivation;
-    imported = lib.listToAttrs (map (melpaDerivation "unstable")
-                                    (lib.importJSON ./recipes-archive-melpa.json));
-    super = builtins.removeAttrs imported [
-      "swbuff-x" # required dependency swbuff is missing
-    ];
-
-    dontConfigure = pkg: pkg.override (args: {
-      melpaBuild = drv: args.melpaBuild (drv // {
-        configureScript = "true";
-      });
+  dontConfigure = pkg: if pkg != null then pkg.override (args: {
+    melpaBuild = drv: args.melpaBuild (drv // {
+      configureScript = "true";
     });
+  }) else null;
 
-    markBroken = pkg: pkg.override (args: {
-      melpaBuild = drv: args.melpaBuild (drv // {
-        meta = (drv.meta or {}) // { broken = true; };
-      });
+  markBroken = pkg: if pkg != null then pkg.override (args: {
+    melpaBuild = drv: args.melpaBuild (drv // {
+      meta = (drv.meta or {}) // { broken = true; };
     });
+  }) else null;
 
-    overrides = {
-      # Expects bash to be at /bin/bash
-      ac-rtags = markBroken super.ac-rtags;
+  generateMelpa = lib.makeOverridable ({
+    archiveJson ? ./recipes-archive-melpa.json
+  }: let
 
-      # upstream issue: mismatched filename
-      ack-menu = markBroken super.ack-menu;
+    inherit (import ./libgenerated.nix lib self) melpaDerivation;
+    super = lib.listToAttrs (map (melpaDerivation variant) (lib.importJSON archiveJson));
 
-      airline-themes = super.airline-themes.override {
-        inherit (self.melpaPackages) powerline;
-      };
+    generic = import ./melpa-generic.nix;
 
-      # upstream issue: missing file header
-      bufshow = markBroken super.bufshow;
+    overrides = rec {
+      shared = {
+        # Expects bash to be at /bin/bash
+        ac-rtags = markBroken super.ac-rtags;
 
-      # part of a larger package
-      caml = dontConfigure super.caml;
+        airline-themes = super.airline-themes.override {
+          inherit (self.melpaPackages) powerline;
+        };
 
-      # Expects bash to be at /bin/bash
-      company-rtags = markBroken super.company-rtags;
+        # upstream issue: missing file header
+        bufshow = markBroken super.bufshow;
 
-      easy-kill-extras = super.easy-kill-extras.override {
-        inherit (self.melpaPackages) easy-kill;
-      };
+        # part of a larger package
+        caml = dontConfigure super.caml;
 
-      editorconfig = super.editorconfig.overrideAttrs (attrs: {
-        propagatedUserEnvPkgs = [ external.editorconfig-core-c ];
-      });
+        # Expects bash to be at /bin/bash
+        company-rtags = markBroken super.company-rtags;
 
-      egg = super.egg.overrideAttrs (attrs: {
-        # searches for Git at build time
-        nativeBuildInputs =
-          (attrs.nativeBuildInputs or []) ++ [ external.git ];
-      });
+        easy-kill-extras = super.easy-kill-extras.override {
+          inherit (self.melpaPackages) easy-kill;
+        };
 
-      # upstream issue: missing file header
-      elmine = markBroken super.elmine;
+        # upstream issue: missing file header
+        elmine = markBroken super.elmine;
 
-      ess-R-data-view = super.ess-R-data-view.override {
-        inherit (self.melpaPackages) ess ctable popup;
-      };
+        elpy = super.elpy.overrideAttrs(old: {
+          propagatedUserEnvPkgs = old.propagatedUserEnvPkgs ++ [ external.elpy ];
+        });
 
-      evil-magit = super.evil-magit.overrideAttrs (attrs: {
-        # searches for Git at build time
-        nativeBuildInputs =
-          (attrs.nativeBuildInputs or []) ++ [ external.git ];
-      });
+        evil-magit = super.evil-magit.overrideAttrs (attrs: {
+          # searches for Git at build time
+          nativeBuildInputs =
+            (attrs.nativeBuildInputs or []) ++ [ external.git ];
+        });
 
-      # missing dependencies
-      evil-search-highlight-persist = super.evil-search-highlight-persist.overrideAttrs (attrs: {
-        packageRequires = with self; [ evil highlight ];
-      });
+        ess-R-data-view = super.ess-R-data-view.override {
+          inherit (self.melpaPackages) ess ctable popup;
+        };
+
+        # Expects bash to be at /bin/bash
+        flycheck-rtags = markBroken super.flycheck-rtags;
+
+        # build timeout
+        graphene = markBroken super.graphene;
+
+        pdf-tools = super.pdf-tools.overrideAttrs(old: {
+          nativeBuildInputs = [ external.pkgconfig ];
+          buildInputs = with external; old.buildInputs ++ [ autoconf automake libpng zlib poppler ];
+          preBuild = "make server/epdfinfo";
+          recipe = pkgs.writeText "recipe" ''
+            (pdf-tools
+            :repo "politza/pdf-tools" :fetcher github
+            :files ("lisp/pdf-*.el" "server/epdfinfo"))
+          '';
+        });
 
-      # Expects bash to be at /bin/bash
-      flycheck-rtags = markBroken super.flycheck-rtags;
+        # Build same version as Haskell package
+        hindent = super.hindent.overrideAttrs (attrs: {
+          version = external.hindent.version;
+          src = external.hindent.src;
+          packageRequires = [ self.haskell-mode ];
+          propagatedUserEnvPkgs = [ external.hindent ];
+        });
 
-      forge = super.forge.overrideAttrs (attrs: {
-        # searches for Git at build time
-        nativeBuildInputs =
-          (attrs.nativeBuildInputs or []) ++ [ external.git ];
-      });
+        # upstream issue: missing file header
+        ido-complete-space-or-hyphen = markBroken super.ido-complete-space-or-hyphen;
+
+        # upstream issue: missing file header
+        initsplit = markBroken super.initsplit;
+
+        irony = super.irony.overrideAttrs(old: {
+          preConfigure = ''
+            cd server
+          '';
+          preBuild = ''
+            make
+          '';
+          postInstall = ''
+            mkdir -p $out
+            mv $out/share/emacs/site-lisp/elpa/*/server/bin $out
+            rm -rf $out/share/emacs/site-lisp/elpa/*/server
+          '';
+          preCheck = ''
+            cd source/server
+          '';
+          dontUseCmakeBuildDir = true;
+          doCheck = true;
+          packageRequires = [ self.emacs ];
+          nativeBuildInputs = [ external.cmake external.llvmPackages.llvm external.llvmPackages.clang ];
+        });
 
-      # build timeout
-      graphene = markBroken super.graphene;
+        # tries to write a log file to $HOME
+        insert-shebang = super.insert-shebang.overrideAttrs (attrs: {
+          HOME = "/tmp";
+        });
 
-      # upstream issue: mismatched filename
-      helm-lobsters = markBroken super.helm-lobsters;
+        # Expects bash to be at /bin/bash
+        ivy-rtags = markBroken super.ivy-rtags;
 
-      # Expects bash to be at /bin/bash
-      helm-rtags = markBroken super.helm-rtags;
+        # upstream issue: missing file header
+        jsfmt = markBroken super.jsfmt;
 
-      # Build same version as Haskell package
-      hindent = super.hindent.overrideAttrs (attrs: {
-        version = external.hindent.version;
-        src = external.hindent.src;
-        packageRequires = [ self.haskell-mode ];
-        propagatedUserEnvPkgs = [ external.hindent ];
-      });
+        # upstream issue: missing file header
+        maxframe = markBroken super.maxframe;
 
-      # upstream issue: missing file header
-      ido-complete-space-or-hyphen = markBroken super.ido-complete-space-or-hyphen;
+        magit = super.magit.overrideAttrs (attrs: {
+          # searches for Git at build time
+          nativeBuildInputs =
+            (attrs.nativeBuildInputs or []) ++ [ external.git ];
+        });
 
-      # upstream issue: missing file header
-      initsplit = super.initsplit;
+        magit-annex = super.magit-annex.overrideAttrs (attrs: {
+          # searches for Git at build time
+          nativeBuildInputs =
+            (attrs.nativeBuildInputs or []) ++ [ external.git ];
+        });
 
-      # tries to write a log file to $HOME
-      insert-shebang = super.insert-shebang.overrideAttrs (attrs: {
-        HOME = "/tmp";
-      });
+        magit-todos = super.magit-todos.overrideAttrs (attrs: {
+          # searches for Git at build time
+          nativeBuildInputs =
+            (attrs.nativeBuildInputs or []) ++ [ external.git ];
+        });
 
-      # Expects bash to be at /bin/bash
-      ivy-rtags = markBroken super.ivy-rtags;
+        magit-filenotify = super.magit-filenotify.overrideAttrs (attrs: {
+          # searches for Git at build time
+          nativeBuildInputs =
+            (attrs.nativeBuildInputs or []) ++ [ external.git ];
+        });
 
-      # upstream issue: missing file header
-      jsfmt = markBroken super.jsfmt;
+        magit-gitflow = super.magit-gitflow.overrideAttrs (attrs: {
+          # searches for Git at build time
+          nativeBuildInputs =
+            (attrs.nativeBuildInputs or []) ++ [ external.git ];
+        });
 
-      # upstream issue: missing file header
-      maxframe = markBroken super.maxframe;
+        magithub = super.magithub.overrideAttrs (attrs: {
+          # searches for Git at build time
+          nativeBuildInputs =
+            (attrs.nativeBuildInputs or []) ++ [ external.git ];
+        });
 
-      magit =
-        super.magit.overrideAttrs (attrs: {
+        magit-svn = super.magit-svn.overrideAttrs (attrs: {
           # searches for Git at build time
           nativeBuildInputs =
             (attrs.nativeBuildInputs or []) ++ [ external.git ];
         });
 
-      magit-annex = super.magit-annex.overrideAttrs (attrs: {
+      kubernetes = super.kubernetes.overrideAttrs (attrs: {
         # searches for Git at build time
         nativeBuildInputs =
           (attrs.nativeBuildInputs or []) ++ [ external.git ];
       });
 
-      magit-gitflow = super.magit-gitflow.overrideAttrs (attrs: {
-        # searches for Git at build time
-        nativeBuildInputs =
-          (attrs.nativeBuildInputs or []) ++ [ external.git ];
-      });
+      # upstream issue: missing file header
+        mhc = super.mhc.override {
+          inherit (self.melpaPackages) calfw;
+        };
 
-      magithub = super.magithub.overrideAttrs (attrs: {
-        # searches for Git at build time
-        nativeBuildInputs =
-          (attrs.nativeBuildInputs or []) ++ [ external.git ];
-      });
+        # missing .NET
+        nemerle = markBroken super.nemerle;
 
-      magit-svn = super.magit-svn.overrideAttrs (attrs: {
-        # searches for Git at build time
-        nativeBuildInputs =
-          (attrs.nativeBuildInputs or []) ++ [ external.git ];
-      });
+        # part of a larger package
+        notmuch = dontConfigure super.notmuch;
 
-      magit-todos = super.magit-todos.overrideAttrs (attrs: {
-        # searches for Git at build time
-        nativeBuildInputs =
-          (attrs.nativeBuildInputs or []) ++ [ external.git ];
-      });
+        # missing OCaml
+        ocp-indent = markBroken super.ocp-indent;
 
-      magit-filenotify = super.magit-filenotify.overrideAttrs (attrs: {
-        # searches for Git at build time
-        nativeBuildInputs =
-          (attrs.nativeBuildInputs or []) ++ [ external.git ];
-      });
+        # upstream issue: missing file header
+        qiita = markBroken super.qiita;
 
-      mhc = super.mhc.override {
-        inherit (self.melpaPackages) calfw;
-      };
+        # upstream issue: missing file header
+        speech-tagger = markBroken super.speech-tagger;
 
-      # missing .NET
-      nemerle = markBroken super.nemerle;
+        shm = super.shm.overrideAttrs (attrs: {
+          propagatedUserEnvPkgs = [ external.structured-haskell-mode ];
+        });
 
-      # part of a larger package
-      notmuch = dontConfigure super.notmuch;
+        # upstream issue: missing file header
+        tawny-mode = markBroken super.tawny-mode;
 
-      # missing OCaml
-      ocp-indent = markBroken super.ocp-indent;
+        # upstream issue: missing file header
+        textmate = markBroken super.textmate;
 
-      orgit =
-        (super.orgit.overrideAttrs (attrs: {
-          # searches for Git at build time
+        # missing OCaml
+        utop = markBroken super.utop;
+
+        vdiff-magit = super.vdiff-magit.overrideAttrs (attrs: {
           nativeBuildInputs =
             (attrs.nativeBuildInputs or []) ++ [ external.git ];
-         }));
+        });
 
-      # tries to write to $HOME
-      php-auto-yasnippets = super.php-auto-yasnippets.overrideAttrs (attrs: {
-        HOME = "/tmp";
-      });
+        # upstream issue: missing file header
+        voca-builder = markBroken super.voca-builder;
 
-      # upstream issue: mismatched filename
-      processing-snippets = markBroken super.processing-snippets;
+        # upstream issue: missing file header
+        window-numbering = markBroken super.window-numbering;
 
-      # upstream issue: missing file header
-      qiita = markBroken super.qiita;
+        vterm = let
+          emacsSources = pkgs.stdenv.mkDerivation {
+            name = self.emacs.name + "-sources";
+            src = self.emacs.src;
 
-      racer = super.racer.overrideAttrs (attrs: {
-        postPatch = attrs.postPatch or "" + ''
-          substituteInPlace racer.el \
-            --replace /usr/local/src/rust/src ${external.rustPlatform.rustcSrc}
-        '';
-      });
+            dontConfigure = true;
+            dontBuild = true;
+            doCheck = false;
+            fixupPhase = ":";
 
-      # upstream issue: missing file footer
-      seoul256-theme = markBroken super.seoul256-theme;
+            installPhase = ''
+              mkdir -p $out
+              cp -a * $out
+            '';
+
+          };
+
+          libvterm = pkgs.libvterm-neovim.overrideAttrs(old: rec {
+            pname = "libvterm-neovim";
+            version = "2019-04-27";
+            name = pname + "-" + version;
+            src = pkgs.fetchFromGitHub {
+              owner = "neovim";
+              repo = "libvterm";
+              rev = "89675ffdda615ffc3f29d1c47a933f4f44183364";
+              sha256 = "0l9ixbj516vl41v78fi302ws655xawl7s94gmx1kb3fmfgamqisy";
+            };
+          });
+
+        in pkgs.stdenv.mkDerivation rec {
+          inherit (super.vterm) name version src;
+
+          nativeBuildInputs = [ pkgs.cmake ];
+          buildInputs = [ self.emacs libvterm ];
+
+          cmakeFlags = [
+            "-DEMACS_SOURCE=${emacsSources}"
+            "-DUSE_SYSTEM_LIBVTERM=True"
+          ];
+
+          installPhase = ''
+            install -d $out/share/emacs/site-lisp
+            install ../*.el $out/share/emacs/site-lisp
+            install ../*.so $out/share/emacs/site-lisp
+          '';
+        };
+        # Legacy alias
+        emacs-libvterm = shared.vterm;
+
+        zmq = super.zmq.overrideAttrs(old: {
+          stripDebugList = [ "share" ];
+          preBuild = ''
+            make
+          '';
+          nativeBuildInputs = [
+            external.autoconf external.automake external.pkgconfig external.libtool
+            (external.zeromq.override { enableDrafts = true; })
+          ];
+          postInstall = ''
+            mv $out/share/emacs/site-lisp/elpa/zmq-*/src/.libs/emacs-zmq.so $out/share/emacs/site-lisp/elpa/zmq-*
+            rm -r $out/share/emacs/site-lisp/elpa/zmq-*/src
+            rm $out/share/emacs/site-lisp/elpa/zmq-*/Makefile
+          '';
+        });
 
-      spaceline = super.spaceline.override {
-        inherit (self.melpaPackages) powerline;
+        # Map legacy renames from emacs2nix since code generation was ported to emacs lisp
+        _0blayout = super."0blayout";
+        _0xc = super."0xc";
+        _2048-game = super."2048-game";
+        _4clojure = super."4clojure";
+        at = super."@";
+        desktop-plus = super."desktop+";
+        ghub-plus = super."ghub+";
+        git-gutter-plus = super."git-gutter+";
+        git-gutter-fringe-plus = super."git-gutter-fringe+";
+        ido-completing-read-plus = super."ido-completing-read+";
+        image-plus = super."image+";
+        image-dired-plus = super."image-dired+";
+        markdown-mode-plus = super."markdown-mode+";
+        package-plus = super."package+";
+        rect-plus = super."rect+";
+        term-plus = super."term+";
+        term-plus-key-intercept = super."term+key-intercept";
+        term-plus-mux = super."term+mux";
+        xml-plus = super."xml+";
       };
 
-      # upstream issue: missing file header
-      speech-tagger = markBroken super.speech-tagger;
+      stable = shared // {
+        # part of a larger package
+        # upstream issue: missing package version
+        cmake-mode = markBroken (dontConfigure super.cmake-mode);
 
-      # upstream issue: missing file header
-      stgit = markBroken super.stgit;
+        # upstream issue: missing file header
+        connection = markBroken super.connection;
 
-      # upstream issue: missing file header
-      tawny-mode = markBroken super.tawny-mode;
+        # upstream issue: missing file header
+        dictionary = markBroken super.dictionary;
 
-      # upstream issue: missing file header
-      textmate = markBroken super.textmate;
+        # missing git
+        egg = markBroken super.egg;
 
-      treemacs-magit = super.treemacs-magit.overrideAttrs (attrs: {
-        # searches for Git at build time
-        nativeBuildInputs =
-          (attrs.nativeBuildInputs or []) ++ [ external.git ];
-      });
+        # upstream issue: missing dependency redshank
+        emr = markBroken super.emr;
+
+        # upstream issue: doesn't build
+        eterm-256color = markBroken super.eterm-256color;
+
+        # upstream issue: missing dependency highlight
+        evil-search-highlight-persist = markBroken super.evil-search-highlight-persist;
+
+        # upstream issue: missing dependency highlight
+        floobits  = markBroken super.floobits;
+
+        # missing OCaml
+        flycheck-ocaml = markBroken super.flycheck-ocaml;
+
+        # upstream issue: missing dependency
+        fold-dwim-org = markBroken super.fold-dwim-org;
+
+        # build timeout
+        graphene = markBroken super.graphene;
+
+        # Expects bash to be at /bin/bash
+        helm-rtags = markBroken super.helm-rtags;
 
-      # missing OCaml
-      utop = markBroken super.utop;
+        # upstream issue: missing file header
+        link = markBroken super.link;
 
-      vdiff-magit =
-        (super.vdiff-magit.overrideAttrs (attrs: {
+        # missing OCaml
+        merlin = markBroken super.merlin;
+
+        # upstream issue: missing file header
+        po-mode = markBroken super.po-mode;
+
+        # upstream issue: truncated file
+        powershell = markBroken super.powershell;
+      };
+
+      unstable = shared // {
+        # upstream issue: mismatched filename
+        ack-menu = markBroken super.ack-menu;
+
+        editorconfig = super.editorconfig.overrideAttrs (attrs: {
+          propagatedUserEnvPkgs = [ external.editorconfig-core-c ];
+        });
+
+        egg = super.egg.overrideAttrs (attrs: {
+          # searches for Git at build time
           nativeBuildInputs =
             (attrs.nativeBuildInputs or []) ++ [ external.git ];
-        }));
+        });
 
-      # upstream issue: missing file header
-      voca-builder = markBroken super.voca-builder;
+        # missing dependencies
+        evil-search-highlight-persist = super.evil-search-highlight-persist.overrideAttrs (attrs: {
+          packageRequires = with self; [ evil highlight ];
+        });
 
-      # upstream issue: missing file header
-      window-numbering = markBroken super.window-numbering;
-
-      w3m = super.w3m.override (args: {
-        melpaBuild = drv: args.melpaBuild (drv // {
-          prePatch =
-            let w3m = "${lib.getBin external.w3m}/bin/w3m"; in ''
-              substituteInPlace w3m.el \
-                --replace 'defcustom w3m-command nil' \
-                          'defcustom w3m-command "${w3m}"'
-            '';
+        forge = super.forge.overrideAttrs (attrs: {
+          # searches for Git at build time
+          nativeBuildInputs =
+            (attrs.nativeBuildInputs or []) ++ [ external.git ];
         });
-      });
 
-      # Map legacy renames from emacs2nix since code generation was ported to emacs lisp
-      _0blayout = super."0blayout";
-      _0xc = super."0xc";
-      _2048-game = super."2048-game";
-      _4clojure = super."4clojure";
-      at = super."@";
-      desktop-plus = super."desktop+";
-      # filesets-plus = super."filesets+";
-      ghub-plus = super."ghub+";
-      git-gutter-plus = super."git-gutter+";
-      git-gutter-fringe-plus = super."git-gutter-fringe+";
-      ido-completing-read-plus = super."ido-completing-read+";
-      image-plus = super."image+";
-      image-dired-plus = super."image-dired+";
-      markdown-mode-plus = super."markdown-mode+";
-      package-plus = super."package+";
-      rect-plus = super."rect+";
-      term-plus = super."term+";
-      term-plus-key-intercept = super."term+key-intercept";
-      term-plus-mux = super."term+mux";
-      xml-plus = super."xml+";
+        # upstream issue: mismatched filename
+        helm-lobsters = markBroken super.helm-lobsters;
+
+        # Expects bash to be at /bin/bash
+        helm-rtags = markBroken super.helm-rtags;
 
+        # Fails with "package does not untar cleanly into ..."
+        irony = shared.irony.overrideAttrs(old: {
+          meta = old.meta // {
+            broken = true;
+          };
+        });
+
+        orgit =
+          (super.orgit.overrideAttrs (attrs: {
+            # searches for Git at build time
+            nativeBuildInputs =
+              (attrs.nativeBuildInputs or []) ++ [ external.git ];
+           }));
+
+        # tries to write to $HOME
+        php-auto-yasnippets = super.php-auto-yasnippets.overrideAttrs (attrs: {
+          HOME = "/tmp";
+        });
+
+        # upstream issue: mismatched filename
+        processing-snippets = markBroken super.processing-snippets;
+
+        racer = super.racer.overrideAttrs (attrs: {
+          postPatch = attrs.postPatch or "" + ''
+            substituteInPlace racer.el \
+              --replace /usr/local/src/rust/src ${external.rustPlatform.rustcSrc}
+          '';
+        });
+
+        # upstream issue: missing file footer
+        seoul256-theme = markBroken super.seoul256-theme;
+
+        spaceline = super.spaceline.override {
+          inherit (self.melpaPackages) powerline;
+        };
+
+        treemacs-magit = super.treemacs-magit.overrideAttrs (attrs: {
+          # searches for Git at build time
+          nativeBuildInputs =
+            (attrs.nativeBuildInputs or []) ++ [ external.git ];
+        });
+
+        w3m = super.w3m.override (args: {
+          melpaBuild = drv: args.melpaBuild (drv // {
+            prePatch =
+              let w3m = "${lib.getBin external.w3m}/bin/w3m"; in ''
+                substituteInPlace w3m.el \
+                  --replace 'defcustom w3m-command nil' \
+                            'defcustom w3m-command "${w3m}"'
+              '';
+          });
+        });
+      };
     };
 
-    melpaPackages =
-      removeAttrs (super // overrides)
-      [
-        "show-marks"  # missing dependency: fm
-        "lenlen-theme"  # missing dependency: color-theme-solarized
-      ];
-  in
-    melpaPackages // { inherit melpaPackages; }
+  in super // overrides."${variant}");
+
+in generateMelpa { }
diff --git a/pkgs/applications/editors/emacs-modes/melpa-stable-packages.nix b/pkgs/applications/editors/emacs-modes/melpa-stable-packages.nix
deleted file mode 100644
index 8f52f2d3489..00000000000
--- a/pkgs/applications/editors/emacs-modes/melpa-stable-packages.nix
+++ /dev/null
@@ -1,235 +0,0 @@
-/*
-
-# Updating
-
-To update the list of packages from MELPA,
-
-
-1. Run ./update-melpa
-2. Check for evaluation errors:
-env NIXPKGS_ALLOW_BROKEN=1 nix-instantiate --show-trace ../../../../ -A emacsPackagesNg.melpaStablePackages
-env NIXPKGS_ALLOW_BROKEN=1 nix-instantiate --show-trace ../../../../ -A emacsPackagesNg.melpaPackages
-3. `git commit -m "melpa-packages: $(date -Idate)" recipes-archive-melpa.json`
-
-*/
-
-{ lib, external }:
-
-self:
-
-  let
-    inherit (import ./libgenerated.nix lib self) melpaDerivation;
-    imported = lib.listToAttrs (map (melpaDerivation "stable")
-                                    (lib.importJSON ./recipes-archive-melpa.json));
-    super = imported;
-
-    dontConfigure = pkg: pkg.override (args: {
-      melpaBuild = drv: args.melpaBuild (drv // {
-        configureScript = "true";
-      });
-    });
-
-    markBroken = pkg: if pkg != null then pkg.override (args: {
-      melpaBuild = drv: args.melpaBuild (drv // {
-        meta = (drv.meta or {}) // { broken = true; };
-      });
-    }) else null;
-
-    overrides = {
-      # Expects bash to be at /bin/bash
-      ac-rtags = markBroken super.ac-rtags;
-
-      airline-themes = super.airline-themes.override {
-        inherit (self.melpaPackages) powerline;
-      };
-
-      # upstream issue: missing file header
-      bufshow = markBroken super.bufshow;
-
-      # part of a larger package
-      caml = dontConfigure super.caml;
-
-      # part of a larger package
-      # upstream issue: missing package version
-      cmake-mode = markBroken (dontConfigure super.cmake-mode);
-
-      # Expects bash to be at /bin/bash
-      company-rtags = markBroken super.company-rtags;
-
-      # upstream issue: missing file header
-      connection = markBroken super.connection;
-
-      # upstream issue: missing file header
-      dictionary = markBroken super.dictionary;
-
-      easy-kill-extras = super.easy-kill-extras.override {
-        inherit (self.melpaPackages) easy-kill;
-      };
-
-      # missing git
-      egg = markBroken super.egg;
-
-      # upstream issue: missing file header
-      elmine = markBroken super.elmine;
-
-      # upstream issue: missing dependency redshank
-      emr = markBroken super.emr;
-
-      ess-R-data-view = super.ess-R-data-view.override {
-        inherit (self.melpaPackages) ess ctable popup;
-      };
-
-      # upstream issue: doesn't build
-      eterm-256color = markBroken super.eterm-256color;
-
-      # upstream issue: missing dependency highlight
-      evil-search-highlight-persist = markBroken super.evil-search-highlight-persist;
-
-      # upstream issue: missing dependency highlight
-      floobits  = markBroken super.floobits;
-
-      # missing OCaml
-      flycheck-ocaml = markBroken super.flycheck-ocaml;
-
-      # Expects bash to be at /bin/bash
-      flycheck-rtags = markBroken super.flycheck-rtags;
-
-      # upstream issue: missing dependency
-      fold-dwim-org = markBroken super.fold-dwim-org;
-
-      # build timeout
-      graphene = markBroken super.graphene;
-
-      # Expects bash to be at /bin/bash
-      helm-rtags = markBroken super.helm-rtags;
-
-      # Build same version as Haskell package
-      hindent = super.hindent.overrideAttrs (attrs: {
-        version = external.hindent.version;
-        src = external.hindent.src;
-        packageRequires = [ self.haskell-mode ];
-        propagatedUserEnvPkgs = [ external.hindent ];
-      });
-
-      # upstream issue: missing file header
-      ido-complete-space-or-hyphen = markBroken super.ido-complete-space-or-hyphen;
-
-      # upstream issue: missing file header
-      initsplit = markBroken super.initsplit;
-
-      # upstream issue: recipe fails
-      insert-shebang = markBroken super.insert-shebang;
-
-      # Expects bash to be at /bin/bash
-      ivy-rtags = markBroken super.ivy-rtags;
-
-      # upstream issue: missing file header
-      jsfmt = markBroken super.jsfmt;
-
-      # upstream issue: missing file header
-      link = markBroken super.link;
-
-      # upstream issue: missing file header
-      maxframe = markBroken super.maxframe;
-
-      magit =
-        (super.magit.override {
-          # version of magit-popup needs to match magit
-          # https://github.com/magit/magit/issues/3286
-          inherit (self.melpaStablePackages) magit-popup;
-        }).overrideAttrs (attrs: {
-          # searches for Git at build time
-          nativeBuildInputs =
-            (attrs.nativeBuildInputs or []) ++ [ external.git ];
-        });
-
-      magit-todos = super.magit-todos.overrideAttrs (attrs: {
-        # searches for Git at build time
-        nativeBuildInputs =
-          (attrs.nativeBuildInputs or []) ++ [ external.git ];
-      });
-
-      magit-filenotify = super.magit-filenotify.overrideAttrs (attrs: {
-        # searches for Git at build time
-        nativeBuildInputs =
-          (attrs.nativeBuildInputs or []) ++ [ external.git ];
-      });
-
-      # missing OCaml
-      merlin = markBroken super.merlin;
-
-      mhc = super.mhc.override {
-        inherit (self.melpaPackages) calfw;
-      };
-
-      # missing .NET
-      nemerle = markBroken super.nemerle;
-
-      # part of a larger package
-      notmuch = dontConfigure super.notmuch;
-
-      # missing OCaml
-      ocp-indent = markBroken super.ocp-indent;
-
-      # upstream issue: missing file header
-      po-mode = markBroken super.po-mode;
-
-      # upstream issue: truncated file
-      powershell = markBroken super.powershell;
-
-      # upstream issue: missing file header
-      qiita = markBroken super.qiita;
-
-      # upstream issue: missing file header
-      speech-tagger = markBroken super.speech-tagger;
-
-      # upstream issue: missing file header
-      stgit = markBroken super.stgit;
-
-      # upstream issue: missing file header
-      tawny-mode = markBroken super.tawny-mode;
-
-      # upstream issue: missing file header
-      textmate = markBroken super.textmate;
-
-      # missing OCaml
-      utop = markBroken super.utop;
-
-      vdiff-magit =
-        (super.vdiff-magit.overrideAttrs (attrs: {
-          nativeBuildInputs =
-            (attrs.nativeBuildInputs or []) ++ [ external.git ];
-        }));
-
-      # upstream issue: missing file header
-      voca-builder = markBroken super.voca-builder;
-
-      # upstream issue: missing file header
-      window-numbering = markBroken super.window-numbering;
-
-      # Map legacy renames from emacs2nix since code generation was ported to emacs lisp
-      _0blayout = super."0blayout";
-      _0xc = super."0xc";
-      _2048-game = super."2048-game";
-      _4clojure = super."4clojure";
-      at = super."@";
-      desktop-plus = super."desktop+";
-      ghub-plus = super."ghub+";
-      git-gutter-plus = super."git-gutter+";
-      git-gutter-fringe-plus = super."git-gutter-fringe+";
-      ido-completing-read-plus = super."ido-completing-read+";
-      image-plus = super."image+";
-      image-dired-plus = super."image-dired+";
-      markdown-mode-plus = super."markdown-mode+";
-      package-plus = super."package+";
-      rect-plus = super."rect+";
-      term-plus = super."term+";
-      term-plus-key-intercept = super."term+key-intercept";
-      term-plus-mux = super."term+mux";
-      xml-plus = super."xml+";
-
-    };
-
-    melpaStablePackages = super // overrides;
-  in
-    melpaStablePackages // { inherit melpaStablePackages; }
diff --git a/pkgs/applications/editors/emacs-modes/nyan-mode/default.nix b/pkgs/applications/editors/emacs-modes/nyan-mode/default.nix
deleted file mode 100644
index e0057fd30ce..00000000000
--- a/pkgs/applications/editors/emacs-modes/nyan-mode/default.nix
+++ /dev/null
@@ -1,30 +0,0 @@
-{lib, trivialBuild, fetchFromGitHub}:
-
-trivialBuild rec {
-  pname    = "nyan-mode";
-  version  = "20150128";
-
-  src = fetchFromGitHub {
-    owner  = "TeMPOraL";
-    repo   = pname;
-    rev    = "41faa2c809da7b2cb3e6f8fadefae3f338ced3f2";
-    sha256 = "1idaac7sjc8hhbf5zif61ncg1pvg28c0qfihavdx61albww0ll7f";
-  };
-
-  patches = [ ./directory.patch ];
-
-  preBuild = ''
-    substituteInPlace nyan-mode.el \
-      --replace "@OUT@" "$out/"
-  '';
-
-  postInstall = ''
-    cp -r img $out
-    cp -r mus $out
-  '';
-
-  meta = {
-    description = "An analog indicator of the position in the buffer";
-    license = lib.licenses.gpl3Plus;
-  };
-}
diff --git a/pkgs/applications/editors/emacs-modes/nyan-mode/directory.patch b/pkgs/applications/editors/emacs-modes/nyan-mode/directory.patch
deleted file mode 100644
index b471531ec34..00000000000
--- a/pkgs/applications/editors/emacs-modes/nyan-mode/directory.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/nyan-mode.el b/nyan-mode.el
-index 939a25a..3d0b983 100644
---- a/nyan-mode.el
-+++ b/nyan-mode.el
-@@ -106,7 +106,7 @@ This can be t or nil."
-   :group 'nyan)

- 

- 

--(defconst +nyan-directory+ (file-name-directory (or load-file-name buffer-file-name)))

-+(defconst +nyan-directory+ "@OUT@")

- 

- (defconst +nyan-cat-size+ 3)

- 

diff --git a/pkgs/applications/editors/emacs-modes/org-packages.nix b/pkgs/applications/editors/emacs-modes/org-packages.nix
index 46b90a52a09..d3ad7fa4093 100644
--- a/pkgs/applications/editors/emacs-modes/org-packages.nix
+++ b/pkgs/applications/editors/emacs-modes/org-packages.nix
@@ -28,4 +28,4 @@ self:
 
     orgPackages = super // overrides;
 
-  in orgPackages // { inherit orgPackages; }
+  in orgPackages
diff --git a/pkgs/applications/editors/emacs-modes/redshank/default.nix b/pkgs/applications/editors/emacs-modes/redshank/default.nix
deleted file mode 100644
index e03d2fdc90f..00000000000
--- a/pkgs/applications/editors/emacs-modes/redshank/default.nix
+++ /dev/null
@@ -1,23 +0,0 @@
-{ stdenv, fetchgit }:
-
-stdenv.mkDerivation rec {
-  pname = "redshank";
-  name = "${pname}-20120510";
-
-  src = fetchgit {
-    url = "http://www.foldr.org/~michaelw/projects/redshank.git";
-    rev = "f98e68f532e622bcd464292ca4a9cf5fbea14ebb";
-    sha256 = "1jdkgvd5xy9hl5q611jwah2n05abjp7qcy9sj4k1z11x0ii62b6p";
-  };
-
-  installPhase = ''
-    mkdir -p $out/share/emacs/site-lisp
-    cp *.el *.elc $out/share/emacs/site-lisp/
-  '';
-
-  meta = {
-    description = "Common Lisp Editing Extensions (for Emacs)";
-    homepage = http://www.foldr.org/~michaelw/emacs/redshank/;
-    platforms = stdenv.lib.platforms.all;
-  };
-}
diff --git a/pkgs/applications/editors/emacs-modes/stgit/default.nix b/pkgs/applications/editors/emacs-modes/stgit/default.nix
deleted file mode 100644
index b615accd721..00000000000
--- a/pkgs/applications/editors/emacs-modes/stgit/default.nix
+++ /dev/null
@@ -1,25 +0,0 @@
-{ stdenv, fetchurl }:
-
-stdenv.mkDerivation rec {
-  pname = "stgit";
-  name = "${pname}-2009-10-28";
-
-  dontUnpack = true;
-
-  src = fetchurl {
-    url = "https://raw.githubusercontent.com/miracle2k/stgit/master/contrib/stgit.el";
-    sha256 = "0pl8q480633vdkylr85s7cbd4653xpzwklnxrwm8xhsnvw9d501q";
-    name = "stgit.el";
-  };
-
-  installPhase = ''
-    mkdir -p $out/share/emacs/site-lisp
-    cp $src $out/share/emacs/site-lisp/stgit.el
-  '';
-
-  meta = {
-    description = "An emacs mode for Stgit";
-    homepage = http://procode.org/stgit/;
-    platforms = stdenv.lib.platforms.all;
-  };
-}
diff --git a/pkgs/applications/editors/emacs-modes/update-melpa b/pkgs/applications/editors/emacs-modes/update-melpa
index 2b2af5cb2bb..5c636416a5e 100755
--- a/pkgs/applications/editors/emacs-modes/update-melpa
+++ b/pkgs/applications/editors/emacs-modes/update-melpa
@@ -1,8 +1,6 @@
 #! /usr/bin/env nix-shell
-#! nix-shell --show-trace -i sh -p git nix nix-prefetch-git nix-prefetch-hg "import ./updater-emacs.nix"
+#! nix-shell --show-trace ./updater-emacs.nix -i bash
 
-# "with import ../../../.. {}; emacsWithPackages (epkgs: with epkgs.melpaPackages; [ promise semaphore ])"
+SCRIPT_DIR="$( cd "$(dirname "$0")" ; pwd -P )"
 
-exec emacs --fg-daemon=updater --quick -l update-melpa.el -f run-updater "$@"
-
-# exec emacs update-melpa.el "$@"
+exec emacs --fg-daemon=updater --quick -l $SCRIPT_DIR/update-melpa.el -f run-updater "$@"
diff --git a/pkgs/applications/editors/emacs-modes/updater-emacs.nix b/pkgs/applications/editors/emacs-modes/updater-emacs.nix
index b64a410e7b4..c7e858078e6 100644
--- a/pkgs/applications/editors/emacs-modes/updater-emacs.nix
+++ b/pkgs/applications/editors/emacs-modes/updater-emacs.nix
@@ -1,29 +1,40 @@
-with import ../../../.. {};
-(emacsPackagesNgFor emacs26).
-emacsWithPackages (epkgs: let
-  promise = epkgs.trivialBuild {
-    pname = "promise";
-    version = "1";
-    src = fetchFromGitHub {
-      owner = "bendlas";
-      repo = "emacs-promise";
-      rev = "4da97087c5babbd8429b5ce62a8323b9b03c6022";
-      sha256 = "0yin7kj69g4zxs30pvk47cnfygxlaw7jc7chr3b36lz51yqczjsy";
-      
+let
+  pkgs = import ../../../.. {};
+
+  emacsEnv = (pkgs.emacsPackagesNgFor pkgs.emacs26).emacsWithPackages (epkgs: let
+
+    promise = epkgs.trivialBuild {
+      pname = "promise";
+      version = "1";
+      src = pkgs.fetchFromGitHub {
+        owner = "bendlas";
+        repo = "emacs-promise";
+        rev = "4da97087c5babbd8429b5ce62a8323b9b03c6022";
+        sha256 = "0yin7kj69g4zxs30pvk47cnfygxlaw7jc7chr3b36lz51yqczjsy";
+      };
     };
-  };
-  semaphore = epkgs.trivialBuild {
-    pname = "semaphore";
-    version = "1";
-    packageRequires = [ promise ];
-    src = fetchFromGitHub {
-      owner = "webnf";
-      repo = "semaphore.el";
-      rev = "93802cb093073bc6a6ccd797328dafffcef248e0";
-      sha256 = "09pfyp27m35sv340xarhld7xx2vv5fs5xj4418709iw6l6hpk853";
-      
+
+    semaphore = epkgs.trivialBuild {
+      pname = "semaphore";
+      version = "1";
+      packageRequires = [ promise ];
+      src = pkgs.fetchFromGitHub {
+        owner = "webnf";
+        repo = "semaphore.el";
+        rev = "93802cb093073bc6a6ccd797328dafffcef248e0";
+        sha256 = "09pfyp27m35sv340xarhld7xx2vv5fs5xj4418709iw6l6hpk853";
+      };
     };
-  };
-  in [ promise semaphore ]
-     #  ++ (with epkgs.melpaPackages; [ smex rainbow-delimiters paredit ])
-)
+
+  in [ promise semaphore ]);
+
+in pkgs.mkShell {
+  buildInputs = [
+    pkgs.git
+    pkgs.nix
+    pkgs.bash
+    pkgs.nix-prefetch-git
+    pkgs.nix-prefetch-hg
+    emacsEnv
+  ];
+}
diff --git a/pkgs/applications/editors/gnome-builder/default.nix b/pkgs/applications/editors/gnome-builder/default.nix
index 748fbfc42d5..740d65838c3 100644
--- a/pkgs/applications/editors/gnome-builder/default.nix
+++ b/pkgs/applications/editors/gnome-builder/default.nix
@@ -42,11 +42,11 @@ let
 in
 stdenv.mkDerivation rec {
   pname = "gnome-builder";
-  version = "3.32.3";
+  version = "3.32.4";
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "1vlr69sgiv3kg2qa3n7aw3913bmvlcpyhy3w8lls13wjrgif4wny";
+    sha256 = "0xip58m206p8wa28p0a3y4ykylzr5xzmirjl3dspg4j25r08i8qr";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/applications/editors/jetbrains/default.nix b/pkgs/applications/editors/jetbrains/default.nix
index eb6bbabdea4..844999b0366 100644
--- a/pkgs/applications/editors/jetbrains/default.nix
+++ b/pkgs/applications/editors/jetbrains/default.nix
@@ -263,12 +263,12 @@ in
 
   datagrip = buildDataGrip rec {
     name = "datagrip-${version}";
-    version = "2019.1.4"; /* updated by script */
+    version = "2019.2.1"; /* updated by script */
     description = "Your Swiss Army Knife for Databases and SQL";
     license = stdenv.lib.licenses.unfree;
     src = fetchurl {
       url = "https://download.jetbrains.com/datagrip/${name}.tar.gz";
-      sha256 = "0zjcn71fgngkvsixgimzm5afwjbd8zf14zzm6barap4pwp5xx0hb"; /* updated by script */
+      sha256 = "0va5dcvjxq7mlkz0di5zl1ra5gv6cls3wy40fvkpm2vlirg0m31s"; /* updated by script */
     };
     wmClass = "jetbrains-datagrip";
     update-channel = "DataGrip RELEASE";
@@ -367,12 +367,12 @@ in
 
   ruby-mine = buildRubyMine rec {
     name = "ruby-mine-${version}";
-    version = "2019.1.2"; /* updated by script */
+    version = "2019.2"; /* updated by script */
     description = "The Most Intelligent Ruby and Rails IDE";
     license = stdenv.lib.licenses.unfree;
     src = fetchurl {
       url = "https://download.jetbrains.com/ruby/RubyMine-${version}.tar.gz";
-      sha256 = "1zhci8nkywv66bwc6hbyh4h3x61qhv2fbmfb5gkw9znkk1qa0q6v"; /* updated by script */
+      sha256 = "1f4mdarmh7m9jq432d0s9jds9288g0zgpxnlpmx12i26vvq8kykd"; /* updated by script */
     };
     wmClass = "jetbrains-rubymine";
     update-channel = "RubyMine RELEASE";
diff --git a/pkgs/applications/editors/kakoune/default.nix b/pkgs/applications/editors/kakoune/default.nix
index 8dfcc485668..065657d16e2 100644
--- a/pkgs/applications/editors/kakoune/default.nix
+++ b/pkgs/applications/editors/kakoune/default.nix
@@ -4,12 +4,12 @@ with stdenv.lib;
 
 stdenv.mkDerivation rec {
   pname = "kakoune-unwrapped";
-  version = "2019.01.20";
+  version = "2019.07.01";
   src = fetchFromGitHub {
     repo = "kakoune";
     owner = "mawww";
     rev = "v${version}";
-    sha256 = "04ak1jm7b1i03sx10z3fxw08rn692y2fj482jn5kpzfzj91b2ila";
+    sha256 = "0jdkldq5rygzc0wcxr1j4fmp2phciy8602ghhf6xq21a9bq2v639";
   };
   nativeBuildInputs = [ pkgconfig ];
   buildInputs = [ ncurses asciidoc docbook_xsl libxslt ];
@@ -25,6 +25,11 @@ stdenv.mkDerivation rec {
     export version="v${version}"
   '';
 
+  doInstallCheckPhase = true;
+  installCheckPhase = ''
+    $out/bin/kak -ui json -E "kill 0"
+  '';
+
   meta = {
     homepage = http://kakoune.org/;
     description = "A vim inspired text editor";
diff --git a/pkgs/applications/editors/neovim/qt.nix b/pkgs/applications/editors/neovim/qt.nix
index 3004bf544c4..83b14b4ea37 100644
--- a/pkgs/applications/editors/neovim/qt.nix
+++ b/pkgs/applications/editors/neovim/qt.nix
@@ -1,16 +1,16 @@
-{ stdenv, fetchFromGitHub, cmake, doxygen, makeWrapper
+{ stdenv, mkDerivation, fetchFromGitHub, cmake, doxygen, makeWrapper
 , msgpack, neovim, pythonPackages, qtbase }:
 
 let
-  unwrapped = stdenv.mkDerivation rec {
+  unwrapped = mkDerivation rec {
     pname = "neovim-qt-unwrapped";
-    version = "0.2.11";
+    version = "0.2.12";
 
     src = fetchFromGitHub {
       owner  = "equalsraf";
       repo   = "neovim-qt";
       rev    = "v${version}";
-      sha256 = "0pc1adxc89p2rdvb6nxyqr9sjzqz9zw2dg7a4ardxsl3a8jga1wh";
+      sha256 = "09s3044j0y8nmyi8ykslfii6fx7k9mckmdvb0jn2xmdabpb60i20";
     };
 
     cmakeFlags = [
@@ -24,7 +24,7 @@ let
       jinja2 python msgpack
     ]);
 
-    nativeBuildInputs = [ cmake doxygen makeWrapper ];
+    nativeBuildInputs = [ cmake doxygen ];
 
     enableParallelBuilding = true;
 
diff --git a/pkgs/applications/editors/quilter/default.nix b/pkgs/applications/editors/quilter/default.nix
index 43ff16deb2d..f5c62b6f36e 100644
--- a/pkgs/applications/editors/quilter/default.nix
+++ b/pkgs/applications/editors/quilter/default.nix
@@ -4,13 +4,13 @@
 
 stdenv.mkDerivation rec {
   pname = "quilter";
-  version = "1.9.2";
+  version = "1.9.3";
 
   src = fetchFromGitHub {
     owner = "lainsce";
     repo = pname;
     rev = version;
-    sha256 = "10r6d695avxj31yghb82ymgnd7f1dawwbqz3gfy0rycjza9dxvv8";
+    sha256 = "09acknajbkfpw8f5pay2qj69dzhwbiplsvpp1hy9ma6msmxkr6cm";
   };
 
   nativeBuildInputs = [
@@ -43,7 +43,7 @@ stdenv.mkDerivation rec {
     description = "Focus on your writing - designed for elementary OS";
     homepage = https://github.com/lainsce/quilter;
     license = licenses.gpl2Plus;
-    maintainers = with maintainers; [ worldofpeace ];
+    maintainers = pantheon.maintainers;
     platforms = platforms.linux;
   };
 }
diff --git a/pkgs/applications/editors/rednotebook/default.nix b/pkgs/applications/editors/rednotebook/default.nix
index 11154250e58..11a5b4c7ba3 100644
--- a/pkgs/applications/editors/rednotebook/default.nix
+++ b/pkgs/applications/editors/rednotebook/default.nix
@@ -5,13 +5,13 @@
 
 buildPythonApplication rec {
   pname = "rednotebook";
-  version = "2.8";
+  version = "2.11.1";
 
   src = fetchFromGitHub {
     owner = "jendrikseipp";
     repo = "rednotebook";
     rev = "v${version}";
-    sha256 = "0k75lw3p6jx30ngvn8iipk1763gazkbrsad3fpl3sqppaqaggryj";
+    sha256 = "04c7a0wgmdl88v9386y1052c38ajbkryiwhqps5lx34d4g7r6hm1";
   };
 
   # We have not packaged tests.
@@ -30,6 +30,10 @@ buildPythonApplication rec {
     "--suffix XDG_DATA_DIRS : $XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH"
   ];
 
+  # Until gobject-introspection in nativeBuildInputs is supported.
+  # https://github.com/NixOS/nixpkgs/issues/56943#issuecomment-472568643
+  strictDeps = false;
+
   meta = with lib; {
     homepage = http://rednotebook.sourceforge.net/;
     description = "A modern journal that includes a calendar navigation, customizable templates, export functionality and word clouds";
diff --git a/pkgs/applications/editors/thonny/default.nix b/pkgs/applications/editors/thonny/default.nix
index 5f87aad8a87..a6179452f4d 100644
--- a/pkgs/applications/editors/thonny/default.nix
+++ b/pkgs/applications/editors/thonny/default.nix
@@ -4,13 +4,13 @@ with python3.pkgs;
 
 buildPythonApplication rec {
   pname = "thonny";
-  version = "3.1.2";
+  version = "3.2.0b7";
 
   src = fetchFromGitHub {
     owner = pname;
     repo = pname;
     rev = "v${version}";
-    sha256 = "1simqqxm72k5zhavhllkinsyw8ggy6fjs5ppj82g3l5g3919pfna";
+    sha256 = "0p0hi5rj873cszx9rpbjjq51vs6xys3rlq9v1rya710i3fnw0hqh";
   };
 
   propagatedBuildInputs = with python3.pkgs; [
diff --git a/pkgs/applications/editors/typora/default.nix b/pkgs/applications/editors/typora/default.nix
index 157204ce1ca..7273b7252ca 100644
--- a/pkgs/applications/editors/typora/default.nix
+++ b/pkgs/applications/editors/typora/default.nix
@@ -1,12 +1,12 @@
-{ stdenv, fetchurl, makeWrapper, electron_3, dpkg, gtk3, glib, gsettings-desktop-schemas, wrapGAppsHook }:
+{ stdenv, fetchurl, makeWrapper, electron_5, dpkg, gtk3, glib, gsettings-desktop-schemas, wrapGAppsHook }:
 
 stdenv.mkDerivation rec {
   pname = "typora";
-  version = "0.9.72";
+  version = "0.9.73";
 
   src = fetchurl {
     url = "https://www.typora.io/linux/typora_${version}_amd64.deb";
-    sha256 = "0q7fj77pr3ykpwgip87h12qxvpvlzs15mi9w3phqm3p9mmm9rlrs";
+    sha256 = "1fgcb4bx5pw8ah5j30d38gw7qi1cmqarfhvgdns9f2n0d57bvvw3";
   };
 
   nativeBuildInputs = [
@@ -39,7 +39,7 @@ stdenv.mkDerivation rec {
   '';
 
   postFixup = ''
-    makeWrapper ${electron_3}/bin/electron $out/bin/typora \
+    makeWrapper ${electron_5}/bin/electron $out/bin/typora \
       --add-flags $out/share/typora \
       "''${gappsWrapperArgs[@]}" \
       --prefix LD_LIBRARY_PATH : "${stdenv.lib.makeLibraryPath [ stdenv.cc.cc ]}"
@@ -50,6 +50,6 @@ stdenv.mkDerivation rec {
     homepage = https://typora.io;
     license = licenses.unfree;
     maintainers = with maintainers; [ jensbin worldofpeace ];
-    inherit (electron_3.meta) platforms;
+    platforms = [ "x86_64-linux"];
   };
 }