about summary refs log tree commit diff
path: root/nixpkgs/pkgs/applications/editors/emacs
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/applications/editors/emacs')
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs/elisp-packages/agda-input/default.nix18
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs/elisp-packages/agda2-mode/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs/elisp-packages/apheleia/default.nix16
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs/elisp-packages/bqn-mode/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs/elisp-packages/cedille/default.nix19
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs/elisp-packages/color-theme-solarized/default.nix39
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs/elisp-packages/emacspeak/default.nix37
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs/elisp-packages/ement/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs/elisp-packages/ement/handle-nil-images.patch28
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs/elisp-packages/ess-R-object-popup/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs/elisp-packages/evil-markdown/default.nix50
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs/elisp-packages/font-lock-plus/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs/elisp-packages/git-undo/default.nix22
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs/elisp-packages/helm-words/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs/elisp-packages/ido-ubiquitous/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs/elisp-packages/isearch-plus/default.nix23
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs/elisp-packages/isearch-prop/default.nix22
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs/elisp-packages/jam-mode/default.nix13
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs/elisp-packages/llvm-mode/default.nix17
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs/elisp-packages/manual-packages.nix119
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs/elisp-packages/mu4e-patch/default.nix38
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs/elisp-packages/nano-theme/default.nix17
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs/elisp-packages/org-mac-link/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs/elisp-packages/ott-mode/default.nix19
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs/elisp-packages/plz/default.nix23
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs/elisp-packages/power-mode/default.nix15
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs/elisp-packages/prolog/default.nix2
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs/elisp-packages/railgun/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs/elisp-packages/rect-mark/default.nix39
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs/elisp-packages/sunrise-commander/default.nix17
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs/elisp-packages/tramp/default.nix11
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs/elisp-packages/urweb-mode/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs/elisp-packages/youtube-dl/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs/elisp-packages/zeitgeist/default.nix25
34 files changed, 446 insertions, 511 deletions
diff --git a/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/agda-input/default.nix b/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/agda-input/default.nix
new file mode 100644
index 000000000000..a96f7393dfaf
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/agda-input/default.nix
@@ -0,0 +1,18 @@
+{ trivialBuild
+, haskellPackages
+}:
+
+trivialBuild {
+  pname = "agda-input";
+
+  inherit (haskellPackages.Agda) src version;
+
+  postUnpack = ''
+    mv $sourceRoot/src/data/emacs-mode/agda-input.el $sourceRoot
+  '';
+
+  meta = {
+    inherit (haskellPackages.Agda.meta) homepage license;
+    description = "Standalone package providing the agda-input method without building Agda.";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/agda2-mode/default.nix b/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/agda2-mode/default.nix
new file mode 100644
index 000000000000..2533153bd447
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/agda2-mode/default.nix
@@ -0,0 +1,27 @@
+{ trivialBuild
+, haskellPackages
+}:
+
+trivialBuild rec {
+  pname = "agda-mode";
+  version = haskellPackages.Agda.version;
+
+  dontUnpack = true;
+
+  # already byte-compiled by Agda builder
+  buildPhase = ''
+    agda=`${haskellPackages.Agda}/bin/agda-mode locate`
+    cp `dirname $agda`/*.el* .
+  '';
+
+  meta = {
+    inherit (haskellPackages.Agda.meta) homepage license;
+    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.
+    '';
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/apheleia/default.nix b/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/apheleia/default.nix
index a5f06efa33cc..935533b34ae9 100644
--- a/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/apheleia/default.nix
+++ b/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/apheleia/default.nix
@@ -1,10 +1,11 @@
 { lib
 , stdenv
+, trivialBuild
 , fetchFromGitHub
 , emacs
 }:
 
-stdenv.mkDerivation rec {
+trivialBuild rec {
   pname = "apheleia";
   version = "0.0.0+unstable=2021-08-08";
 
@@ -19,19 +20,6 @@ stdenv.mkDerivation rec {
     emacs
   ];
 
-  buildPhase = ''
-    runHook preBuild
-    emacs -L . --batch -f batch-byte-compile *.el
-    runHook postBuild
-  '';
-
-  installPhase = ''
-    runHook preInstall
-    install -d $out/share/emacs/site-lisp
-    install *.el *.elc $out/share/emacs/site-lisp
-    runHook postInstall
-  '';
-
   meta = with lib; {
     homepage = "https://github.com/raxod502/apheleia";
     description = "Asynchronous buffer reformat";
diff --git a/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/bqn-mode/default.nix b/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/bqn-mode/default.nix
new file mode 100644
index 000000000000..a12eee62fecd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/bqn-mode/default.nix
@@ -0,0 +1,27 @@
+{ lib
+, trivialBuild
+, fetchFromGitHub
+}:
+
+trivialBuild {
+  pname = "bqn-mode";
+  version = "0.0.0+unstable=-2021-09-15";
+
+  src = fetchFromGitHub {
+    owner = "mlochbaum";
+    repo = "BQN";
+    rev = "fb6ec1d8b083cd2b335828ae22e978b1b13986fa";
+    hash = "sha256-57ryT5gb7hToAJOiGjjgU87rmlswjPK9tV1iQzJ4C0Y=";
+  };
+
+  postUnpack = ''
+    sourceRoot="$sourceRoot/editors/emacs"
+  '';
+
+  meta = with lib; {
+    homepage = "https://mlochbaum.github.io/BQN/editors/index.html";
+    description = "Emacs mode for BQN";
+    license = licenses.gpl3Only;
+    maintainers = [ maintainers.sternenseemann ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/cedille/default.nix b/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/cedille/default.nix
index f03aa92c3af3..e9a5e9128810 100644
--- a/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/cedille/default.nix
+++ b/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/cedille/default.nix
@@ -1,30 +1,33 @@
-{ stdenv, cedille, emacs }:
+{ stdenv
+, cedille
+, emacs
+}:
 
 stdenv.mkDerivation {
   pname = "cedille-mode";
-  version = cedille.version;
 
-  src = cedille.src;
+  inherit (cedille) version src;
 
   buildInputs = [ emacs ];
 
   dontBuild = true;
 
   installPhase = ''
+    runHook preInstall
+
     install -d $out/share/emacs/site-lisp
     install se-mode/*.el se-mode/*.elc $out/share/emacs/site-lisp
     install cedille-mode/*.el cedille-mode/*.elc $out/share/emacs/site-lisp
     install *.el *.elc $out/share/emacs/site-lisp
     substituteInPlace $out/share/emacs/site-lisp/cedille-mode.el \
-      --replace /usr/bin/cedille ${cedille}/bin/cedille \
+      --replace /usr/bin/cedille ${cedille}/bin/cedille
 
+    runHook postInstall
   '';
 
   meta = {
+    inherit (cedille.meta)
+      homepage license maintainers platforms;
     description = "Emacs major mode for Cedille";
-    homepage    = cedille.meta.homepage;
-    license     = cedille.meta.license ;
-    platforms   = cedille.meta.platforms;
-    maintainers = cedille.meta.maintainers;
   };
 }
diff --git a/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/color-theme-solarized/default.nix b/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/color-theme-solarized/default.nix
index ce85e9be4e9a..feb6c0fa86ca 100644
--- a/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/color-theme-solarized/default.nix
+++ b/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/color-theme-solarized/default.nix
@@ -1,33 +1,38 @@
-{lib, stdenv, fetchzip, emacs, color-theme}:
-let
-  commit = "f3ca8902ea056fb8e46cb09f09c96294e31cd4ee";
-in
-stdenv.mkDerivation {
-  name = "color-theme-solarized-1.0.0";
+{ lib
+, trivialBuild
+, fetchFromGitHub
+, emacs
+, color-theme
+}:
 
-  src = fetchzip {
+trivialBuild {
+  pname = "color-theme-solarized";
+  version = "0.0.0+unstable=2017-10-24";
 
-    url = "https://github.com/sellout/emacs-color-theme-solarized/archive/${commit}.zip";
-    sha256 = "16d7adqi07lzzr0qipl1fbag9l8kiyr3xrqxi528pimcisbg85d3";
+  src = fetchFromGitHub {
+    owner = "sellout";
+    repo = "emacs-color-theme-solarized";
+    rev = "f3ca8902ea056fb8e46cb09f09c96294e31cd4ee";
+    hash = "sha256-oxX0lo6sxotEiR3nPrKPE9H01HKB3ohB/p8eEHFTp5k=";
   };
 
   buildInputs = [ emacs ];
   propagatedUserEnvPkgs = [ color-theme ];
 
   buildPhase = ''
-    emacs -L . -L ${color-theme}/share/emacs/site-lisp/elpa/color-theme-* --batch -f batch-byte-compile *.el
-  '';
+    runHook preBuild
+
+    emacs -L . -L ${color-theme}/share/emacs/site-lisp/elpa/color-theme-* \
+      --batch -f batch-byte-compile *.el
 
-  installPhase = ''
-    mkdir -p $out/share/emacs/site-lisp
-    install *.el* $out/share/emacs/site-lisp
+    runHook postBuild
   '';
 
   meta = with lib; {
-    description = "Precision colors for machines and people";
     homepage = "http://ethanschoonover.com/solarized";
-    maintainers = [ maintainers.samuelrivas ];
+    description = "Precision colors for machines and people; Emacs implementation";
     license = licenses.mit;
-    platforms = platforms.all;
+    maintainers = with maintainers; [ samuelrivas AndersonTorres ];
+    inherit (emacs.meta) platforms;
   };
 }
diff --git a/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/emacspeak/default.nix b/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/emacspeak/default.nix
index 577f5136326c..84d724c3518b 100644
--- a/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/emacspeak/default.nix
+++ b/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/emacspeak/default.nix
@@ -1,16 +1,33 @@
-{ stdenv, fetchurl, makeWrapper, emacs, tcl, tclx, espeak-ng, lib }:
+{ lib
+, stdenv
+, fetchFromGitHub
+, makeWrapper
+, emacs
+, tcl
+, tclx
+, espeak-ng
+}:
 
 stdenv.mkDerivation rec {
   pname = "emacspeak";
   version = "54.0";
 
-  src = fetchurl {
-    url = "https://github.com/tvraman/emacspeak/releases/download/${version}/${pname}-${version}.tar.bz2";
-    sha256 = "sha256-wsIqiW4UtgdAhqPqgCKgF37+hAtmAelAEnme1W9PKes=";
+  src = fetchFromGitHub {
+    owner = "tvraman";
+    repo = pname;
+    rev = version;
+    hash= "sha256-aOZ8PmkASJKETPhXhE9WQXyJS7SPe+d97fK/piqqzqc=";
   };
 
-  nativeBuildInputs = [ makeWrapper emacs ];
-  buildInputs = [ tcl tclx espeak-ng ];
+  nativeBuildInputs = [
+    emacs
+    makeWrapper
+  ];
+  buildInputs = [
+    espeak-ng
+    tcl
+    tclx
+  ];
 
   preConfigure = ''
     make config
@@ -32,11 +49,11 @@ stdenv.mkDerivation rec {
         --add-flags '-l "${placeholder "out"}/share/emacs/site-lisp/emacspeak/lisp/emacspeak-setup.elc"'
   '';
 
-  meta = {
+  meta = with lib; {
     homepage = "https://github.com/tvraman/emacspeak/";
     description = "Emacs extension that provides spoken output";
-    license = lib.licenses.gpl2;
-    maintainers = [ ];
-    platforms = lib.platforms.linux;
+    license = licenses.gpl2Plus;
+    maintainers = [ maintainers.AndersonTorres ];
+    platforms = platforms.linux;
   };
 }
diff --git a/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/ement/default.nix b/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/ement/default.nix
new file mode 100644
index 000000000000..73fd2f4a0a92
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/ement/default.nix
@@ -0,0 +1,36 @@
+{ trivialBuild
+, lib
+, fetchFromGitHub
+, curl
+, plz
+, cl-lib
+, ts
+}:
+
+trivialBuild {
+  pname = "ement";
+  version = "unstable-2021-09-16";
+
+  src = fetchFromGitHub {
+    owner = "alphapapa";
+    repo = "ement.el";
+    rev = "c07e914f077199c95b0e7941a421675c95d4687e";
+    sha256 = "sha256-kYVb2NrHYC87mY/hFUMAjb4TLJ9A2L2RrHoiAXvRaGg=";
+  };
+
+  packageRequires = [
+    plz
+    cl-lib
+    ts
+  ];
+
+  patches = [
+    ./handle-nil-images.patch
+  ];
+
+  meta = {
+    description = "Ement.el is a Matrix client for Emacs";
+    license = lib.licenses.gpl3Only;
+    platforms = lib.platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/ement/handle-nil-images.patch b/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/ement/handle-nil-images.patch
new file mode 100644
index 000000000000..547fee164056
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/ement/handle-nil-images.patch
@@ -0,0 +1,28 @@
+diff --git a/ement.el b/ement.el
+index c9596a7..1b33045 100644
+--- a/ement.el
++++ b/ement.el
+@@ -682,14 +682,15 @@ can cause undesirable underlining."
+   "Return a copy of IMAGE set to MAX-WIDTH and MAX-HEIGHT.
+ IMAGE should be one as created by, e.g. `create-image'."
+   ;; It would be nice if the image library had some simple functions to do this sort of thing.
+-  (let ((new-image (cl-copy-list image)))
+-    (when (fboundp 'imagemagick-types)
+-      ;; Only do this when ImageMagick is supported.
+-      ;; FIXME: When requiring Emacs 27+, remove this (I guess?).
+-      (setf (image-property new-image :type) 'imagemagick))
+-    (setf (image-property new-image :max-width) max-width
+-          (image-property new-image :max-height) max-height)
+-    new-image))
++  (when image
++    (let ((new-image (cl-copy-list image)))
++      (when (fboundp 'imagemagick-types)
++        ;; Only do this when ImageMagick is supported.
++        ;; FIXME: When requiring Emacs 27+, remove this (I guess?).
++        (setf (image-property new-image :type) 'imagemagick))
++      (setf (image-property new-image :max-width) max-width
++            (image-property new-image :max-height) max-height)
++      new-image)))
+ 
+ ;;;;; Reading/writing sessions
+ 
diff --git a/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/ess-R-object-popup/default.nix b/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/ess-R-object-popup/default.nix
index a92471a9493b..fa7725fbb94c 100644
--- a/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/ess-R-object-popup/default.nix
+++ b/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/ess-R-object-popup/default.nix
@@ -1,22 +1,23 @@
-{ lib, stdenv, fetchgit }:
+{ lib
+, trivialBuild
+, fetchFromGitHub
+, emacs
+}:
 
-stdenv.mkDerivation {
-  name = "ess-R-object-popup-20130302";
+trivialBuild rec {
+  pname = "ess-R-object-popup";
+  version = "1.0";
 
-  src = fetchgit {
-    url = "https://github.com/myuhe/ess-R-object-popup.el.git";
-    rev = "7e1f601bfba72de0fda44d9c82f96028ecbb9948";
-    sha256 = "0q8pbaa6wahli6fh0kng5zmnypsxi1fr2bzs2mfk3h8vf4nikpv0";
+  src = fetchFromGitHub {
+    owner = "myuhe";
+    repo = "ess-R-object-popup.el";
+    rev = "v${version}";
+    hash = "sha256-YN8ZLXEbwTFdFfovkV2IXV9v6y/PTgCdiRQqbpRaF2E=";
   };
 
-  installPhase = ''
-    mkdir -p $out/share/emacs/site-lisp
-    cp *.el *.elc $out/share/emacs/site-lisp/
-  '';
-
   meta = {
-    description = "Popup descriptions of R objects";
     homepage = "https://github.com/myuhe/ess-R-object-popup.el";
-    platforms = lib.platforms.all;
+    description = "Popup descriptions of R objects";
+    inherit (emacs.meta) platforms;
   };
 }
diff --git a/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/evil-markdown/default.nix b/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/evil-markdown/default.nix
index 74fc1a179219..58c542a57f4f 100644
--- a/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/evil-markdown/default.nix
+++ b/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/evil-markdown/default.nix
@@ -1,46 +1,34 @@
-{ stdenv, fetchFromGitHub, emacs, emacsPackages, lib }:
+{ lib
+, trivialBuild
+, fetchFromGitHub
+, emacs
+}:
 
-let
-  runtimeDeps = with emacsPackages; [
-    evil
-    markdown-mode
-  ];
-in
-stdenv.mkDerivation {
+trivialBuild rec {
   pname = "evil-markdown";
-  version = "2020-06-01";
+  version = "0.0.0+unstable=2021-07-21";
 
   src = fetchFromGitHub {
     owner = "Somelauw";
     repo = "evil-markdown";
-    rev = "064fe9b4767470472356d20bdd08e2f30ebbc9ac";
-    sha256 = "sha256-Kt2wxG1XCFowavVWtj0urM/yURKegonpZcxTy/+CrJY=";
+    rev = "8e6cc68af83914b2fa9fd3a3b8472573dbcef477";
+    hash = "sha256-HBBuZ1VWIn6kwK5CtGIvHM1+9eiNiKPH0GUsyvpUVN8=";
   };
 
   buildInputs = [
     emacs
-  ] ++ runtimeDeps;
-
-  propagatedUserEnvPkgs = runtimeDeps;
+  ] ++ propagatedUserEnvPkgs;
 
-  buildPhase = ''
-    runHook preBuild
-    emacs -L . --batch -f batch-byte-compile *.el
-    runHook postBuild
-  '';
-
-  installPhase = ''
-    runHook preInstall
-    install -d $out/share/emacs/site-lisp
-    install *.el *.elc $out/share/emacs/site-lisp
-    runHook postInstall
-  '';
+  propagatedUserEnvPkgs = with emacs.pkgs; [
+    evil
+    markdown-mode
+  ];
 
-  meta = {
-    description = "Vim-like keybindings for markdown-mode";
+  meta = with lib; {
     homepage = "https://github.com/Somelauw/evil-markdown";
-    license = lib.licenses.gpl3Plus;
-    maintainers = with lib.maintainers; [ leungbk ];
-    platforms = emacs.meta.platforms;
+    description = "Integrates Emacs evil and markdown";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ leungbk ];
+    inherit (emacs.meta) platforms;
   };
 }
diff --git a/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/font-lock-plus/default.nix b/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/font-lock-plus/default.nix
index 3cea9ae4ef09..019d241f507b 100644
--- a/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/font-lock-plus/default.nix
+++ b/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/font-lock-plus/default.nix
@@ -1,17 +1,22 @@
-{ fetchurl, lib, trivialBuild, writeText }:
+{ lib
+, fetchFromGitHub
+, trivialBuild
+}:
 
 trivialBuild {
-  pname = "font-lock+";
-  version = "20180101.25";
+  pname = "font-lock-plus";
+  version = "208+unstable=2018-01-01";
 
-  src = fetchurl {
-    url = "https://www.emacswiki.org/emacs/download/font-lock%2b.el?revision=25";
-    sha256 = "0197yzn4hbjmw5h3m08264b7zymw63pdafph5f3yzfm50q8p7kp4";
-    name = "font-lock+.el";
+  src = fetchFromGitHub {
+    owner = "emacsmirror";
+    repo = "font-lock-plus";
+    rev = "f2c1ddcd4c9d581bd32be88fad026b49f98b6541";
+    hash = "sha256-lFmdVMXIIXZ9ZohAJw5rhxpTv017qIyzmpuKOWDdeJ4=";
   };
 
-  meta = {
-    homepage = "https://melpa.org/#/font-lock+";
-    license = lib.licenses.gpl2Plus;
+  meta = with lib; {
+    homepage = "https://github.com/emacsmirror/font-lock-plus";
+    description = "Enhancements to standard library font-lock.el";
+    license = licenses.gpl2Plus;
   };
 }
diff --git a/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/git-undo/default.nix b/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/git-undo/default.nix
index b23d36209e61..8b353409c372 100644
--- a/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/git-undo/default.nix
+++ b/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/git-undo/default.nix
@@ -2,9 +2,10 @@
 , stdenv
 , fetchFromGitHub
 , emacs
+, trivialBuild
 }:
 
-stdenv.mkDerivation {
+trivialBuild {
   pname = "git-undo";
   version = "0.0.0+unstable=2019-12-21";
 
@@ -15,28 +16,11 @@ stdenv.mkDerivation {
     sha256 = "sha256-cVkK9EF6qQyVV3uVqnBEjF8e9nEx/8ixnM8PvxqCyYE=";
   };
 
-  buildInputs = [
-    emacs
-  ];
-
-  buildPhase = ''
-    runHook preBuild
-    emacs -L . --batch -f batch-byte-compile *.el
-    runHook postBuild
-  '';
-
-  installPhase = ''
-    runHook preInstall
-    install -d $out/share/emacs/site-lisp
-    install *.el *.elc $out/share/emacs/site-lisp
-    runHook postInstall
-  '';
-
   meta = with lib; {
     homepage = "https://github.com/jwiegley/git-undo-el";
     description = "Revert region to most recent Git-historical version";
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ leungbk ];
-    platforms = emacs.meta.platforms;
+    inherit (emacs.meta) platforms;
   };
 }
diff --git a/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/helm-words/default.nix b/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/helm-words/default.nix
index 0678492500d6..1cc7a23e17d1 100644
--- a/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/helm-words/default.nix
+++ b/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/helm-words/default.nix
@@ -1,23 +1,28 @@
-{ lib, stdenv, fetchgit }:
+{ lib
+, trivialBuild
+, fetchFromGitHub
+, dictionary
+, emacs
+, helm
+}:
 
-stdenv.mkDerivation {
-  name = "helm-words-20190917";
+trivialBuild rec {
+  pname = "helm-words";
+  version = "0.0.0+unstable=2019-03-12";
 
-  src = fetchgit {
-    url = "https://github.com/pronobis/helm-words.git";
+  src = fetchFromGitHub {
+    owner = "emacsmirror";
+    repo = pname;
     rev = "e6387ece1940a06695b9d910de3d90252efb8d29";
-    sha256 = "1ly0mbzlgc26fqvf7rxpmy698g0cf9qldrwrx022ar6r68l1h7xf";
+    hash = "sha256-rh8YKDLZZCUE6JnnRnFyDDyUjK+35+M2dkawR/+qwNM=";
   };
 
-  installPhase = ''
-    mkdir -p $out/share/emacs/site-lisp
-    cp *.el *.elc $out/share/emacs/site-lisp/
-  '';
+  packageRequires = [ helm dictionary ];
 
-  meta = {
-    description = "Emacs major mode for jade and stylus";
-    homepage = "https://github.com/brianc/helm-words";
-    license = lib.licenses.gpl3;
-    platforms = lib.platforms.all;
+  meta = with lib; {
+    homepage = "https://github.com/emacsmirror/helm-words";
+    description = "Helm extension for looking up words in dictionaries and thesauri";
+    license = licenses.gpl3Plus;
+    inherit (emacs.meta) platforms;
   };
 }
diff --git a/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/ido-ubiquitous/default.nix b/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/ido-ubiquitous/default.nix
deleted file mode 100644
index eaa0f2c2a5b1..000000000000
--- a/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/ido-ubiquitous/default.nix
+++ /dev/null
@@ -1,27 +0,0 @@
-{ stdenv, fetchFromGitHub, emacs }:
-
-let
-  version = "3.6-4-gb659bf8";
-in
-stdenv.mkDerivation {
-  pname = "ido-ubiquitous";
-  inherit version;
-
-  src = fetchFromGitHub {
-    owner = "DarwinAwardWinner";
-    repo = "ido-ubiquitous";
-    rev = version;
-    sha256 = "06r8qpfr60gc673w881m0nplj91b6bfw77bxgl6irz1z9bp7cc4y";
-  };
-
-  buildInputs = [ emacs ];
-
-  buildPhase = ''
-    emacs -L . --batch -f batch-byte-compile *.el
-  '';
-
-  installPhase = ''
-    install -d $out/share/emacs/site-lisp
-    install *.el *.elc $out/share/emacs/site-lisp
-  '';
-}
diff --git a/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/isearch-plus/default.nix b/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/isearch-plus/default.nix
index 1c11a2abff57..c28a17743421 100644
--- a/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/isearch-plus/default.nix
+++ b/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/isearch-plus/default.nix
@@ -1,10 +1,10 @@
 { lib
-, stdenv
+, trivialBuild
 , fetchFromGitHub
 , emacs
 }:
 
-stdenv.mkDerivation {
+trivialBuild {
   pname = "isearch-plus";
   version = "3434+unstable=2021-08-23";
 
@@ -15,28 +15,11 @@ stdenv.mkDerivation {
     hash = "sha256-kD+Fyps3fc5YK6ATU1nrkKHazGMYJnU2gRcpQZf6A1E=";
   };
 
-  buildInputs = [
-    emacs
-  ];
-
-  buildPhase = ''
-    runHook preBuild
-    emacs -L . --batch -f batch-byte-compile *.el
-    runHook postBuild
-  '';
-
-  installPhase = ''
-    runHook preInstall
-    install -d $out/share/emacs/site-lisp
-    install *.el *.elc $out/share/emacs/site-lisp
-    runHook postInstall
-  '';
-
   meta = with lib; {
     homepage = "https://www.emacswiki.org/emacs/IsearchPlus";
     description = "Extensions to isearch";
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ leungbk AndersonTorres ];
-    platforms = emacs.meta.platforms;
+    inherit (emacs.meta) platforms;
   };
 }
diff --git a/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/isearch-prop/default.nix b/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/isearch-prop/default.nix
index 67a4c87b95d4..067d6f4481f2 100644
--- a/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/isearch-prop/default.nix
+++ b/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/isearch-prop/default.nix
@@ -1,10 +1,11 @@
 { lib
 , stdenv
 , fetchFromGitHub
+, trivialBuild
 , emacs
 }:
 
-stdenv.mkDerivation {
+trivialBuild {
   pname = "isearch-prop";
   version = "0.0.0+unstable=2019-05-01";
 
@@ -15,28 +16,11 @@ stdenv.mkDerivation {
     hash = "sha256-A1Kt4nm7iRV9J5yaLupwiNL5g7ddZvQs79dggmqZ7Rk=";
   };
 
-  buildInputs = [
-    emacs
-  ];
-
-  buildPhase = ''
-    runHook preBuild
-    emacs -L . --batch -f batch-byte-compile *.el
-    runHook postBuild
-  '';
-
-  installPhase = ''
-    runHook preInstall
-    install -d $out/share/emacs/site-lisp
-    install *.el *.elc $out/share/emacs/site-lisp
-    runHook postInstall
-  '';
-
   meta = with lib; {
     homepage = "https://www.emacswiki.org/emacs/IsearchPlus";
     description = "Search text- or overlay-property contexts";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ leungbk ];
-    platforms = emacs.meta.platforms;
+    inherit (emacs.meta) platforms;
   };
 }
diff --git a/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/jam-mode/default.nix b/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/jam-mode/default.nix
index 0fd698ad2c16..09b7877c9deb 100644
--- a/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/jam-mode/default.nix
+++ b/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/jam-mode/default.nix
@@ -1,16 +1,23 @@
-{ trivialBuild, lib, fetchurl }:
+{ lib
+, trivialBuild
+, fetchurl
+}:
 
 trivialBuild rec {
   pname = "jam-mode";
   version = "0.3";
 
   src = fetchurl {
-    url = "https://dev.gentoo.org/~ulm/distfiles/jam-mode-${version}.el.xz";
-    sha256 = "1jchgiy2rgvnb3swr6ar72yas6pj4inpgpcq78q01q6snflmi2fh";
+    url = "https://dev.gentoo.org/~ulm/distfiles/${pname}-${version}.el.xz";
+    hash = "sha256-0IlYqbPa4AAwOpjdd20k8hqtvDhZmcz1WHa/LHx8kMk=";
   };
 
   unpackPhase = ''
+    runHook preUnpack
+
     xz -cd $src > jam-mode.el
+
+    runHook postUnpack
   '';
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/llvm-mode/default.nix b/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/llvm-mode/default.nix
new file mode 100644
index 000000000000..26f9e25ad665
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/llvm-mode/default.nix
@@ -0,0 +1,17 @@
+{ trivialBuild
+, llvmPackages
+}:
+
+trivialBuild {
+  pname = "llvm-mode";
+  inherit (llvmPackages.llvm) src version;
+
+  postUnpack = ''
+    sourceRoot="$sourceRoot/utils/emacs"
+  '';
+
+  meta = {
+    inherit (llvmPackages.llvm.meta) homepage license;
+    description = "Major mode for the LLVM assembler language";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/manual-packages.nix b/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/manual-packages.nix
index d792793d3643..3f5dd795ccb9 100644
--- a/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/manual-packages.nix
+++ b/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/manual-packages.nix
@@ -42,67 +42,6 @@
     };
   };
 
-  agda2-mode = trivialBuild {
-    pname = "agda-mode";
-    version = pkgs.haskellPackages.Agda.version;
-
-    dontUnpack = true;
-
-    # already byte-compiled by Agda builder
-    buildPhase = ''
-      agda=`${pkgs.haskellPackages.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 = pkgs.haskellPackages.Agda.meta.homepage;
-      license = pkgs.haskellPackages.Agda.meta.license;
-    };
-  };
-
-  agda-input = self.trivialBuild {
-    pname = "agda-input";
-
-    inherit (pkgs.haskellPackages.Agda) src version;
-
-    postUnpack = "mv $sourceRoot/src/data/emacs-mode/agda-input.el $sourceRoot";
-
-    meta = {
-      description = "Standalone package providing the agda-input method without building Agda.";
-      inherit (pkgs.haskellPackages.Agda.meta) homepage license;
-    };
-  };
-
-  # may be part of MELPA in the future, see
-  # https://github.com/mlochbaum/BQN/issues/10#issuecomment-912982874
-  bqn-mode = self.trivialBuild {
-    pname = "bqn-mode";
-    version = "unstable-2021-09-04";
-
-    src = pkgs.fetchFromGitHub {
-      owner = "mlochbaum";
-      repo = "BQN";
-      rev = "e623a2fcafdf5fd6c8d31570175284805c4f34d9";
-      sha256 = "1a2lpxy3bak4724r0ns4la5d0j6484ngi73kcwp82vgbbpk7lcrp";
-    };
-
-    postUnpack = ''
-      sourceRoot="$sourceRoot/editors/emacs"
-    '';
-
-    meta = {
-      description = "Emacs mode for BQN";
-      license = lib.licenses.gpl3Only;
-      maintainers = [ lib.maintainers.sternenseemann ];
-      homepage = "https://mlochbaum.github.io/BQN/editors/index.html";
-    };
-  };
-
   ghc-mod = melpaBuild {
     pname = "ghc";
     version = pkgs.haskellPackages.ghc-mod.version;
@@ -154,21 +93,6 @@
     };
   };
 
-  llvm-mode = trivialBuild {
-    pname = "llvm-mode";
-    inherit (pkgs.llvmPackages.llvm) src version;
-
-    dontConfigure = true;
-    buildPhase = ''
-      cp utils/emacs/*.el .
-    '';
-
-    meta = {
-      inherit (pkgs.llvmPackages.llvm.meta) homepage license;
-      description = "Major mode for the LLVM assembler language.";
-    };
-  };
-
   matrix-client = let
     rev = "d2ac55293c96d4c95971ed8e2a3f6f354565c5ed";
   in melpaBuild
@@ -224,37 +148,17 @@
 
   };
 
-  ott-mode = self.trivialBuild {
-    pname = "ott-mod";
+  agda2-mode = callPackage ./agda2-mode { };
 
-    inherit (pkgs.ott) src version;
+  agda-input = callPackage ./agda-input{ };
 
-    postUnpack = "mv $sourceRoot/emacs/ott-mode.el $sourceRoot";
+  bqn-mode = callPackage ./bqn-mode { };
 
-    meta = {
-      description = "Standalone package providing ott-mode without building ott and with compiled bytecode.";
-      inherit (pkgs.haskellPackages.Agda.meta) homepage license;
-    };
-  };
+  llvm-mode = callPackage ./llvm-mode { };
 
-  urweb-mode = self.trivialBuild {
-    pname = "urweb-mode";
+  ott-mode = callPackage ./ott-mode { };
 
-    inherit (pkgs.urweb) src version;
-
-    packageRequires = [
-      self.cl-lib
-      self.flycheck
-    ];
-
-    postUnpack = "sourceRoot=$sourceRoot/src/elisp";
-
-    meta = {
-      description = "Major mode for editing Ur/Web";
-      inherit (pkgs.urweb.meta) license homepage;
-      maintainers = [ lib.maintainers.sternenseemann ];
-    };
-  };
+  urweb-mode = callPackage ./urweb-mode { };
 
   # Packages made the classical callPackage way
 
@@ -262,8 +166,12 @@
 
   ebuild-mode = callPackage ./ebuild-mode { };
 
+  evil-markdown = callPackage ./evil-markdown { };
+
   emacspeak = callPackage ./emacspeak { };
 
+  ement = callPackage ./ement { };
+
   ess-R-object-popup = callPackage ./ess-R-object-popup { };
 
   font-lock-plus = callPackage ./font-lock-plus { };
@@ -280,10 +188,10 @@
 
   nano-theme = callPackage ./nano-theme { };
 
-  org-mac-link = callPackage ./org-mac-link { };
-
   perl-completion = callPackage ./perl-completion { };
 
+  plz = callPackage ./plz { };
+
   pod-mode = callPackage ./pod-mode { };
 
   power-mode = callPackage ./power-mode { };
@@ -298,15 +206,12 @@
 
   youtube-dl = callPackage ./youtube-dl { };
 
-  zeitgeist = callPackage ./zeitgeist { };
-
   # From old emacsPackages (pre emacsPackagesNg)
   cedet = callPackage ./cedet { };
   cedille = callPackage ./cedille { cedille = pkgs.cedille; };
   color-theme-solarized = callPackage ./color-theme-solarized { };
   session-management-for-emacs = callPackage ./session-management-for-emacs { };
   hsc3-mode = callPackage ./hsc3 { };
-  ido-ubiquitous = callPackage ./ido-ubiquitous { };
   prolog-mode = callPackage ./prolog { };
   rect-mark = callPackage ./rect-mark { };
   sunrise-commander = callPackage ./sunrise-commander { };
diff --git a/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/mu4e-patch/default.nix b/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/mu4e-patch/default.nix
deleted file mode 100644
index 4a436339ebc4..000000000000
--- a/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/mu4e-patch/default.nix
+++ /dev/null
@@ -1,38 +0,0 @@
-{ stdenv, fetchFromGitHub, emacs, lib }:
-
-stdenv.mkDerivation {
-  pname = "mu4e-patch";
-  version = "2019-05-09";
-
-  src = fetchFromGitHub {
-    owner = "seanfarley";
-    repo = "mu4e-patch";
-    rev = "522da46c1653b1cacc79cde91d6534da7ae9517d";
-    sha256 = "sha256-1lV4dDuCdyCUXi/In2DzYJPEHuAc9Jfbz2ZecNZwn4I=";
-  };
-
-  buildInputs = [
-    emacs
-  ];
-
-  buildPhase = ''
-    runHook preBuild
-    emacs -L . --batch -f batch-byte-compile *.el
-    runHook postBuild
-  '';
-
-  installPhase = ''
-    runHook preInstall
-    install -d $out/share/emacs/site-lisp
-    install *.el *.elc $out/share/emacs/site-lisp
-    runHook postInstall
-  '';
-
-  meta = {
-    description = "Colorize patch emails in mu4e";
-    homepage = "https://github.com/seanfarley/mu4e-patch";
-    license = lib.licenses.gpl3Plus;
-    maintainers = with lib.maintainers; [ leungbk ];
-    platforms = emacs.meta.platforms;
-  };
-}
diff --git a/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/nano-theme/default.nix b/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/nano-theme/default.nix
index 8034f41a72d6..3bdf1a75f430 100644
--- a/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/nano-theme/default.nix
+++ b/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/nano-theme/default.nix
@@ -1,27 +1,20 @@
 { lib
-, stdenv
+, trivialBuild
 , fetchFromGitHub
 , emacs
 }:
 
-stdenv.mkDerivation rec {
+trivialBuild rec {
   pname = "nano-theme";
-  version = "2021-06-05";
+  version = "0.0.0+unstable=2021-06-29";
 
   src = fetchFromGitHub {
     owner = "rougier";
     repo  = pname;
-    rev = "99ff1c5e78296a073c6e63b966045e0d83a136e7";
-    hash = "sha256-IDVnl4J4hx2mlLaiA+tKxxRGcIyBULr2HBeY/GMHD90=";
+    rev = "4a231787a32b3019f9f0abb3511a112fd54bf685";
+    hash = "sha256-eco9BMKLhPuwFJb5QesbM6g3cZv3FdVvQ9fXq6D3Ifc=";
   };
 
-  installPhase = ''
-    runHook preInstall
-    mkdir -p $out/share/emacs/site-lisp
-    install *.el $out/share/emacs/site-lisp
-    runHook postInstall
-  '';
-
   meta = {
     homepage = "https://github.com/rougier/nano-theme";
     description = "GNU Emacs / N Λ N O Theme";
diff --git a/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/org-mac-link/default.nix b/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/org-mac-link/default.nix
deleted file mode 100644
index a1328d8e8f42..000000000000
--- a/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/org-mac-link/default.nix
+++ /dev/null
@@ -1,32 +0,0 @@
-{ lib, stdenv, fetchurl, emacs }:
-
-stdenv.mkDerivation {
-  pname = "org-mac-link";
-  version = "1.2";
-
-  src = fetchurl {
-    url = "https://raw.githubusercontent.com/stuartsierra/org-mode/master/contrib/lisp/org-mac-link.el";
-    sha256 = "1gkzlfbhg289r1hbqd25szan1wizgk6s99h9xxjip5bjv0jywcx5";
-  };
-
-  dontUnpack = true;
-
-  buildInputs = [ emacs ];
-
-  buildPhase = ''
-    cp $src org-mac-link.el
-    emacs --batch -f batch-byte-compile org-mac-link.el
-  '';
-
-  installPhase = ''
-    install -d $out/share/emacs/site-lisp
-    install org-mac-link.el $out/share/emacs/site-lisp
-  '';
-
-  meta = {
-    description = "Insert org-mode links to items selected in various Mac apps";
-    homepage = "https://orgmode.org/worg/org-contrib/org-mac-link.html";
-    license = lib.licenses.gpl3;
-    platforms = lib.platforms.all;
-  };
-}
diff --git a/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/ott-mode/default.nix b/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/ott-mode/default.nix
new file mode 100644
index 000000000000..6eeead468ff2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/ott-mode/default.nix
@@ -0,0 +1,19 @@
+{ trivialBuild
+, ott
+, haskellPackages
+}:
+
+trivialBuild {
+  pname = "ott-mode";
+
+  inherit (ott) src version;
+
+  postUnpack = ''
+    mv $sourceRoot/emacs/ott-mode.el $sourceRoot
+  '';
+
+  meta = {
+    description = "Emacs ott mode (from ott sources)";
+    inherit (haskellPackages.Agda.meta) homepage license;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/plz/default.nix b/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/plz/default.nix
new file mode 100644
index 000000000000..9992fb877a9f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/plz/default.nix
@@ -0,0 +1,23 @@
+{ trivialBuild, lib, fetchFromGitHub, curl }:
+
+trivialBuild {
+  pname = "plz";
+  version = "unstable-2021-08-22";
+
+  src = fetchFromGitHub {
+    owner = "alphapapa";
+    repo = "plz.el";
+    rev = "7e456638a651bab3a814e3ea81742dd917509cbb";
+    sha256 = "sha256-8kn9ax1AVF6f9iCTqvVeJZihs03pYAhLjUDooG/ubxY=";
+  };
+
+  postPatch = ''
+    substituteInPlace ./plz.el --replace 'plz-curl-program "curl"' 'plz-curl-program "${curl}/bin/curl"'
+  '';
+
+  meta = {
+    description = "plz is an HTTP library for Emacs";
+    license = lib.licenses.gpl3Only;
+    platforms = lib.platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/power-mode/default.nix b/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/power-mode/default.nix
index 035c906c8ab3..75015a959c2b 100644
--- a/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/power-mode/default.nix
+++ b/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/power-mode/default.nix
@@ -1,12 +1,12 @@
 { lib
-, stdenv
+, trivialBuild
 , fetchFromGitHub
 , emacs
 }:
 
-stdenv.mkDerivation rec {
+trivialBuild rec {
   pname = "power-mode";
-  version = "2021-06-06";
+  version = "0.0.0+unstable=2021-06-06";
 
   src = fetchFromGitHub {
     owner = "elizagamedev";
@@ -15,15 +15,8 @@ stdenv.mkDerivation rec {
     hash = "sha256-Wy8o9QTWqvH9cP7xsTpF5QSd4mWNIPXJTadoADKeHWY=";
   };
 
-  installPhase = ''
-    runHook preInstall
-    mkdir -p $out/share/emacs/site-lisp
-    install *.el $out/share/emacs/site-lisp
-    runHook postInstall
-  '';
-
   meta = {
-    homepage = "https://github.com/rougier/nano-theme";
+    homepage = "https://github.com/elizagamedev/power-mode.el";
     description = "Imbue Emacs with power!";
     inherit (emacs.meta) platforms;
   };
diff --git a/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/prolog/default.nix b/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/prolog/default.nix
index deac73a194ed..24df2b0d5dec 100644
--- a/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/prolog/default.nix
+++ b/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/prolog/default.nix
@@ -6,7 +6,7 @@ stdenv.mkDerivation {
 
   src = fetchurl {
     url = "http://bruda.ca/_media/emacs/prolog.el";
-    sha256 = "oCMzks4xuor8Il8Ll8PXh1zIvMl5qN0RCFJ9yKiHOHU=";
+    sha256 = "ZzIDFQWPq1vI9z3btgsHgn0axN6uRQn9Tt8TnqGybOk=";
   };
 
   buildCommand = ''
diff --git a/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/railgun/default.nix b/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/railgun/default.nix
index 240a2f29edf3..e49925e057ce 100644
--- a/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/railgun/default.nix
+++ b/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/railgun/default.nix
@@ -1,22 +1,25 @@
-{ lib, stdenv, fetchgit }:
+{ lib
+, trivialBuild
+, fetchFromGitHub
+, emacs
+}:
 
-stdenv.mkDerivation {
-  name = "railgun-2012-10-17";
+trivialBuild {
+  pname = "railgun";
+  version= "0.0.0+unstable=2012-10-17";
 
-  src = fetchgit {
-    url = "https://github.com/mbriggs/railgun.el.git";
+  src = fetchFromGitHub {
+    owner = "mbriggs";
+    repo = "railgun.el";
     rev = "66aaa1b091baef53a69d0d7425f48d184b865fb8";
-    sha256 = "00x09vjd3jz5f73qkf5v1y402zn8vl8dsyfwlq9z646p18ba7gyh";
+    hash = "sha256-0L+jFgrXEPMTptx53RDdyH4BiA+7uInHceXL0eROoAM=";
   };
 
-  installPhase = ''
-    mkdir -p $out/share/emacs/site-lisp
-    cp *.el *.elc $out/share/emacs/site-lisp/
-  '';
+  buildInputs = [ emacs ];
 
-  meta = {
-    description = "Propel yourself through a rails project with the power of magnets";
+  meta = with lib; {
     homepage = "https://github.com/mbriggs/railgun.el";
-    platforms = lib.platforms.all;
+    description = "Propel yourself through a rails project with the power of magnets";
+    inherit (emacs.meta) platforms;
   };
 }
diff --git a/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/rect-mark/default.nix b/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/rect-mark/default.nix
index 2214b1448d30..aef7fbf8c9a0 100644
--- a/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/rect-mark/default.nix
+++ b/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/rect-mark/default.nix
@@ -1,35 +1,26 @@
-{ lib, stdenv, fetchurl, emacs }:
+{ lib
+, trivialBuild
+, fetchFromGitHub
+, emacs
+ }:
 
-stdenv.mkDerivation {
+trivialBuild rec {
   pname = "rect-mark";
   version = "1.4";
 
-  src = fetchurl {
-    url = "http://emacswiki.org/emacs/download/rect-mark.el";
-    sha256 = "0pyyg53z9irh5jdfvh2qp4pm8qrml9r7lh42wfmdw6c7f56qryh8";
+  src = fetchFromGitHub {
+    owner = "emacsmirror";
+    repo = pname;
+    rev = version;
+    hash = "sha256-/8T1VTYkKUxlNWXuuS54S5jpl4UxJBbgSuWc17a/VyM=";
   };
 
-  dontUnpack = true;
-
   buildInputs = [ emacs ];
 
-  buildPhase = ''
-    cp $src rect-mark.el
-    emacs --batch -f batch-byte-compile rect-mark.el
-  '';
-
-  installPhase = ''
-    runHook preInstall
-    install -d $out/share/emacs/site-lisp
-    install rect-mark.el* $out/share/emacs/site-lisp
-    runHook postInstall
-  '';
-
-  meta = {
-    description = "Mark a rectangle of text with highlighting";
+  meta = with lib; {
     homepage = "http://emacswiki.org/emacs/RectangleMark";
-    license = lib.licenses.gpl2Plus;
-
-    platforms = lib.platforms.all;
+    description = "Mark a rectangle of text with highlighting";
+    license = licenses.gpl2Plus;
+    inherit (emacs.meta) platforms;
   };
 }
diff --git a/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/sunrise-commander/default.nix b/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/sunrise-commander/default.nix
index 095d79bdf62b..09889593fe69 100644
--- a/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/sunrise-commander/default.nix
+++ b/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/sunrise-commander/default.nix
@@ -1,10 +1,10 @@
 { lib
-, stdenv
+, trivialBuild
 , fetchFromGitHub
 , emacs
 }:
 
-stdenv.mkDerivation rec {
+trivialBuild rec {
   pname = "sunrise-commander";
   version = "0.0.0+unstable=2021-07-22";
 
@@ -19,19 +19,6 @@ stdenv.mkDerivation rec {
     emacs
   ];
 
-  buildPhase = ''
-    runHook preBuild
-    emacs -q --no-splash --directory=. --batch --file=batch-byte-compile *.el
-    runHook postBuild
-  '';
-
-  installPhase = ''
-    runHook preInstall
-    mkdir -p $out/share/emacs/site-lisp
-    install *.el* $out/share/emacs/site-lisp
-    runHook postInstall
-  '';
-
   meta = with lib; {
     homepage = "https://github.com/sunrise-commander/sunrise-commander/";
     description = "Orthodox (two-pane) file manager for Emacs";
diff --git a/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/tramp/default.nix b/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/tramp/default.nix
index 72dbf7a0f476..fee2cca6926a 100644
--- a/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/tramp/default.nix
+++ b/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/tramp/default.nix
@@ -7,11 +7,11 @@
 
 stdenv.mkDerivation rec {
   pname = "tramp";
-  version = "2.5.0";
+  version = "2.5.1";
 
   src = fetchurl {
     url = "mirror://gnu/tramp/${pname}-${version}.tar.gz";
-    sha256 = "sha256-w+6HJA8kFb75Z+7vM1zDnzOnkSSIXKnLVyCcEh+nMGY=";
+    hash = "sha256-+jjWBcj2dP9Xyj4dzpAX86KnajVa9eFDcjD9xTw6vks=";
   };
 
   buildInputs = [
@@ -19,10 +19,11 @@ stdenv.mkDerivation rec {
     texinfo
   ];
 
-  meta = {
+  meta = with lib; {
     homepage = "https://www.gnu.org/software/tramp";
-    description = "Transparently access remote files from Emacs. Newer versions than built-in.";
-    license = lib.licenses.gpl3Plus;
+    description = "Transparently access remote files from Emacs (latest version)";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ AndersonTorres ];
     inherit (emacs.meta) platforms;
   };
 }
diff --git a/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/urweb-mode/default.nix b/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/urweb-mode/default.nix
new file mode 100644
index 000000000000..6f7e822d81d3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/urweb-mode/default.nix
@@ -0,0 +1,27 @@
+{ lib
+, trivialBuild
+, urweb
+, cl-lib
+, flycheck
+}:
+
+trivialBuild {
+  pname = "urweb-mode";
+
+  inherit (urweb) src version;
+
+  packageRequires = [
+    cl-lib
+    flycheck
+  ];
+
+  postUnpack = ''
+    sourceRoot=$sourceRoot/src/elisp
+  '';
+
+  meta = {
+    description = "Major mode for editing Ur/Web";
+    inherit (urweb.meta) license homepage;
+    maintainers = [ lib.maintainers.sternenseemann ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/youtube-dl/default.nix b/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/youtube-dl/default.nix
index c99693463a64..b0df381b5f95 100644
--- a/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/youtube-dl/default.nix
+++ b/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/youtube-dl/default.nix
@@ -1,8 +1,13 @@
-{ stdenv, fetchFromGitHub, emacs, lib }:
+{ lib
+, stdenv
+, fetchFromGitHub
+, trivialBuild
+, emacs
+}:
 
-stdenv.mkDerivation {
+trivialBuild {
   pname = "youtube-dl";
-  version = "2018-10-12";
+  version = "0.0.0+unstable=2018-10-12";
 
   src = fetchFromGitHub {
     owner = "skeeto";
@@ -13,24 +18,11 @@ stdenv.mkDerivation {
 
   buildInputs = [ emacs ];
 
-  buildPhase = ''
-    runHook preBuild
-    emacs -L . --batch -f batch-byte-compile *.el
-    runHook postBuild
-  '';
-
-  installPhase = ''
-    runHook preInstall
-    install -d $out/share/emacs/site-lisp
-    install *.el *.elc $out/share/emacs/site-lisp
-    runHook postInstall
-  '';
-
-  meta = {
-    description = "Emacs frontend to the youtube-dl utility";
+  meta = with lib; {
+    description = "Emacs youtube-dl download manager";
     homepage = "https://github.com/skeeto/youtube-dl-emacs";
-    license = lib.licenses.unlicense;
-    maintainers = with lib.maintainers; [ leungbk ];
-    platforms = emacs.meta.platforms;
+    license = licenses.unlicense;
+    maintainers = with maintainers; [ leungbk ];
+    inherit (emacs.meta) platforms;
   };
 }
diff --git a/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/zeitgeist/default.nix b/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/zeitgeist/default.nix
deleted file mode 100644
index 67bf7b500ff7..000000000000
--- a/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/zeitgeist/default.nix
+++ /dev/null
@@ -1,25 +0,0 @@
-{ lib, stdenv, fetchurl, emacs }:
-
-stdenv.mkDerivation {
-  name = "zeitgeist-20120221";
-
-  dontUnpack = true;
-
-  src = fetchurl {
-    url = "https://raw.githubusercontent.com/alexmurray/dotfiles/master/.emacs.d/vendor/zeitgeist.el";
-    sha256 = "0fssx3lp8ar3b1ichbagir7z17habv367l7zz719ipycr24rf1nw";
-  };
-
-  buildInputs = [ emacs ];
-
-  installPhase = ''
-    mkdir -p $out/share/emacs/site-lisp
-    cp $src $out/share/emacs/site-lisp/zeitgeist.el
-  '';
-
-  meta = {
-    description = "Integreate Emacs with Zeitgeist";
-    homepage = "http://zeitgeist-project.com/";
-    platforms = lib.platforms.all;
-  };
-}