about summary refs log tree commit diff
path: root/pkgs/applications/editors/emacs/elisp-packages
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/applications/editors/emacs/elisp-packages')
-rw-r--r--pkgs/applications/editors/emacs/elisp-packages/elpa-devel-packages.nix4
-rw-r--r--pkgs/applications/editors/emacs/elisp-packages/elpa-packages.nix5
-rw-r--r--pkgs/applications/editors/emacs/elisp-packages/libgenerated.nix3
-rw-r--r--pkgs/applications/editors/emacs/elisp-packages/manual-packages.nix22
-rw-r--r--pkgs/applications/editors/emacs/elisp-packages/manual-packages/acm-terminal/default.nix51
-rw-r--r--pkgs/applications/editors/emacs/elisp-packages/manual-packages/acm/default.nix31
-rw-r--r--pkgs/applications/editors/emacs/elisp-packages/manual-packages/agda-input/default.nix18
-rw-r--r--pkgs/applications/editors/emacs/elisp-packages/manual-packages/agda2-mode/default.nix26
-rw-r--r--pkgs/applications/editors/emacs/elisp-packages/manual-packages/codeium/default.nix17
-rw-r--r--pkgs/applications/editors/emacs/elisp-packages/manual-packages/color-theme-solarized/default.nix26
-rw-r--r--pkgs/applications/editors/emacs/elisp-packages/manual-packages/consult-gh/default.nix40
-rw-r--r--pkgs/applications/editors/emacs/elisp-packages/manual-packages/control-lock/default.nix14
-rw-r--r--pkgs/applications/editors/emacs/elisp-packages/manual-packages/copilot/default.nix29
-rw-r--r--pkgs/applications/editors/emacs/elisp-packages/manual-packages/ebuild-mode/default.nix10
-rw-r--r--pkgs/applications/editors/emacs/elisp-packages/manual-packages/el-easydraw/default.nix49
-rw-r--r--pkgs/applications/editors/emacs/elisp-packages/manual-packages/elisp-ffi/default.nix45
-rw-r--r--pkgs/applications/editors/emacs/elisp-packages/manual-packages/emacs-conflict/default.nix24
-rw-r--r--pkgs/applications/editors/emacs/elisp-packages/manual-packages/ess-R-object-popup/default.nix29
-rw-r--r--pkgs/applications/editors/emacs/elisp-packages/manual-packages/evil-markdown/default.nix28
-rw-r--r--pkgs/applications/editors/emacs/elisp-packages/manual-packages/font-lock-plus/default.nix18
-rw-r--r--pkgs/applications/editors/emacs/elisp-packages/manual-packages/ghc-mod/default.nix25
-rw-r--r--pkgs/applications/editors/emacs/elisp-packages/manual-packages/git-undo/default.nix22
-rw-r--r--pkgs/applications/editors/emacs/elisp-packages/manual-packages/grid/default.nix5
-rw-r--r--pkgs/applications/editors/emacs/elisp-packages/manual-packages/haskell-unicode-input-method/default.nix34
-rw-r--r--pkgs/applications/editors/emacs/elisp-packages/manual-packages/helm-words/default.nix26
-rw-r--r--pkgs/applications/editors/emacs/elisp-packages/manual-packages/hsc3/default.nix26
-rw-r--r--pkgs/applications/editors/emacs/elisp-packages/manual-packages/idris2-mode/default.nix27
-rw-r--r--pkgs/applications/editors/emacs/elisp-packages/manual-packages/isearch-plus/default.nix24
-rw-r--r--pkgs/applications/editors/emacs/elisp-packages/manual-packages/isearch-prop/default.nix26
-rw-r--r--pkgs/applications/editors/emacs/elisp-packages/manual-packages/jam-mode/default.nix22
-rw-r--r--pkgs/applications/editors/emacs/elisp-packages/manual-packages/ligo-mode/default.nix34
-rw-r--r--pkgs/applications/editors/emacs/elisp-packages/manual-packages/llvm-mode/default.nix11
-rw-r--r--pkgs/applications/editors/emacs/elisp-packages/manual-packages/lsp-bridge/default.nix109
-rw-r--r--pkgs/applications/editors/emacs/elisp-packages/manual-packages/lspce/default.nix69
-rw-r--r--pkgs/applications/editors/emacs/elisp-packages/manual-packages/lspce/module.nix40
-rw-r--r--pkgs/applications/editors/emacs/elisp-packages/manual-packages/matrix-client/default.nix58
-rw-r--r--pkgs/applications/editors/emacs/elisp-packages/manual-packages/mind-wave/default.nix89
-rw-r--r--pkgs/applications/editors/emacs/elisp-packages/manual-packages/notdeft/default.nix77
-rw-r--r--pkgs/applications/editors/emacs/elisp-packages/manual-packages/ott-mode/default.nix19
-rw-r--r--pkgs/applications/editors/emacs/elisp-packages/manual-packages/perl-completion/default.nix20
-rw-r--r--pkgs/applications/editors/emacs/elisp-packages/manual-packages/pod-mode/default.nix31
-rw-r--r--pkgs/applications/editors/emacs/elisp-packages/manual-packages/prisma-mode/default.nix26
-rw-r--r--pkgs/applications/editors/emacs/elisp-packages/manual-packages/prolog/default.nix16
-rw-r--r--pkgs/applications/editors/emacs/elisp-packages/manual-packages/rect-mark/default.nix28
-rw-r--r--pkgs/applications/editors/emacs/elisp-packages/manual-packages/sunrise-commander/default.nix16
-rw-r--r--pkgs/applications/editors/emacs/elisp-packages/manual-packages/sv-kalender/default.nix19
-rw-r--r--pkgs/applications/editors/emacs/elisp-packages/manual-packages/texpresso/default.nix13
-rw-r--r--pkgs/applications/editors/emacs/elisp-packages/manual-packages/tsc/default.nix10
-rw-r--r--pkgs/applications/editors/emacs/elisp-packages/manual-packages/urweb-mode/default.nix19
-rw-r--r--pkgs/applications/editors/emacs/elisp-packages/manual-packages/voicemacs/0000-add-missing-require.patch (renamed from pkgs/applications/editors/emacs/elisp-packages/manual-packages/voicemacs/add-missing-require.patch)0
-rw-r--r--pkgs/applications/editors/emacs/elisp-packages/manual-packages/voicemacs/default.nix60
-rw-r--r--pkgs/applications/editors/emacs/elisp-packages/manual-packages/wat-mode/default.nix21
-rw-r--r--pkgs/applications/editors/emacs/elisp-packages/manual-packages/yes-no/default.nix19
-rw-r--r--pkgs/applications/editors/emacs/elisp-packages/manual-packages/youtube-dl/default.nix22
-rw-r--r--pkgs/applications/editors/emacs/elisp-packages/melpa-packages.nix3
-rw-r--r--pkgs/applications/editors/emacs/elisp-packages/nongnu-packages.nix4
-rw-r--r--pkgs/applications/editors/emacs/elisp-packages/recipes-archive-melpa.json8
57 files changed, 662 insertions, 905 deletions
diff --git a/pkgs/applications/editors/emacs/elisp-packages/elpa-devel-packages.nix b/pkgs/applications/editors/emacs/elisp-packages/elpa-devel-packages.nix
index 192320fab674d..085c0410bca4c 100644
--- a/pkgs/applications/editors/emacs/elisp-packages/elpa-devel-packages.nix
+++ b/pkgs/applications/editors/emacs/elisp-packages/elpa-devel-packages.nix
@@ -32,7 +32,7 @@ self: let
     });
   };
 
-  elpaBuild = import ../../../../build-support/emacs/elpa.nix {
+  elpaBuild = import ../build-support/elpa.nix {
     inherit lib stdenv texinfo writeText gcc;
     inherit (self) emacs;
   };
@@ -121,4 +121,4 @@ self: let
 
   in elpaDevelPackages // { inherit elpaBuild; });
 
-in (generateElpa { }) // { __attrsFailEvaluation = true; }
+in generateElpa { }
diff --git a/pkgs/applications/editors/emacs/elisp-packages/elpa-packages.nix b/pkgs/applications/editors/emacs/elisp-packages/elpa-packages.nix
index 3e8ab4625fec2..fac31ad711db8 100644
--- a/pkgs/applications/editors/emacs/elisp-packages/elpa-packages.nix
+++ b/pkgs/applications/editors/emacs/elisp-packages/elpa-packages.nix
@@ -32,7 +32,7 @@ self: let
     });
   };
 
-  elpaBuild = import ../../../../build-support/emacs/elpa.nix {
+  elpaBuild = import ../build-support/elpa.nix {
     inherit lib stdenv texinfo writeText gcc;
     inherit (self) emacs;
   };
@@ -210,4 +210,5 @@ self: let
 
   in elpaPackages // { inherit elpaBuild; });
 
-in (generateElpa { }) // { __attrsFailEvaluation = true; }
+in
+generateElpa { }
diff --git a/pkgs/applications/editors/emacs/elisp-packages/libgenerated.nix b/pkgs/applications/editors/emacs/elisp-packages/libgenerated.nix
index 36576f7c12398..391065ccfb20d 100644
--- a/pkgs/applications/editors/emacs/elisp-packages/libgenerated.nix
+++ b/pkgs/applications/editors/emacs/elisp-packages/libgenerated.nix
@@ -79,7 +79,8 @@ in {
         lib.nameValuePair ename (
           self.callPackage ({ melpaBuild, fetchurl, ... }@pkgargs:
           melpaBuild {
-            inherit pname ename commit;
+            inherit pname ename;
+            inherit (sourceArgs) commit;
             version = lib.optionalString (version != null)
               (lib.concatStringsSep "." (map toString
                 # Hack: Melpa archives contains versions with parse errors such as [ 4 4 -4 413 ] which should be 4.4-413
diff --git a/pkgs/applications/editors/emacs/elisp-packages/manual-packages.nix b/pkgs/applications/editors/emacs/elisp-packages/manual-packages.nix
index 73e7f9a2c6722..4b4abfc6f3002 100644
--- a/pkgs/applications/editors/emacs/elisp-packages/manual-packages.nix
+++ b/pkgs/applications/editors/emacs/elisp-packages/manual-packages.nix
@@ -11,8 +11,6 @@ in
 
   acm-terminal = callPackage ./manual-packages/acm-terminal { };
 
-  agda-input = callPackage ./manual-packages/agda-input { };
-
   agda2-mode = callPackage ./manual-packages/agda2-mode { };
 
   beancount = callPackage ./manual-packages/beancount { };
@@ -37,20 +35,14 @@ in
 
   enlight = callPackage ./manual-packages/enlight { };
 
-  ess-R-object-popup = callPackage ./manual-packages/ess-R-object-popup { };
-
   evil-markdown = callPackage ./manual-packages/evil-markdown { };
 
   font-lock-plus = callPackage ./manual-packages/font-lock-plus { };
 
-  ghc-mod = callPackage ./manual-packages/ghc-mod { };
-
   git-undo = callPackage ./manual-packages/git-undo { };
 
   grid = callPackage ./manual-packages/grid { };
 
-  haskell-unicode-input-method = callPackage ./manual-packages/haskell-unicode-input-method { };
-
   helm-words = callPackage ./manual-packages/helm-words { };
 
   idris2-mode = callPackage ./manual-packages/idris2-mode { };
@@ -66,7 +58,7 @@ in
   llvm-mode = callPackage ./manual-packages/llvm-mode { };
 
   lsp-bridge = callPackage ./manual-packages/lsp-bridge {
-    inherit (pkgs) python3 git go gopls pyright;
+    inherit (pkgs) basedpyright git go gopls python3;
   };
 
   lspce = callPackage ./manual-packages/lspce { };
@@ -81,8 +73,6 @@ in
 
   ott-mode = callPackage ./manual-packages/ott-mode { };
 
-  perl-completion = callPackage ./manual-packages/perl-completion { };
-
   pod-mode = callPackage ./manual-packages/pod-mode { };
 
   prisma-mode = callPackage ./manual-packages/prisma-mode { };
@@ -125,6 +115,12 @@ in
   emacsSessionManagement = self.session-management-for-emacs;
   rectMark = self.rect-mark;
   sunriseCommander = self.sunrise-commander;
-
-  __attrsFailEvaluation = true;
+}
+### Aliases
+// lib.optionalAttrs pkgs.config.allowAliases {
+  agda-input = throw "emacsPackages.agda-input is contained in emacsPackages.agda2-mode, please use that instead."; # Added 2024-07-17
+  ess-R-object-popup = throw "emacsPackages.ess-R-object-popup was deleted, since the upstream repo looks abandoned."; # Added 2024-07-15
+  ghc-mod = throw "emacsPackages.ghc-mod was deleted because it is deprecated, use haskell-language-server instead."; # Added 2024-07-17
+  haskell-unicode-input-method = throw "emacsPackages.haskell-unicode-input-method is contained in emacsPackages.haskell-mode, please use that instead."; # Added 2024-07-17
+  perl-completion = throw "emacsPackages.perl-completion was removed, since it is broken."; # Added 2024-07-19
 }
diff --git a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/acm-terminal/default.nix b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/acm-terminal/default.nix
index 970174f20c9f4..07e909b34a681 100644
--- a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/acm-terminal/default.nix
+++ b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/acm-terminal/default.nix
@@ -1,55 +1,34 @@
-{ lib
-, melpaBuild
-, fetchFromGitHub
-, acm
-, popon
-, writeText
-, writeScript
+{
+  lib,
+  melpaBuild,
+  fetchFromGitHub,
+  acm,
+  popon,
+  unstableGitUpdater,
 }:
 
-let
-  rev = "1851d8fa2a27d3fd8deeeb29cd21c3002b8351ba";
-in
 melpaBuild {
   pname = "acm-terminal";
-  version = "20231206.1141";
+  version = "0-unstable-2023-12-06";
 
   src = fetchFromGitHub {
     owner = "twlz0ne";
     repo = "acm-terminal";
-    inherit rev;
-    sha256 = "sha256-EYhFrOo0j0JSNTdcZCbyM0iLxaymUXi1u6jZy8lTOaY=";
+    rev = "1851d8fa2a27d3fd8deeeb29cd21c3002b8351ba";
+    hash = "sha256-EYhFrOo0j0JSNTdcZCbyM0iLxaymUXi1u6jZy8lTOaY=";
   };
 
-  commit = rev;
-
   packageRequires = [
     acm
     popon
   ];
 
-  recipe = writeText "recipe" ''
-    (acm-terminal :repo "twlz0ne/acm-terminal" :fetcher github)
-  '';
-
-  passthru.updateScript = writeScript "update.sh" ''
-    #!/usr/bin/env nix-shell
-    #!nix-shell -i bash -p common-updater-scripts coreutils git gnused
-    set -eu -o pipefail
-    tmpdir="$(mktemp -d)"
-    git clone --depth=1 https://github.com/twlz0ne/acm-terminal.git "$tmpdir"
-    pushd "$tmpdir"
-    commit=$(git show -s --pretty='format:%H')
-    # Based on: https://github.com/melpa/melpa/blob/2d8716906a0c9e18d6c979d8450bf1d15dd785eb/package-build/package-build.el#L523-L533
-    version=$(TZ=UTC git show -s --pretty='format:%cd' --date='format-local:%Y%m%d.%H%M' | sed 's|\.0*|.|')
-    popd
-    update-source-version emacsPackages.acm-terminal $version --rev="$commit"
-  '';
+  passthru.updateScript = unstableGitUpdater { hardcodeZeroVersion = true; };
 
-  meta = with lib; {
-    description = "Patch for LSP bridge acm on Terminal";
+  meta = {
     homepage = "https://github.com/twlz0ne/acm-terminal";
-    license = licenses.gpl3Plus;
-    maintainers = with maintainers; [ kira-bruneau ];
+    description = "Patch for LSP bridge acm on Terminal";
+    license = lib.licenses.gpl3Plus;
+    maintainers = with lib.maintainers; [ kira-bruneau ];
   };
 }
diff --git a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/acm/default.nix b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/acm/default.nix
index 5879865c901e2..1e411af1a871b 100644
--- a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/acm/default.nix
+++ b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/acm/default.nix
@@ -1,8 +1,8 @@
-{ lib
-, melpaBuild
-, lsp-bridge
-, yasnippet
-, writeText
+{
+  lib,
+  melpaBuild,
+  lsp-bridge,
+  yasnippet,
 }:
 
 melpaBuild {
@@ -10,23 +10,18 @@ melpaBuild {
   version = lsp-bridge.version;
 
   src = lsp-bridge.src;
-  commit = lsp-bridge.src.rev;
 
-  packageRequires = [
-    yasnippet
-  ];
+  packageRequires = [ yasnippet ];
 
-  recipe = writeText "recipe" ''
-    (acm
-      :repo "manateelazycat/lsp-bridge"
-      :fetcher github
-      :files ("acm/*.el" "acm/icons"))
-  '';
+  files = ''("acm/*.el" "acm/icons")'';
 
-  meta = with lib; {
+  meta = {
     description = "Asynchronous Completion Menu";
     homepage = "https://github.com/manateelazycat/lsp-bridge";
-    license = licenses.gpl3Only;
-    maintainers = with maintainers; [ fxttr kira-bruneau ];
+    license = lib.licenses.gpl3Only;
+    maintainers = with lib.maintainers; [
+      fxttr
+      kira-bruneau
+    ];
   };
 }
diff --git a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/agda-input/default.nix b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/agda-input/default.nix
deleted file mode 100644
index a3c820fac6e73..0000000000000
--- a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/agda-input/default.nix
+++ /dev/null
@@ -1,18 +0,0 @@
-{ 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/pkgs/applications/editors/emacs/elisp-packages/manual-packages/agda2-mode/default.nix b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/agda2-mode/default.nix
index 7418a842148a7..5eec518036eab 100644
--- a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/agda2-mode/default.nix
+++ b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/agda2-mode/default.nix
@@ -1,29 +1,15 @@
-{ trivialBuild
-, haskellPackages
-}:
+{ melpaBuild, haskellPackages }:
 let
-  Agda = haskellPackages.Agda.bin;
+  Agda = haskellPackages.Agda;
 in
-trivialBuild {
-  pname = "agda-mode";
-  version = Agda.version;
+melpaBuild {
+  pname = "agda2-mode";
+  inherit (Agda) src version;
 
-  dontUnpack = true;
-
-  # already byte-compiled by Agda builder
-  buildPhase = ''
-    agda=`${Agda}/bin/agda-mode locate`
-    cp `dirname $agda`/*.el* .
-  '';
+  files = ''("src/data/emacs-mode/*.el")'';
 
   meta = {
     inherit (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/pkgs/applications/editors/emacs/elisp-packages/manual-packages/codeium/default.nix b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/codeium/default.nix
index 1a31e8f9a28df..344843eeabc4e 100644
--- a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/codeium/default.nix
+++ b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/codeium/default.nix
@@ -1,22 +1,21 @@
-{ fetchFromGitHub, melpaBuild, pkgs, lib, substituteAll, writeText }:
+{
+  fetchFromGitHub,
+  melpaBuild,
+  pkgs,
+  lib,
+  substituteAll,
+}:
 
 melpaBuild {
   pname = "codeium";
   version = "1.6.13";
+
   src = fetchFromGitHub {
     owner = "Exafunction";
     repo = "codeium.el";
     rev = "1.6.13";
     hash = "sha256-CjT21GhryO8/iM0Uzm/s/I32WqVo4M3tSlHC06iEDXA=";
   };
-  commit = "02f9382c925633a19dc928e99b868fd5f6947e58";
-  buildInputs = [ pkgs.codeium ];
-
-  recipe = writeText "recipe" ''
-    (codeium
-      :repo "Exafunction/codeium.el"
-      :fetcher github)
-  '';
 
   patches = [
     (substituteAll {
diff --git a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/color-theme-solarized/default.nix b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/color-theme-solarized/default.nix
index 94486bdbfb4b4..f8ff5ef966d0d 100644
--- a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/color-theme-solarized/default.nix
+++ b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/color-theme-solarized/default.nix
@@ -1,26 +1,30 @@
-{ lib
-, trivialBuild
-, fetchFromGitHub
-, color-theme
+{
+  lib,
+  color-theme,
+  fetchFromGitHub,
+  melpaBuild,
+  unstableGitUpdater,
 }:
 
-trivialBuild {
+melpaBuild {
   pname = "color-theme-solarized";
-  version = "0-unstable-2017-10-24";
+  version = "0-unstable-2023-02-09";
 
   src = fetchFromGitHub {
     owner = "sellout";
     repo = "emacs-color-theme-solarized";
-    rev = "f3ca8902ea056fb8e46cb09f09c96294e31cd4ee";
-    hash = "sha256-oxX0lo6sxotEiR3nPrKPE9H01HKB3ohB/p8eEHFTp5k=";
+    rev = "b186e5d62d0b83cbf5cf38f7eb7a199dea9a3ee3";
+    hash = "sha256-7E8r56dzfD06tsQEnqU5mWSbwz9x9QPbzken2J/fhlg=";
   };
 
   packageRequires = [ color-theme ];
 
-  meta = with lib; {
+  passthru.updateScript = unstableGitUpdater { hardcodeZeroVersion = true; };
+
+  meta = {
     homepage = "http://ethanschoonover.com/solarized";
     description = "Precision colors for machines and people; Emacs implementation";
-    license = licenses.mit;
-    maintainers = with maintainers; [ samuelrivas AndersonTorres ];
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ AndersonTorres ];
   };
 }
diff --git a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/consult-gh/default.nix b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/consult-gh/default.nix
index e6e53f96f6590..9914285d70f2a 100644
--- a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/consult-gh/default.nix
+++ b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/consult-gh/default.nix
@@ -1,45 +1,35 @@
-{ lib
-, melpaBuild
-, fetchFromGitHub
-, consult
-, embark
-, forge
-, gh
-, markdown-mode
-, writeText
-, unstableGitUpdater
+{
+  lib,
+  consult,
+  embark,
+  fetchFromGitHub,
+  forge,
+  gh,
+  markdown-mode,
+  melpaBuild,
+  unstableGitUpdater,
+  writeText,
 }:
 
-let
-  commit = "1fe876d9552b6ec6af257a4299a34eca99b40539";
-in
 melpaBuild {
   pname = "consult-gh";
-  version = "20230706.438";
-
-  inherit commit;
+  version = "0.12-unstable-2024-04-23";
 
   src = fetchFromGitHub {
     owner = "armindarvish";
     repo = "consult-gh";
-    rev = commit;
-    hash = "sha256-bi+qlNvNMXbS4cXbXt01txwD2NAyAqJGNKeOtdtj7tg=";
+    rev = "3a07139a1f7e38b959ce177a122c8f47c401d7fa";
+    hash = "sha256-BZloG5RuQzC2RwCfvqPPhGcbsCabQWBnRHdU62rwNdo=";
   };
 
   packageRequires = [
     consult
     embark
     forge
-    gh
     markdown-mode
   ];
 
-  recipe = writeText "recipe" ''
-    (consult-gh
-      :repo "armindarvish/consult-gh"
-      :fetcher github
-      :files ("consult-gh-embark.el" "consult-gh-forge.el" "consult-gh.el"))
-  '';
+  propagatedUserEnvPkgs = [ gh ];
 
   passthru.updateScript = unstableGitUpdater { };
 
diff --git a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/control-lock/default.nix b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/control-lock/default.nix
index 279c2b74d1d9f..5a352c5c3bc49 100644
--- a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/control-lock/default.nix
+++ b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/control-lock/default.nix
@@ -1,18 +1,22 @@
-{ lib, trivialBuild, fetchurl }:
+{
+  lib,
+  fetchurl,
+  melpaBuild,
+}:
 
-trivialBuild {
+melpaBuild {
   pname = "control-lock";
+  version = "1.1.2";
 
   src = fetchurl {
     url = "https://raw.githubusercontent.com/emacsmirror/emacswiki.org/185fdc34fb1e02b43759ad933d3ee5646b0e78f8/control-lock.el";
     hash = "sha256-JCrmS3FSGDHSR+eAR0X/uO0nAgd3TUmFxwEVH5+KV+4=";
   };
 
-  version = "1.1.2";
-
   meta = {
-    description = "Like caps-lock, but for your control key.  Give your pinky a rest!";
     homepage = "https://www.emacswiki.org/emacs/control-lock.el";
+    description = "Like caps-lock, but for your control key";
+    license = lib.licenses.free;
     platforms = lib.platforms.all;
   };
 }
diff --git a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/copilot/default.nix b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/copilot/default.nix
index da7f779852158..406bd0c711004 100644
--- a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/copilot/default.nix
+++ b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/copilot/default.nix
@@ -1,33 +1,40 @@
 {
+  lib,
   dash,
   editorconfig,
+  f,
   fetchFromGitHub,
   nodejs,
   s,
-  trivialBuild,
+  melpaBuild,
 }:
-trivialBuild {
+melpaBuild {
   pname = "copilot";
-  version = "0-unstable-2023-12-26";
+  version = "0-unstable-2024-05-01";
+
   src = fetchFromGitHub {
-    owner = "zerolfx";
+    owner = "copilot-emacs";
     repo = "copilot.el";
-    rev = "d4fa14cea818e041b4a536c5052cf6d28c7223d7";
-    sha256 = "sha256-Tzs0Dawqa+OD0RSsf66ORbH6MdBp7BMXX7z+5UuNwq4=";
+    rev = "733bff26450255e092c10873580e9abfed8a81b8";
+    sha256 = "sha256-Knp36PtgA73gtYO+W1clQfr570bKCxTFsGW3/iH86A0=";
   };
+
+  files = ''(:defaults "dist")'';
+
   packageRequires = [
     dash
     editorconfig
-    nodejs
+    f
     s
   ];
-  postInstall = ''
-    cp -r $src/dist $LISPDIR
-  '';
+
+  propagatedUserEnvPkgs = [ nodejs ];
 
   meta = {
     description = "Unofficial copilot plugin for Emacs";
-    homepage = "https://github.com/zerolfx/copilot.el";
+    homepage = "https://github.com/copilot-emacs/copilot.el";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ bbigras ];
     platforms = [
       "x86_64-darwin"
       "x86_64-linux"
diff --git a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/ebuild-mode/default.nix b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/ebuild-mode/default.nix
index 07e234fca98b7..b6c53e26c5ed0 100644
--- a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/ebuild-mode/default.nix
+++ b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/ebuild-mode/default.nix
@@ -2,7 +2,6 @@
   lib,
   melpaBuild,
   fetchzip,
-  writeText,
 }:
 
 melpaBuild rec {
@@ -14,15 +13,6 @@ melpaBuild rec {
     hash = "sha256-GFEDWT88Boz/DxEcmFgf7u2NOoMjAN05yRiYwoYtvXc=";
   };
 
-  # not used but needs to be set; why?
-  commit = "a643f177b58aa8869f2f24814e990320aa4f0f96";
-
-  recipe = writeText "recipe" ''
-    (ebuild-mode
-     :url "https://gitweb.gentoo.org/proj/ebuild-mode.git"
-     :fetcher git)
-  '';
-
   meta = {
     homepage = "https://gitweb.gentoo.org/proj/ebuild-mode.git/";
     description = "Major modes for Gentoo package files";
diff --git a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/el-easydraw/default.nix b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/el-easydraw/default.nix
index 148bb9dbc7f98..448eb01f802ac 100644
--- a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/el-easydraw/default.nix
+++ b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/el-easydraw/default.nix
@@ -1,57 +1,32 @@
-{ lib
-, melpaBuild
-, fetchFromGitHub
-, writeText
-, writeScript
-, gzip
+{
+  lib,
+  melpaBuild,
+  fetchFromGitHub,
+  gzip,
+  unstableGitUpdater,
 }:
 
-let
-  rev = "99067dba625db3ac54ca4d3a3c811c41de207309";
-in
 melpaBuild {
   pname = "edraw";
-  version = "20240612.1012";
+  version = "1.2.0-unstable-2024-07-01";
 
   src = fetchFromGitHub {
     owner = "misohena";
     repo = "el-easydraw";
-    inherit rev;
-    hash = "sha256-32N8kXGFCvB6IHKwUsBGpdtAAf/p3nlq8mAdZrxLt0c=";
+    rev = "a6c849619abcdd80dc82ec5417195414ad438fa3";
+    hash = "sha256-CbcI1mmghc3HObg80bjScVDcJ1DHx9aX1WP2HlhAshs=";
   };
 
-  commit = rev;
+  propagatedUserEnvPkgs = [ gzip ];
 
-  packageRequires = [ gzip ];
+  files = ''(:defaults "msg")'';
 
-  recipe = writeText "recipe" ''
-    (edraw
-      :repo "misohena/el-easydraw"
-      :fetcher github
-      :files
-      ("*.el"
-       "msg"))
-  '';
-
-  passthru.updateScript = writeScript "update.sh" ''
-    #!/usr/bin/env nix-shell
-    #!nix-shell -i bash -p common-updater-scripts coreutils git gnused
-    set -eu -o pipefail
-    tmpdir="$(mktemp -d)"
-    git clone --depth=1 https://github.com/misohena/el-easydraw.git "$tmpdir"
-    pushd "$tmpdir"
-    commit=$(git show -s --pretty='format:%H')
-    # Based on: https://github.com/melpa/melpa/blob/2d8716906a0c9e18d6c979d8450bf1d15dd785eb/package-build/package-build.el#L523-L533
-    version=$(TZ=UTC git show -s --pretty='format:%cd' --date='format-local:%Y%m%d.%H%M' | sed 's|\.0*|.|')
-    popd
-    update-source-version emacsPackages.el-easydraw $version --rev="$commit"
-  '';
+  passthru.updateScript = unstableGitUpdater { tagPrefix = "v"; };
 
   meta = {
     homepage = "https://github.com/misohena/el-easydraw";
     description = "Embedded drawing tool for Emacs";
     license = lib.licenses.gpl3;
     maintainers = with lib.maintainers; [ brahyerr ];
-    platforms = lib.platforms.all;
   };
 }
diff --git a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/elisp-ffi/default.nix b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/elisp-ffi/default.nix
index 74b829701b0b5..3bc5b686e5488 100644
--- a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/elisp-ffi/default.nix
+++ b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/elisp-ffi/default.nix
@@ -1,24 +1,21 @@
-{ lib
-, melpaBuild
-, fetchFromGitHub
-, pkg-config
-, libffi
-, writeText
+{
+  lib,
+  fetchFromGitHub,
+  libffi,
+  melpaBuild,
+  pkg-config,
+  unstableGitUpdater,
 }:
 
-let
-  rev = "da37c516a0e59bdce63fb2dc006a231dee62a1d9";
-in melpaBuild {
+melpaBuild {
   pname = "elisp-ffi";
-  version = "20170518.0";
-
-  commit = rev;
+  version = "1.0.0-unstable-2017-05-18";
 
   src = fetchFromGitHub {
     owner = "skeeto";
     repo = "elisp-ffi";
-    inherit rev;
-    sha256 = "sha256-StOezQEnNTjRmjY02ub5FRh59aL6gWfw+qgboz0wF94=";
+    rev = "da37c516a0e59bdce63fb2dc006a231dee62a1d9";
+    hash = "sha256-StOezQEnNTjRmjY02ub5FRh59aL6gWfw+qgboz0wF94=";
   };
 
   nativeBuildInputs = [ pkg-config ];
@@ -28,20 +25,20 @@ in melpaBuild {
   preBuild = ''
     mv ffi.el elisp-ffi.el
     make
- '';
-
-  recipe = writeText "recipe" ''
-   (elisp-ffi :repo "skeeto/elisp-ffi" :fetcher github)
   '';
 
+  passthru.updateScript = unstableGitUpdater { };
+
   meta = {
+    homepage = "https://github.com/skeeto/elisp-ffi";
     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 = lib.licenses.publicDomain;
+      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 = lib.licenses.unlicense;
+    maintainers = with lib.maintainers; [ AndersonTorres ];
   };
 }
diff --git a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/emacs-conflict/default.nix b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/emacs-conflict/default.nix
index b32ee2f8a9f6f..fea6905e6f31f 100644
--- a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/emacs-conflict/default.nix
+++ b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/emacs-conflict/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, fetchFromGitHub
-, trivialBuild
-, emacs
+{
+  lib,
+  fetchFromGitHub,
+  melpaBuild,
+  unstableGitUpdater,
 }:
 
-trivialBuild {
+melpaBuild {
   pname = "emacs-conflict";
   version = "0-unstable-2022-11-21";
 
@@ -12,14 +13,15 @@ trivialBuild {
     owner = "ibizaman";
     repo = "emacs-conflict";
     rev = "9f236b93930f3ceb4cb0258cf935c99599191de3";
-    sha256 = "sha256-DIGvnotSQYIgHxGxtyCALHd8ZbrfkmdvjLXlkcqQ6v4=";
+    hash = "sha256-DIGvnotSQYIgHxGxtyCALHd8ZbrfkmdvjLXlkcqQ6v4=";
   };
 
-  meta = with lib; {
-    description = "Resolve conflicts happening when using file synchronization tools";
+  passthru.updateScript = unstableGitUpdater { hardcodeZeroVersion = true; };
+
+  meta = {
     homepage = "https://github.com/ibizaman/emacs-conflict";
-    license = licenses.gpl3;
-    maintainers = with maintainers; [ ibizaman ];
-    inherit (emacs.meta) platforms;
+    description = "Resolve conflicts happening when using file synchronization tools";
+    license = lib.licenses.gpl3Plus;
+    maintainers = with lib.maintainers; [ ibizaman ];
   };
 }
diff --git a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/ess-R-object-popup/default.nix b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/ess-R-object-popup/default.nix
deleted file mode 100644
index 7809dcd735660..0000000000000
--- a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/ess-R-object-popup/default.nix
+++ /dev/null
@@ -1,29 +0,0 @@
-{ trivialBuild
-, fetchFromGitHub
-, emacs
-, popup
-, ess
-}:
-
-trivialBuild rec {
-  pname = "ess-R-object-popup";
-  version = "1.0";
-
-  src = fetchFromGitHub {
-    owner = "myuhe";
-    repo = "ess-R-object-popup.el";
-    rev = "v${version}";
-    hash = "sha256-YN8ZLXEbwTFdFfovkV2IXV9v6y/PTgCdiRQqbpRaF2E=";
-  };
-
-  packageRequires = [
-    popup
-    ess
-  ];
-
-  meta = {
-    homepage = "https://github.com/myuhe/ess-R-object-popup.el";
-    description = "Popup descriptions of R objects";
-    inherit (emacs.meta) platforms;
-  };
-}
diff --git a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/evil-markdown/default.nix b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/evil-markdown/default.nix
index b95b05f986107..57249b72fbb86 100644
--- a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/evil-markdown/default.nix
+++ b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/evil-markdown/default.nix
@@ -1,12 +1,13 @@
-{ lib
-, trivialBuild
-, fetchFromGitHub
-, emacs
-, evil
-, markdown-mode
+{
+  lib,
+  evil,
+  fetchFromGitHub,
+  markdown-mode,
+  melpaBuild,
+  unstableGitUpdater,
 }:
 
-trivialBuild rec {
+melpaBuild {
   pname = "evil-markdown";
   version = "0-unstable-2021-07-21";
 
@@ -17,18 +18,17 @@ trivialBuild rec {
     hash = "sha256-HBBuZ1VWIn6kwK5CtGIvHM1+9eiNiKPH0GUsyvpUVN8=";
   };
 
-  buildInputs = propagatedUserEnvPkgs;
-
-  propagatedUserEnvPkgs = [
+  packageRequires = [
     evil
     markdown-mode
   ];
 
-  meta = with lib; {
+  passthru.updateScript = unstableGitUpdater { hardcodeZeroVersion = true; };
+
+  meta = {
     homepage = "https://github.com/Somelauw/evil-markdown";
     description = "Integrates Emacs evil and markdown";
-    license = licenses.gpl3Plus;
-    maintainers = with maintainers; [ leungbk ];
-    inherit (emacs.meta) platforms;
+    license = lib.licenses.gpl3Plus;
+    maintainers = with lib.maintainers; [ leungbk ];
   };
 }
diff --git a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/font-lock-plus/default.nix b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/font-lock-plus/default.nix
index be52cf155e5b3..d7e8390b40b81 100644
--- a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/font-lock-plus/default.nix
+++ b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/font-lock-plus/default.nix
@@ -1,10 +1,13 @@
-{ lib
-, fetchFromGitHub
-, trivialBuild
+{
+  lib,
+  fetchFromGitHub,
+  melpaBuild,
+  unstableGitUpdater,
 }:
 
-trivialBuild {
+melpaBuild {
   pname = "font-lock-plus";
+  ename = "font-lock+";
   version = "208-unstable-2018-01-01";
 
   src = fetchFromGitHub {
@@ -14,9 +17,12 @@ trivialBuild {
     hash = "sha256-lFmdVMXIIXZ9ZohAJw5rhxpTv017qIyzmpuKOWDdeJ4=";
   };
 
-  meta = with lib; {
+  passthru.updateScript = unstableGitUpdater { };
+
+  meta = {
     homepage = "https://github.com/emacsmirror/font-lock-plus";
     description = "Enhancements to standard library font-lock.el";
-    license = licenses.gpl2Plus;
+    license = lib.licenses.gpl2Plus;
+    maintainers = with lib.maintainers; [ AndersonTorres ];
   };
 }
diff --git a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/ghc-mod/default.nix b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/ghc-mod/default.nix
deleted file mode 100644
index e9ce9a35c409b..0000000000000
--- a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/ghc-mod/default.nix
+++ /dev/null
@@ -1,25 +0,0 @@
-{ lib
-, melpaBuild
-, haskell-mode
-, haskellPackages
-, writeText
-}:
-
-melpaBuild {
-  pname = "ghc";
-
-  inherit (haskellPackages.ghc-mod) version src;
-
-  packageRequires = [ haskell-mode ];
-
-  propagatedUserEnvPkgs = [ haskellPackages.ghc-mod ];
-
-  recipe = writeText "recipe" ''
-    (ghc-mod :repo "DanielG/ghc-mod" :fetcher github :files ("elisp/*.el"))
-  '';
-
-  meta = {
-    description = "Extension of haskell-mode that provides completion of symbols and documentation browsing";
-    license = lib.licenses.bsd3;
-  };
-}
diff --git a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/git-undo/default.nix b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/git-undo/default.nix
index f0f16c8cf0636..74574c98cb430 100644
--- a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/git-undo/default.nix
+++ b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/git-undo/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, fetchFromGitHub
-, emacs
-, trivialBuild
+{
+  lib,
+  fetchFromGitHub,
+  melpaBuild,
+  unstableGitUpdater,
 }:
 
-trivialBuild {
+melpaBuild {
   pname = "git-undo";
   version = "0-unstable-2019-12-21";
 
@@ -12,14 +13,15 @@ trivialBuild {
     owner = "jwiegley";
     repo = "git-undo-el";
     rev = "cf31e38e7889e6ade7d2d2b9f8719fd44f52feb5";
-    sha256 = "sha256-cVkK9EF6qQyVV3uVqnBEjF8e9nEx/8ixnM8PvxqCyYE=";
+    hash = "sha256-cVkK9EF6qQyVV3uVqnBEjF8e9nEx/8ixnM8PvxqCyYE=";
   };
 
-  meta = with lib; {
+  passthru.updateScript = unstableGitUpdater { hardcodeZeroVersion = true; };
+
+  meta = {
     homepage = "https://github.com/jwiegley/git-undo-el";
     description = "Revert region to most recent Git-historical version";
-    license = licenses.gpl2Plus;
-    maintainers = with maintainers; [ leungbk ];
-    inherit (emacs.meta) platforms;
+    license = lib.licenses.gpl2Plus;
+    maintainers = with lib.maintainers; [ leungbk ];
   };
 }
diff --git a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/grid/default.nix b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/grid/default.nix
index 91b69b0fbbda2..0b8b5108043c4 100644
--- a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/grid/default.nix
+++ b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/grid/default.nix
@@ -2,11 +2,12 @@
   lib,
   fetchFromGitHub,
   melpaBuild,
+  unstableGitUpdater,
 }:
 
 melpaBuild {
   pname = "grid";
-  version = "20240526.1305";
+  version = "0-unstable-2024-05-26";
 
   src = fetchFromGitHub {
     owner = "ichernyshovvv";
@@ -15,6 +16,8 @@ melpaBuild {
     hash = "sha256-3QDw4W3FbFvb2zpkDHAo9BJKxs3LaehyvUVJPKqS9RE=";
   };
 
+  passthru.updateScript = unstableGitUpdater { hardcodeZeroVersion = true; };
+
   meta = {
     homepage = "https://github.com/ichernyshovvv/grid.el";
     description = "Library to put text data into boxes and manipulate them";
diff --git a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/haskell-unicode-input-method/default.nix b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/haskell-unicode-input-method/default.nix
deleted file mode 100644
index 1d9fa6a0c084a..0000000000000
--- a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/haskell-unicode-input-method/default.nix
+++ /dev/null
@@ -1,34 +0,0 @@
-{ lib
-, melpaBuild
-, fetchFromGitHub
-, writeText
-}:
-
-let
-  rev = "d8d168148c187ed19350bb7a1a190217c2915a63";
-in melpaBuild {
-  pname = "haskell-unicode-input-method";
-  version = "20110905.2307";
-
-  commit = rev;
-
-  src = fetchFromGitHub {
-    owner = "roelvandijk";
-    repo = "emacs-haskell-unicode-input-method";
-    inherit rev;
-    sha256 = "09b7bg2s9aa4s8f2kdqs4xps3jxkq5wsvbi87ih8b6id38blhf78";
-  };
-
-  recipe = 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;
-  };
-}
diff --git a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/helm-words/default.nix b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/helm-words/default.nix
index eb16701f3856f..8e99b427cb44c 100644
--- a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/helm-words/default.nix
+++ b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/helm-words/default.nix
@@ -1,28 +1,30 @@
-{ lib
-, trivialBuild
-, fetchFromGitHub
-, dictionary
-, emacs
-, helm
+{
+  lib,
+  dictionary,
+  fetchFromGitHub,
+  helm,
+  melpaBuild,
 }:
 
-trivialBuild rec {
+melpaBuild {
   pname = "helm-words";
   version = "0-unstable-2019-03-12";
 
   src = fetchFromGitHub {
     owner = "emacsmirror";
-    repo = pname;
+    repo = "helm-words";
     rev = "e6387ece1940a06695b9d910de3d90252efb8d29";
     hash = "sha256-rh8YKDLZZCUE6JnnRnFyDDyUjK+35+M2dkawR/+qwNM=";
   };
 
-  packageRequires = [ helm dictionary ];
+  packageRequires = [
+    dictionary
+    helm
+  ];
 
-  meta = with lib; {
+  meta = {
     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;
+    license = lib.licenses.gpl3Plus;
   };
 }
diff --git a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/hsc3/default.nix b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/hsc3/default.nix
index 86b9e274a9673..efa79b9ebb05e 100644
--- a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/hsc3/default.nix
+++ b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/hsc3/default.nix
@@ -1,21 +1,23 @@
-{ lib, trivialBuild, fetchurl, haskell-mode }:
+{
+  melpaBuild,
+  haskell-mode,
+  haskellPackages,
+}:
 
-trivialBuild rec {
+let
+  inherit (haskellPackages) hsc3;
+in
+melpaBuild {
   pname = "hsc3-mode";
-  version = "0.15";
+  ename = "hsc3";
+  inherit (hsc3) src version;
 
-  src = fetchurl {
-    url = "mirror://hackage/hsc3-${version}/hsc3-${version}.tar.gz";
-    sha256 = "2f3b15655419cf8ebe25ab1c6ec22993b2589b4ffca7c3a75ce478ca78a0bde6";
-  };
+  files = ''("emacs/*.el")'';
 
   packageRequires = [ haskell-mode ];
 
-  sourceRoot = "hsc3-${version}/emacs";
-
   meta = {
-    homepage = "http://rd.slavepianos.org/?t=hsc3";
-    description = "hsc3 mode package for Emacs";
-    platforms = lib.platforms.unix;
+    inherit (hsc3.meta) homepage license;
+    description = "Emacs mode for hsc3";
   };
 }
diff --git a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/idris2-mode/default.nix b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/idris2-mode/default.nix
index 59dd35bc34421..5148daad1903b 100644
--- a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/idris2-mode/default.nix
+++ b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/idris2-mode/default.nix
@@ -1,32 +1,29 @@
-{ lib
-, trivialBuild
-, fetchFromGitHub
-, emacs
-, prop-menu
+{
+  lib,
+  fetchFromGitHub,
+  melpaBuild,
+  prop-menu,
 }:
 
-trivialBuild rec {
+melpaBuild rec {
   pname = "idris2-mode";
   version = "1.1";
 
   src = fetchFromGitHub {
     owner = "idris-community";
-    repo = pname;
+    repo = "idris2-mode";
     rev = version;
     hash = "sha256-rTeVjkAw44Q35vjaERs4uoZRJ6XR3FKplEUCVPHhY7Q=";
   };
 
-  buildInputs = propagatedUserEnvPkgs;
-
-  propagatedUserEnvPkgs = [
+  packageRequires = [
     prop-menu
   ];
 
-  meta = with lib; {
+  meta = {
     homepage = "https://github.com/idris-community/idris2-mode";
-    description = "This is an emacs mode for editing Idris 2 code";
-    license = licenses.gpl3Only;
-    maintainers = with maintainers; [ wuyoli ];
-    inherit (emacs.meta) platforms;
+    description = "Emacs mode for editing Idris 2 code";
+    license = lib.licenses.gpl3Only;
+    maintainers = with lib.maintainers; [ wuyoli ];
   };
 }
diff --git a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/isearch-plus/default.nix b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/isearch-plus/default.nix
index d4f60c609381d..c2764968bcb56 100644
--- a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/isearch-plus/default.nix
+++ b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/isearch-plus/default.nix
@@ -1,11 +1,13 @@
-{ lib
-, trivialBuild
-, fetchFromGitHub
-, emacs
+{
+  lib,
+  melpaBuild,
+  fetchFromGitHub,
+  unstableGitUpdater,
 }:
 
-trivialBuild {
+melpaBuild {
   pname = "isearch-plus";
+  ename = "isearch+";
   version = "3434-unstable-2021-08-23";
 
   src = fetchFromGitHub {
@@ -15,11 +17,15 @@ trivialBuild {
     hash = "sha256-kD+Fyps3fc5YK6ATU1nrkKHazGMYJnU2gRcpQZf6A1E=";
   };
 
-  meta = with lib; {
+  passthru.updateScript = unstableGitUpdater { };
+
+  meta = {
     homepage = "https://www.emacswiki.org/emacs/IsearchPlus";
     description = "Extensions to isearch";
-    license = licenses.gpl2Plus;
-    maintainers = with maintainers; [ leungbk AndersonTorres ];
-    inherit (emacs.meta) platforms;
+    license = lib.licenses.gpl2Plus;
+    maintainers = with lib.maintainers; [
+      leungbk
+      AndersonTorres
+    ];
   };
 }
diff --git a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/isearch-prop/default.nix b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/isearch-prop/default.nix
index 00ff1f0a9b216..c97d3cc2d4917 100644
--- a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/isearch-prop/default.nix
+++ b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/isearch-prop/default.nix
@@ -1,25 +1,27 @@
-{ lib
-, fetchFromGitHub
-, trivialBuild
-, emacs
+{
+  lib,
+  fetchFromGitHub,
+  melpaBuild,
+  unstableGitUpdater,
 }:
 
-trivialBuild {
+melpaBuild {
   pname = "isearch-prop";
-  version = "0-unstable-2019-05-01";
+  version = "0-unstable-2022-12-30";
 
   src = fetchFromGitHub {
     owner = "emacsmirror";
     repo = "isearch-prop";
-    rev = "4a2765f835dd115d472142da05215c4c748809f4";
-    hash = "sha256-A1Kt4nm7iRV9J5yaLupwiNL5g7ddZvQs79dggmqZ7Rk=";
+    rev = "5787fd57977c0d6c416ce71471c3b9da246dfb78";
+    hash = "sha256-Xli7TxBenl5cDMJv3Qz7ZELFpvJKStMploLpf9a+uoA=";
   };
 
-  meta = with lib; {
+  passthru.updateScript = unstableGitUpdater { hardcodeZeroVersion = true; };
+
+  meta = {
     homepage = "https://www.emacswiki.org/emacs/IsearchPlus";
     description = "Search text- or overlay-property contexts";
-    license = licenses.gpl3Plus;
-    maintainers = with maintainers; [ leungbk ];
-    inherit (emacs.meta) platforms;
+    license = lib.licenses.gpl3Plus;
+    maintainers = with lib.maintainers; [ leungbk AndersonTorres ];
   };
 }
diff --git a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/jam-mode/default.nix b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/jam-mode/default.nix
index 6b060ffa3eac0..418f201fa933b 100644
--- a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/jam-mode/default.nix
+++ b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/jam-mode/default.nix
@@ -1,9 +1,10 @@
-{ lib
-, trivialBuild
-, fetchurl
+{
+  lib,
+  melpaBuild,
+  fetchurl,
 }:
 
-trivialBuild rec {
+melpaBuild rec {
   pname = "jam-mode";
   version = "0.3";
 
@@ -20,10 +21,15 @@ trivialBuild rec {
     runHook postUnpack
   '';
 
-  meta = with lib; {
+  postPatch = ''
+    echo ";;; jam-mode.el ---" > tmp.el
+    cat jam-mode.el >> tmp.el
+    mv tmp.el jam-mode.el
+  '';
+
+  meta = {
     description = "Emacs major mode for editing Jam files";
-    license = licenses.gpl2Plus;
-    maintainers = with maintainers; [ qyliss ];
-    platforms = platforms.all;
+    license = lib.licenses.gpl2Plus;
+    maintainers = with lib.maintainers; [ qyliss ];
   };
 }
diff --git a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/ligo-mode/default.nix b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/ligo-mode/default.nix
index c70835a0dacb3..7c9df31e5c285 100644
--- a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/ligo-mode/default.nix
+++ b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/ligo-mode/default.nix
@@ -1,36 +1,22 @@
-{ lib
-, melpaBuild
-, fetchFromGitLab
-, writeText
-, unstableGitUpdater
+{
+  lib,
+  melpaBuild,
+  fetchFromGitLab,
+  unstableGitUpdater,
 }:
 
-let
-  pname = "ligo-mode";
-  version = "20230302.1616";
-  commit = "d1073474efc9e0a020a4bcdf5e0c12a217265a3a";
-in
 melpaBuild {
-  inherit pname version commit;
+  pname = "ligo-mode";
+  version = "1.7.1-unstable-2024-07-17";
 
   src = fetchFromGitLab {
     owner = "ligolang";
     repo = "ligo";
-    rev = commit;
-    hash = "sha256-wz9DF9mqi8WUt1Ebd+ueUTA314rKkdbjmoWF8cKuS8I=";
+    rev = "09afc3ff3dd9c88b2dfbc563278a78a099b39902";
+    hash = "sha256-AX0zZljZPrfBlpdgCNuiq0JaYpHcVBdHHZ9jM31LlQs=";
   };
 
-  packageRequires = [ ];
-
-  buildInputs = [ ];
-
-  checkInputs = [ ];
-
-  recipe = writeText "recipe" ''
-    (ligo-mode :fetcher gitlab
-               :repo "ligolang/ligo"
-               :files ("tools/emacs/ligo-mode.el"))
-  '';
+  files = ''("tools/emacs/ligo-mode.el")'';
 
   passthru.updateScript = unstableGitUpdater { };
 
diff --git a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/llvm-mode/default.nix b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/llvm-mode/default.nix
index 02fec5ef7f720..9fef79b3312dd 100644
--- a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/llvm-mode/default.nix
+++ b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/llvm-mode/default.nix
@@ -1,13 +1,12 @@
-{ trivialBuild
-, llvmPackages
-}:
+{ melpaBuild, llvmPackages }:
 
-trivialBuild {
+melpaBuild {
   pname = "llvm-mode";
   inherit (llvmPackages.llvm) src version;
 
-  postUnpack = ''
-    sourceRoot="$sourceRoot/llvm/utils/emacs"
+  files = ''
+    ("llvm/utils/emacs/*.el"
+     "llvm/utils/emacs/README")
   '';
 
   meta = {
diff --git a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/lsp-bridge/default.nix b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/lsp-bridge/default.nix
index 944fc6c49463b..19b472cd663f3 100644
--- a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/lsp-bridge/default.nix
+++ b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/lsp-bridge/default.nix
@@ -1,44 +1,43 @@
-{ lib
-, python3
-, melpaBuild
-, fetchFromGitHub
-, substituteAll
-, acm
-, markdown-mode
-, git
-, go
-, gopls
-, pyright
-, ruff
-, tempel
-, writeScript
-, writeText
+{
+  lib,
+  python3,
+  melpaBuild,
+  fetchFromGitHub,
+  substituteAll,
+  acm,
+  markdown-mode,
+  basedpyright,
+  git,
+  go,
+  gopls,
+  tempel,
+  unstableGitUpdater,
 }:
 
 let
-  rev = "9e88e660d717ba597d9fe9366cf4278674734410";
-  python = python3.withPackages (ps: with ps; [
-    epc
-    orjson
-    paramiko
-    rapidfuzz
-    sexpdata
-    six
-  ]);
+  python = python3.withPackages (
+    ps: with ps; [
+      epc
+      orjson
+      paramiko
+      rapidfuzz
+      setuptools
+      sexpdata
+      six
+    ]
+  );
 in
 melpaBuild {
   pname = "lsp-bridge";
-  version = "20240629.1404";
+  version = "0-unstable-2024-07-14";
 
   src = fetchFromGitHub {
     owner = "manateelazycat";
     repo = "lsp-bridge";
-    inherit rev;
-    hash = "sha256-qpetTKZDQjoofp8ggothYALQBpwLjuNxCq46Pe4oZZA=";
+    rev = "023924926ae6adfbcf5458c350b90dea7c05d51b";
+    hash = "sha256-59bl4YbKS3HgrGJlUfM3LPabxKuuE+dT7CnVUJIl05k=";
   };
 
-  commit = rev;
-
   patches = [
     # Hardcode the python dependencies needed for lsp-bridge, so users
     # don't have to modify their global environment
@@ -54,26 +53,24 @@ melpaBuild {
   ];
 
   checkInputs = [
+    # Emacs packages
+    tempel
+
+    # Executables
+    basedpyright
     git
     go
     gopls
-    pyright
     python
-    ruff
-    tempel
   ];
 
-  recipe = writeText "recipe" ''
-    (lsp-bridge
-      :repo "manateelazycat/lsp-bridge"
-      :fetcher github
-      :files
-      ("*.el"
-       "lsp_bridge.py"
-       "core"
-       "langserver"
-       "multiserver"
-       "resources"))
+  files = ''
+    ("*.el"
+     "lsp_bridge.py"
+     "core"
+     "langserver"
+     "multiserver"
+     "resources")
   '';
 
   doCheck = true;
@@ -90,27 +87,15 @@ melpaBuild {
 
   __darwinAllowLocalNetworking = true;
 
-  passthru.updateScript = writeScript "update.sh" ''
-    #!/usr/bin/env nix-shell
-    #!nix-shell -i bash -p common-updater-scripts coreutils git gnused
-    set -eu -o pipefail
-
-    tmpdir="$(mktemp -d)"
-    git clone --depth=1 https://github.com/manateelazycat/lsp-bridge.git "$tmpdir"
-
-    pushd "$tmpdir"
-    commit=$(git show -s --pretty='format:%H')
-    # Based on: https://github.com/melpa/melpa/blob/2d8716906a0c9e18d6c979d8450bf1d15dd785eb/package-build/package-build.el#L523-L533
-    version=$(TZ=UTC git show -s --pretty='format:%cd' --date='format-local:%Y%m%d.%H%M' | sed 's|\.0*|.|')
-    popd
-
-    update-source-version emacsPackages.lsp-bridge $version --rev="$commit"
-  '';
+  passthru.updateScript = unstableGitUpdater { hardcodeZeroVersion = true; };
 
-  meta = with lib; {
+  meta = {
     description = "Blazingly fast LSP client for Emacs";
     homepage = "https://github.com/manateelazycat/lsp-bridge";
-    license = licenses.gpl3Only;
-    maintainers = with maintainers; [ fxttr kira-bruneau ];
+    license = lib.licenses.gpl3Only;
+    maintainers = with lib.maintainers; [
+      fxttr
+      kira-bruneau
+    ];
   };
 }
diff --git a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/lspce/default.nix b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/lspce/default.nix
index 97a9bea4f96ca..78325d90bf78d 100644
--- a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/lspce/default.nix
+++ b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/lspce/default.nix
@@ -1,65 +1,34 @@
-{ lib
-, emacs
-, f
-, fetchFromGitHub
-, markdown-mode
-, rustPlatform
-, trivialBuild
-, yasnippet
+{
+  lib,
+  callPackage,
+  f,
+  markdown-mode,
+  melpaBuild,
+  nix-update-script,
+  yasnippet,
 }:
 
 let
-  version = "1.0.0-unstable-2024-02-03";
-
-  src = fetchFromGitHub {
-    owner = "zbelial";
-    repo = "lspce";
-    rev = "543dcf0ea9e3ff5c142c4365d90b6ae8dc27bd15";
-    hash = "sha256-LZWRQOKkTjNo8jecBRholW9SHpiK0SWcV8yObojpvxo=";
-  };
-
-  meta = {
-    homepage = "https://github.com/zbelial/lspce";
-    description = "LSP Client for Emacs implemented as a module using rust";
-    license = lib.licenses.gpl3Only;
-    maintainers = [ ];
-    inherit (emacs.meta) platforms;
-  };
-
-  lspce-module = rustPlatform.buildRustPackage {
-    inherit version src meta;
-    pname = "lspce-module";
-
-    cargoHash = "sha256-W9rsi7o4KvyRoG/pqRKOBbJtUoSW549Sh8+OV9sLcxs=";
-
-    checkFlags = [
-      # flaky test
-      "--skip=msg::tests::serialize_request_with_null_params"
-    ];
-
-    postInstall = ''
-      mkdir -p $out/share/emacs/site-lisp
-      for f in $out/lib/*; do
-        mv $f $out/share/emacs/site-lisp/lspce-module.''${f##*.}
-      done
-      rmdir $out/lib
-    '';
-  };
+  lspce-module = callPackage ./module.nix { };
 in
-trivialBuild rec {
-  inherit version src meta;
+melpaBuild {
   pname = "lspce";
+  inherit (lspce-module) version src meta;
 
-  buildInputs = propagatedUserEnvPkgs;
-
-  propagatedUserEnvPkgs = [
+  packageRequires = [
     f
     markdown-mode
     yasnippet
-    lspce-module
   ];
 
+  # to compile lspce.el, it needs lspce-module.so
+  files = ''(:defaults "${lib.getLib lspce-module}/lib/lspce-module.*")'';
+
   passthru = {
     inherit lspce-module;
+    updateScript = nix-update-script {
+      attrPath = "emacsPackages.lspce.lspce-module";
+      extraArgs = [ "--version=branch" ];
+    };
   };
 }
diff --git a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/lspce/module.nix b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/lspce/module.nix
new file mode 100644
index 0000000000000..1a1f8612f64ec
--- /dev/null
+++ b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/lspce/module.nix
@@ -0,0 +1,40 @@
+{
+  lib,
+  fetchFromGitHub,
+  rustPlatform,
+}:
+
+rustPlatform.buildRustPackage {
+  pname = "lspce-module";
+  version = "1.1.0-unstable-2024-07-14";
+
+  src = fetchFromGitHub {
+    owner = "zbelial";
+    repo = "lspce";
+    rev = "fd320476df89cfd5d10f1b70303c891d3b1e3c81";
+    hash = "sha256-KnERYq/CvJhJIdQkpH/m82t9KFMapPl+CyZkYyujslU=";
+  };
+
+  cargoHash = "sha256-I2OobRu1hc6xc4bRrIO1FImPYBbFy1jXPcTsivbbskk=";
+
+  checkFlags = [
+    # flaky test
+    "--skip=msg::tests::serialize_request_with_null_params"
+  ];
+
+  # rename module without changing either suffix or location
+  # use for loop because there seems to be two modules on darwin systems
+  # https://github.com/zbelial/lspce/issues/7#issue-1783708570
+  postInstall = ''
+    for f in $out/lib/*; do
+      mv --verbose $f $out/lib/lspce-module.''${f##*.}
+    done
+  '';
+
+  meta = {
+    homepage = "https://github.com/zbelial/lspce";
+    description = "LSP Client for Emacs implemented as a module using Rust";
+    license = lib.licenses.gpl3Only;
+    maintainers = with lib.maintainers; [ AndersonTorres ];
+  };
+}
diff --git a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/matrix-client/default.nix b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/matrix-client/default.nix
index a17689ddf52dc..59f4b83681391 100644
--- a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/matrix-client/default.nix
+++ b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/matrix-client/default.nix
@@ -1,46 +1,42 @@
-{ lib
-, melpaBuild
-, fetchFromGitHub
-, fetchpatch
-, writeText
-# Emacs packages
-, _map
-, a
-, anaphora
-, cl-lib
-, dash
-, dash-functional
-, esxml
-, f
-, frame-purpose
-, ht
-, ov
-, rainbow-identifiers
-, request
-, s
-, tracking
+{
+  lib,
+  melpaBuild,
+  fetchFromGitHub,
+  fetchpatch,
+  # Emacs packages
+  _map,
+  a,
+  anaphora,
+  cl-lib,
+  dash,
+  dash-functional,
+  esxml,
+  f,
+  frame-purpose,
+  ht,
+  ov,
+  rainbow-identifiers,
+  request,
+  s,
+  tracking,
 }:
 
-let
-  rev = "d2ac55293c96d4c95971ed8e2a3f6f354565c5ed";
-in melpaBuild {
+melpaBuild {
   pname = "matrix-client";
   version = "0.3.0";
 
-  commit = rev;
-
   src = fetchFromGitHub {
     owner = "alphapapa";
     repo = "matrix-client.el";
-    inherit rev;
-    sha256 = "1scfv1502yg7x4bsl253cpr6plml1j4d437vci2ggs764sh3rcqq";
+    rev = "d2ac55293c96d4c95971ed8e2a3f6f354565c5ed";
+    hash = "sha256-GLM8oCbm6PdEZPsM0ogMtNJr8mWjCKoX6ed5AUrYjuk=";
   };
 
   patches = [
     # Fix: avatar loading when imagemagick support is not available
     (fetchpatch {
       url = "https://github.com/alphapapa/matrix-client.el/commit/5f49e615c7cf2872f48882d3ee5c4a2bff117d07.patch";
-      sha256 = "07bvid7s1nv1377p5n61q46yww3m1w6bw4vnd4iyayw3fby1lxbm";
+      hash = "sha256-dXUa/HKDe+UjaXYTvgwPdXDuDcHB2HLPGWHboE+Lex0=";
     })
   ];
 
@@ -62,10 +58,6 @@ in melpaBuild {
     tracking
   ];
 
-  recipe = writeText "recipe" ''
-    (matrix-client :repo "alphapapa/matrix-client.el" :fetcher github)
-  '';
-
   meta = {
     description = "Chat client and API wrapper for Matrix.org";
     license = lib.licenses.gpl3Plus;
diff --git a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/mind-wave/default.nix b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/mind-wave/default.nix
deleted file mode 100644
index 2bc5a733f6ce8..0000000000000
--- a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/mind-wave/default.nix
+++ /dev/null
@@ -1,89 +0,0 @@
-{ lib
-, pkgs
-, melpaBuild
-, substituteAll
-}:
-# To use this package with emacs-overlay:
-# nixpkgs.overlays = [
-#   inputs.emacs-overlay.overlay
-#   (final: prev: {
-#     emacs30 = prev.emacsGit.overrideAttrs (old: {
-#       name = "emacs30";
-#       version = inputs.emacs-upstream.shortRev;
-#       src = inputs.emacs-upstream;
-#     });
-#     emacsWithConfig = prev.emacsWithPackagesFromUsePackage {
-#       config = let
-#         readRecursively = dir:
-#           builtins.concatStringsSep "\n"
-#           (lib.mapAttrsToList (name: value:
-#             if value == "regular"
-#             then builtins.readFile (dir + "/${name}")
-#             else
-#               (
-#                 if value == "directory"
-#                 then readRecursively (dir + "/${name}")
-#                 else []
-#               ))
-#           (builtins.readDir dir));
-#       in
-#         # your home-manager config
-#         readRecursively ./home/modules/emacs;
-#       alwaysEnsure = true;
-#       package = final.emacs30;
-#       extraEmacsPackages = epkgs: [
-#         epkgs.use-package
-#         (epkgs.melpaBuild rec {
-#           # ...
-#         })
-#       ];
-#       override = epkgs:
-#         epkgs
-#         // {
-#           # ...
-#         };
-#     };
-#   })
-# ];
-melpaBuild rec {
-  pname = "mind-wave";
-  version = "20230523.0332"; # 03:32 UTC
-  src = pkgs.fetchFromGitHub {
-    owner = "manateelazycat";
-    repo = "mind-wave";
-    rev = "5109162b74872091c5090a28389bef8f7020274c";
-    sha256 = "sha256-ZyXrpb0GLWSGnMsVIGL9qALSBCeIWNF0UwkCFgCKnu8=";
-  };
-  commit = "5109162b74872091c5090a28389bef8f7020274c";
-  # elisp dependencies
-  packageRequires = [
-    pkgs.emacsPackages.markdown-mode
-  ];
-  buildInputs = [
-    (pkgs.python3.withPackages (ps:
-      with ps; [
-        openai
-        epc
-        sexpdata
-        six
-      ]))
-  ];
-  recipe = pkgs.writeText "recipe" ''
-    (mind-wave
-    :repo "manateelazycat/mind-wave"
-    :fetcher github
-    :files
-    ("mind-wave.el"
-    "mind-wave-epc.el"
-    "mind_wave.py"
-    "utils.py"))
-  '';
-  doCheck = true;
-  passthru.updateScript = pkgs.unstableGitUpdater {};
-  meta = with lib; {
-    description = " Emacs AI plugin based on ChatGPT API ";
-    homepage = "https://github.com/manateelazycat/mind-wave";
-    license = licenses.gpl3Only;
-    maintainers = with maintainers; [yuzukicat];
-  };
-}
diff --git a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/notdeft/default.nix b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/notdeft/default.nix
index f9af8c465b930..324db6dede1f2 100644
--- a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/notdeft/default.nix
+++ b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/notdeft/default.nix
@@ -1,22 +1,24 @@
-{ lib
-, stdenv
-, trivialBuild
-, fetchFromGitHub
-, emacs
-, hydra
-, ivy
-, pkg-config
-, tclap
-, xapian
+{
+  lib,
+  stdenv,
+  melpaBuild,
+  fetchFromGitHub,
+  hydra,
+  ivy,
+  pkg-config,
+  tclap,
+  unstableGitUpdater,
+  xapian,
+  # Configurable options
   # Include pre-configured hydras
-, withHydra ? false
+  withHydra ? false,
   # Include Ivy integration
-, withIvy ? false
+  withIvy ? false,
 }:
 
 let
   pname = "notdeft";
-  version = "20211204.0846";
+  version = "0-unstable-2021-12-04";
 
   src = fetchFromGitHub {
     owner = "hasu";
@@ -30,9 +32,22 @@ let
     pname = "notdeft-xapian";
     inherit version src;
 
-    sourceRoot = "${src.name}/xapian";
+    strictDeps = true;
 
-    nativeBuildInputs = [ pkg-config tclap xapian ];
+    nativeBuildInputs = [ pkg-config ];
+
+    buildInputs = [
+      tclap
+      xapian
+    ];
+
+    buildPhase = ''
+      runHook preBuild
+
+      $CXX -std=c++11 -o notdeft-xapian xapian/notdeft-xapian.cc -lxapian
+
+      runHook postBuild
+    '';
 
     installPhase = ''
       runHook preInstall
@@ -44,11 +59,10 @@ let
     '';
   };
 in
-trivialBuild {
+melpaBuild {
   inherit pname version src;
-  packageRequires = lib.optional withHydra hydra
-    ++ lib.optional withIvy ivy;
-  buildInputs = [ xapian ];
+
+  packageRequires = lib.optional withHydra hydra ++ lib.optional withIvy ivy;
 
   postPatch = ''
     substituteInPlace notdeft-xapian.el \
@@ -56,20 +70,23 @@ trivialBuild {
                 "defcustom notdeft-xapian-program \"${notdeft-xapian}/bin/notdeft-xapian\""
   '';
 
-  # Extra modules are contained in the extras/ directory
-  preBuild = lib.optionalString withHydra ''
-    mv extras/notdeft-{mode-hydra,global-hydra}.el ./
-  '' +
-  lib.optionalString withIvy ''
-    mv extras/notdeft-ivy.el ./
-  '' + ''
-    rm -r extras/
+  files = ''
+    (:defaults
+     ${lib.optionalString withHydra ''"extras/notdeft-global-hydra.el"''}
+     ${lib.optionalString withHydra ''"extras/notdeft-mode-hydra.el"''}
+     ${lib.optionalString withIvy ''"extras/notdeft-ivy.el"''})
   '';
 
-  meta = with lib; {
+  passthru = {
+    inherit notdeft-xapian;
+    updateScript = unstableGitUpdater { hardcodeZeroVersion = true; };
+  };
+
+  meta = {
     homepage = "https://tero.hasu.is/notdeft/";
     description = "Fork of Deft that uses Xapian as a search engine";
-    maintainers = [ maintainers.nessdoor ];
-    platforms = platforms.linux;
+    maintainers = [ lib.maintainers.nessdoor ];
+    license = lib.licenses.bsd3;
+    platforms = lib.platforms.linux;
   };
 }
diff --git a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/ott-mode/default.nix b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/ott-mode/default.nix
index 6eeead468ff22..ac208e29dbf44 100644
--- a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/ott-mode/default.nix
+++ b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/ott-mode/default.nix
@@ -1,19 +1,22 @@
-{ trivialBuild
-, ott
-, haskellPackages
-}:
+{ melpaBuild, ott }:
 
-trivialBuild {
+melpaBuild {
   pname = "ott-mode";
 
   inherit (ott) src version;
 
-  postUnpack = ''
-    mv $sourceRoot/emacs/ott-mode.el $sourceRoot
+  files = ''("emacs/*.el")'';
+
+  postPatch = ''
+    pushd emacs
+    echo ";;; ott-mode.el ---" > tmp.el
+    cat ott-mode.el >> tmp.el
+    mv tmp.el ott-mode.el
+    popd
   '';
 
   meta = {
     description = "Emacs ott mode (from ott sources)";
-    inherit (haskellPackages.Agda.meta) homepage license;
+    inherit (ott.meta) homepage license;
   };
 }
diff --git a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/perl-completion/default.nix b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/perl-completion/default.nix
deleted file mode 100644
index dea18e30dcd83..0000000000000
--- a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/perl-completion/default.nix
+++ /dev/null
@@ -1,20 +0,0 @@
-{ trivialBuild
-, fetchurl
-}:
-
-trivialBuild {
-  pname = "perl-completion";
-
-  src = fetchurl {
-    url = "http://emacswiki.org/emacs/download/perl-completion.el";
-    sha256 = "0x6qsgs4hm87k0z9q3g4p6508kc3y123j5jayll3jf3lcl2vm6ks";
-  };
-
-  version = "1.10";
-
-  meta = {
-    broken = true;
-    description = "Minor mode provides useful features for editing perl codes";
-    homepage = "http://emacswiki.org/emacs/PerlCompletion";
-  };
-}
diff --git a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/pod-mode/default.nix b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/pod-mode/default.nix
index 549633b7dfbdc..51c4fb1f8b1f3 100644
--- a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/pod-mode/default.nix
+++ b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/pod-mode/default.nix
@@ -1,18 +1,35 @@
-{ trivialBuild, lib, fetchurl }:
+{
+  lib,
+  melpaBuild,
+  fetchurl
+}:
 
-trivialBuild rec {
+let
   pname = "pod-mode";
   version = "1.04";
 
   src = fetchurl {
     url = "mirror://cpan/authors/id/F/FL/FLORA/pod-mode-${version}.tar.gz";
-    sha256 = "1wr0khymkaa65blrc5nya607c1a3sjsww49bbf8f0a6176as71sv";
+    hash = "sha256-W4ejlTnBKOCQWysRzrXUQwV2gFHeFpbpKkapWT2cIPM=";
   };
+in
+melpaBuild {
+  inherit pname version src;
 
-  meta = with lib; {
+  outputs = [
+    "out"
+    "doc"
+  ];
+
+  postInstall = ''
+    mkdir -p ''${!outputDoc}/share/doc/pod-mode/
+    install -Dm644 -t ''${!outputDoc}/share/doc/pod-mode/ $sourceRoot/ChangeLog $sourceRoot/README
+  '';
+
+  meta = {
+    homepage = "https://metacpan.org/dist/pod-mode";
     description = "Major mode for editing .pod-files";
-    license = licenses.gpl2Plus;
-    maintainers = with maintainers; [ qyliss ];
-    platforms = platforms.all;
+    license = lib.licenses.gpl2Plus;
+    maintainers = with lib.maintainers; [ qyliss ];
   };
 }
diff --git a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/prisma-mode/default.nix b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/prisma-mode/default.nix
index 983363ae838f4..41ce7957e758f 100644
--- a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/prisma-mode/default.nix
+++ b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/prisma-mode/default.nix
@@ -1,31 +1,23 @@
-{ lib
-, fetchFromGitHub
-, melpaBuild
-, js2-mode
-, writeText
+{
+  lib,
+  fetchFromGitHub,
+  melpaBuild,
+  js2-mode,
 }:
 
-let
-  rev = "5283ca7403bcb21ca0cac8ecb063600752dfd9d4";
-in melpaBuild {
+melpaBuild {
   pname = "prisma-mode";
-  version = "20211207.0";
-
-  commit = rev;
+  version = "0-unstable-2021-12-07";
 
   packageRequires = [ js2-mode ];
 
   src = fetchFromGitHub {
     owner = "pimeys";
     repo = "emacs-prisma-mode";
-    inherit rev;
-    sha256 = "sha256-DJJfjbu27Gi7Nzsa1cdi8nIQowKH8ZxgQBwfXLB0Q/I=";
+    rev = "5283ca7403bcb21ca0cac8ecb063600752dfd9d4";
+    hash = "sha256-DJJfjbu27Gi7Nzsa1cdi8nIQowKH8ZxgQBwfXLB0Q/I=";
   };
 
-  recipe = writeText "recipe" ''
-    (prisma-mode :repo "pimeys/emacs-prisma-mode" :fetcher github)
-  '';
-
   meta = {
     description = "Major mode for Prisma Schema Language";
     license = lib.licenses.gpl2Only;
diff --git a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/prolog/default.nix b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/prolog/default.nix
index 3e804551666cd..41c9363fbf4af 100644
--- a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/prolog/default.nix
+++ b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/prolog/default.nix
@@ -1,14 +1,24 @@
-{ lib, trivialBuild, fetchurl }:
+{
+  lib,
+  melpaBuild,
+  fetchurl,
+}:
 
-trivialBuild {
+melpaBuild {
   pname = "prolog-mode";
+  ename = "prolog";
   version = "1.28";
 
   src = fetchurl {
     url = "https://bruda.ca/_media/emacs/prolog.el";
-    sha256 = "ZzIDFQWPq1vI9z3btgsHgn0axN6uRQn9Tt8TnqGybOk=";
+    hash = "sha256-ZzIDFQWPq1vI9z3btgsHgn0axN6uRQn9Tt8TnqGybOk=";
   };
 
+  postPatch = ''
+    substituteInPlace prolog.el \
+      --replace-fail ";; prolog.el ---" ";;; prolog.el ---"
+  '';
+
   meta = {
     homepage = "https://bruda.ca/emacs/prolog_mode_for_emacs/";
     description = "Prolog mode for Emacs";
diff --git a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/rect-mark/default.nix b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/rect-mark/default.nix
index 8d4fcf5090c34..aee5c8ba2dbf6 100644
--- a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/rect-mark/default.nix
+++ b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/rect-mark/default.nix
@@ -1,24 +1,30 @@
-{ lib
-, trivialBuild
-, fetchFromGitHub
-, emacs
- }:
+{
+  lib,
+  melpaBuild,
+  fetchFromGitHub,
+  gitUpdater,
+}:
 
-trivialBuild rec {
-  pname = "rect-mark";
+let
   version = "1.4";
+in
+melpaBuild {
+  pname = "rect-mark";
+  inherit version;
 
   src = fetchFromGitHub {
     owner = "emacsmirror";
-    repo = pname;
+    repo = "rect-mark";
     rev = version;
     hash = "sha256-/8T1VTYkKUxlNWXuuS54S5jpl4UxJBbgSuWc17a/VyM=";
   };
 
-  meta = with lib; {
+  passthru.updateScript = gitUpdater { };
+
+  meta = {
     homepage = "http://emacswiki.org/emacs/RectangleMark";
     description = "Mark a rectangle of text with highlighting";
-    license = licenses.gpl2Plus;
-    inherit (emacs.meta) platforms;
+    license = lib.licenses.gpl2Plus;
+    maintainers = with lib.maintainers; [ AndersonTorres ];
   };
 }
diff --git a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/sunrise-commander/default.nix b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/sunrise-commander/default.nix
index efc422d601f06..7cf5a63f4b6cf 100644
--- a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/sunrise-commander/default.nix
+++ b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/sunrise-commander/default.nix
@@ -1,11 +1,13 @@
-{ lib
-, trivialBuild
-, fetchFromGitHub
-, emacs
+{
+  lib,
+  melpaBuild,
+  fetchFromGitHub,
+  unstableGitUpdater,
 }:
 
-trivialBuild {
+melpaBuild {
   pname = "sunrise-commander";
+  ename = "sunrise";
   version = "0-unstable-2021-09-27";
 
   src = fetchFromGitHub {
@@ -15,9 +17,7 @@ trivialBuild {
     hash = "sha256-D36qiRi5OTZrBtJ/bD/javAWizZ8NLlC/YP4rdLCSsw=";
   };
 
-  buildInputs = [
-    emacs
-  ];
+  passthru.updateScript = unstableGitUpdater { hardcodeZeroVersion = true; };
 
   meta = {
     homepage = "https://github.com/sunrise-commander/sunrise-commander/";
diff --git a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/sv-kalender/default.nix b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/sv-kalender/default.nix
index 48cc866029a8c..0227fcefc152a 100644
--- a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/sv-kalender/default.nix
+++ b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/sv-kalender/default.nix
@@ -1,19 +1,22 @@
-{ fetchurl, lib, trivialBuild }:
+{
+  lib,
+  fetchurl,
+  melpaBuild,
+}:
 
-trivialBuild {
+melpaBuild {
   pname = "sv-kalender";
   version = "1.11";
 
   src = fetchurl {
     url = "https://raw.githubusercontent.com/emacsmirror/emacswiki.org/ec4fa36bdba5d2c5c4f5e0400a70768c10e969e8/sv-kalender.el";
-    sha256 = "0mcx7g1pg6kfp0i4b9rh3q9csgdf3054ijswy368bxwdxsjgfz2m";
+    hash = "sha256-VXz3pO6N94XM8FzLSAoYrj3NEh4wp0UiuG6ad8M7nVU=";
   };
 
-  meta = with lib; {
-    description = "Swedish calendar for Emacs";
+  meta = {
     homepage = "https://www.emacswiki.org/emacs/sv-kalender.el";
-    platforms = platforms.all;
-    license = licenses.gpl3Plus;
-    maintainers = [ maintainers.rycee ];
+    description = "Swedish calendar for Emacs";
+    license = lib.licenses.gpl3Plus;
+    maintainers = [ lib.maintainers.rycee ];
   };
 }
diff --git a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/texpresso/default.nix b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/texpresso/default.nix
index cd449ab0f5d9a..ca83eb04a336f 100644
--- a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/texpresso/default.nix
+++ b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/texpresso/default.nix
@@ -1,15 +1,14 @@
-{ lib
-, trivialBuild
-, texpresso
+{
+  lib,
+  melpaBuild,
+  texpresso,
 }:
-trivialBuild {
+melpaBuild {
   pname = "texpresso";
   version = texpresso.version;
   src = texpresso.src;
 
-  preInstall = ''
-    cd emacs
-  '';
+  files = ''("emacs/*.el")'';
 
   meta = {
     inherit (texpresso.meta) homepage license;
diff --git a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/tsc/default.nix b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/tsc/default.nix
index 018299650a9a4..d69a2f16247b1 100644
--- a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/tsc/default.nix
+++ b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/tsc/default.nix
@@ -3,9 +3,6 @@
 , melpaBuild
 , fetchFromGitHub
 , rustPlatform
-, writeText
-, clang
-, llvmPackages
 
 , runtimeShell
 , writeScript
@@ -26,15 +23,8 @@ let
     inherit version;
 
     pname = "tsc";
-    commit = version;
 
     sourceRoot = "${src.name}/core";
-
-    recipe = writeText "recipe" ''
-      (tsc
-      :repo "emacs-tree-sitter/elisp-tree-sitter"
-      :fetcher github)
-    '';
   };
 
   tsc-dyn = rustPlatform.buildRustPackage {
diff --git a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/urweb-mode/default.nix b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/urweb-mode/default.nix
index 6f7e822d81d37..d5b597bdf47b8 100644
--- a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/urweb-mode/default.nix
+++ b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/urweb-mode/default.nix
@@ -1,11 +1,12 @@
-{ lib
-, trivialBuild
-, urweb
-, cl-lib
-, flycheck
+{
+  lib,
+  melpaBuild,
+  urweb,
+  cl-lib,
+  flycheck,
 }:
 
-trivialBuild {
+melpaBuild {
   pname = "urweb-mode";
 
   inherit (urweb) src version;
@@ -15,9 +16,9 @@ trivialBuild {
     flycheck
   ];
 
-  postUnpack = ''
-    sourceRoot=$sourceRoot/src/elisp
-  '';
+  files = ''("src/elisp/*.el")'';
+
+  dontConfigure = true;
 
   meta = {
     description = "Major mode for editing Ur/Web";
diff --git a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/voicemacs/add-missing-require.patch b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/voicemacs/0000-add-missing-require.patch
index 58c043bf78ede..58c043bf78ede 100644
--- a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/voicemacs/add-missing-require.patch
+++ b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/voicemacs/0000-add-missing-require.patch
diff --git a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/voicemacs/default.nix b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/voicemacs/default.nix
index 60f3e3a75e053..593dac2579762 100644
--- a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/voicemacs/default.nix
+++ b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/voicemacs/default.nix
@@ -1,21 +1,23 @@
-{ trivialBuild
-, lib
-, fetchFromGitHub
-, avy
-, json-rpc-server
-, f
-, nav-flash
-, helm
-, cl-lib
-, porthole
-, default-text-scale
-, bind-key
-, yasnippet
-, company
-, company-quickhelp
+{
+  lib,
+  avy,
+  bind-key,
+  cl-lib,
+  company,
+  company-quickhelp,
+  default-text-scale,
+  f,
+  fetchFromGitHub,
+  helm,
+  json-rpc-server,
+  melpaBuild,
+  nav-flash,
+  porthole,
+  unstableGitUpdater,
+  yasnippet,
 }:
 
-trivialBuild {
+melpaBuild {
   pname = "voicemacs";
   version = "0-unstable-2022-02-16";
 
@@ -23,28 +25,34 @@ trivialBuild {
     owner = "jcaw";
     repo = "voicemacs";
     rev = "d91de2a31c68ab083172ade2451419d6bd7bb389";
-    sha256 = "sha256-/MBB2R9/V0aYZp15e0vx+67ijCPp2iPlgxe262ldmtc=";
+    hash = "sha256-/MBB2R9/V0aYZp15e0vx+67ijCPp2iPlgxe262ldmtc=";
   };
 
-  patches = [ ./add-missing-require.patch ];
+  patches = [
+    ./0000-add-missing-require.patch
+  ];
 
   packageRequires = [
     avy
-    json-rpc-server
+    bind-key
+    cl-lib
+    company
+    company-quickhelp
+    default-text-scale
     f
-    nav-flash
     helm
-    cl-lib
+    json-rpc-server
+    nav-flash
     porthole
-    default-text-scale
-    bind-key
     yasnippet
-    company-quickhelp
   ];
 
+  passthru.updateScript = unstableGitUpdater { hardcodeZeroVersion = true; };
+
   meta = {
-    description = "Voicemacs is a set of utilities for controlling Emacs by voice";
+    homepage = "https://github.com/jcaw/voicemacs/";
+    description = "Set of utilities for controlling Emacs by voice";
     license = lib.licenses.gpl3Only;
-    platforms = lib.platforms.all;
+    maintainers = with lib.maintainers; [ AndersonTorres ];
   };
 }
diff --git a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/wat-mode/default.nix b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/wat-mode/default.nix
index 6eb5b9478541c..e4bb260d14b44 100644
--- a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/wat-mode/default.nix
+++ b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/wat-mode/default.nix
@@ -1,23 +1,22 @@
-# Manually packaged until it is upstreamed to melpa
-# See https://github.com/devonsparks/wat-mode/issues/1
-{ lib, melpaBuild, fetchFromGitHub, writeText }:
+{
+  lib,
+  melpaBuild,
+  fetchFromGitHub,
+  unstableGitUpdater,
+}:
 
-melpaBuild rec {
+melpaBuild {
   pname = "wat-mode";
-  version = "20220713.1";
+  version = "0-unstable-2022-07-13";
 
   src = fetchFromGitHub {
     owner = "devonsparks";
-    repo = pname;
+    repo = "wat-mode";
     rev = "46b4df83e92c585295d659d049560dbf190fe501";
     hash = "sha256-jV5V3TRY+D3cPSz3yFwVWn9yInhGOYIaUTPEhsOBxto=";
   };
 
-  commit = "46b4df83e92c585295d659d049560dbf190fe501";
-
-  recipe = writeText "recipe" ''
-    (wat-mode :repo "devonsparks/wat-mode" :fetcher github)
-  '';
+  passthru.updateScript = unstableGitUpdater { hardcodeZeroVersion = true; };
 
   meta = {
     homepage = "https://github.com/devonsparks/wat-mode";
diff --git a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/yes-no/default.nix b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/yes-no/default.nix
index 2cb229a4e1e39..2981cb8f47112 100644
--- a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/yes-no/default.nix
+++ b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/yes-no/default.nix
@@ -1,19 +1,22 @@
-{ lib, fetchurl, trivialBuild }:
+{
+  lib,
+  fetchurl,
+  melpaBuild,
+}:
 
-trivialBuild {
+melpaBuild {
   pname = "yes-no";
   version = "0-unstable-2017-10-01";
 
   src = fetchurl {
     url = "https://raw.githubusercontent.com/emacsmirror/emacswiki.org/143bcaeb679a8fa8a548e92a5a9d5c2baff50d9c/yes-no.el";
-    sha256 = "03w4wfx885y89ckyd5d95n2571nmmzrll6kr0yan3ip2aw28xq3i";
+    hash = "sha256-ceCOBFfixmGVB3kaSvOv1YZThC2pleYnS8gXhLrjhA8=";
   };
 
-  meta = with lib; {
-    description = "Specify use of `y-or-n-p' or `yes-or-no-p' on a case-by-case basis";
+  meta = {
     homepage = "https://www.emacswiki.org/emacs/yes-no.el";
-    license = licenses.gpl3Plus;
-    maintainers = with maintainers; [ jcs090218 ];
-    platforms = platforms.all;
+    description = "Specify use of `y-or-n-p' or `yes-or-no-p' on a case-by-case basis";
+    license = lib.licenses.gpl3Plus;
+    maintainers = with lib.maintainers; [ jcs090218 ];
   };
 }
diff --git a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/youtube-dl/default.nix b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/youtube-dl/default.nix
index ec25ab9b1bdf8..d3e5a5cfbbb3b 100644
--- a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/youtube-dl/default.nix
+++ b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/youtube-dl/default.nix
@@ -1,10 +1,11 @@
-{ lib
-, fetchFromGitHub
-, trivialBuild
-, emacs
+{
+  lib,
+  fetchFromGitHub,
+  melpaBuild,
+  unstableGitUpdater,
 }:
 
-trivialBuild {
+melpaBuild {
   pname = "youtube-dl";
   version = "1.0-unstable-2018-10-12";
 
@@ -12,14 +13,15 @@ trivialBuild {
     owner = "skeeto";
     repo = "youtube-dl-emacs";
     rev = "af877b5bc4f01c04fccfa7d47a2c328926f20ef4";
-    sha256 = "sha256-Etl95rcoRACDPjcTPQqYK2L+w8OZbOrTrRT0JadMdH4=";
+    hash = "sha256-Etl95rcoRACDPjcTPQqYK2L+w8OZbOrTrRT0JadMdH4=";
   };
 
-  meta = with lib; {
+  passthru.updateScript = unstableGitUpdater { };
+
+  meta = {
     description = "Emacs youtube-dl download manager";
     homepage = "https://github.com/skeeto/youtube-dl-emacs";
-    license = licenses.unlicense;
-    maintainers = with maintainers; [ leungbk ];
-    inherit (emacs.meta) platforms;
+    license = lib.licenses.unlicense;
+    maintainers = with lib.maintainers; [ leungbk ];
   };
 }
diff --git a/pkgs/applications/editors/emacs/elisp-packages/melpa-packages.nix b/pkgs/applications/editors/emacs/elisp-packages/melpa-packages.nix
index 00646b6d81b38..d580b0dfdb71f 100644
--- a/pkgs/applications/editors/emacs/elisp-packages/melpa-packages.nix
+++ b/pkgs/applications/editors/emacs/elisp-packages/melpa-packages.nix
@@ -755,5 +755,4 @@ let
     in lib.mapAttrs (n: v: if lib.hasAttr n overrides then overrides.${n} else v) super);
 
 in
-(generateMelpa { })
-// { __attrsFailEvaluation = true; }
+generateMelpa { }
diff --git a/pkgs/applications/editors/emacs/elisp-packages/nongnu-packages.nix b/pkgs/applications/editors/emacs/elisp-packages/nongnu-packages.nix
index beca93ea4c35f..cd32a8bd39754 100644
--- a/pkgs/applications/editors/emacs/elisp-packages/nongnu-packages.nix
+++ b/pkgs/applications/editors/emacs/elisp-packages/nongnu-packages.nix
@@ -20,12 +20,12 @@ self: let
     generated ? ./nongnu-generated.nix
   }: let
 
-    imported = (import generated {
+    imported = import generated {
       callPackage = pkgs: args: self.callPackage pkgs (args // {
         # Use custom elpa url fetcher with fallback/uncompress
         fetchurl = buildPackages.callPackage ./fetchelpa.nix { };
       });
-    }) // { __attrsFailEvaluation = true; };
+    };
 
     super = imported;
 
diff --git a/pkgs/applications/editors/emacs/elisp-packages/recipes-archive-melpa.json b/pkgs/applications/editors/emacs/elisp-packages/recipes-archive-melpa.json
index 9dd51bcbc5a47..02857188f0f60 100644
--- a/pkgs/applications/editors/emacs/elisp-packages/recipes-archive-melpa.json
+++ b/pkgs/applications/editors/emacs/elisp-packages/recipes-archive-melpa.json
@@ -91627,11 +91627,11 @@
   "repo": "ksqsf/org-xlatex",
   "unstable": {
    "version": [
-    20230820,
-    2133
+    20240707,
+    1343
    ],
-   "commit": "f3cac5ea904e78ae2b47723fdce96e8e87edbe7c",
-   "sha256": "06y7lapsp4s9h07hdsd8wigmy6r5l36qiqwmz7j1n8zp3r8xg0pw"
+   "commit": "8f25ba5e4784b3f12f5ac5c69b1a1d0695c53b8e",
+   "sha256": "1cg11gqisigpa9prkm05z7wlajffzmhjiymg7frbibhrskhfhrp0"
   }
  },
  {