about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--nixos/doc/manual/release-notes/rl-2311.section.md2
-rw-r--r--pkgs/applications/editors/emacs/elisp-packages/manual-packages.nix2
-rw-r--r--pkgs/applications/editors/emacs/elisp-packages/manual-packages/mu4e/default.nix33
-rw-r--r--pkgs/tools/networking/mu/default.nix22
4 files changed, 48 insertions, 11 deletions
diff --git a/nixos/doc/manual/release-notes/rl-2311.section.md b/nixos/doc/manual/release-notes/rl-2311.section.md
index 8f02975d5382..20ffcb5ebd87 100644
--- a/nixos/doc/manual/release-notes/rl-2311.section.md
+++ b/nixos/doc/manual/release-notes/rl-2311.section.md
@@ -79,6 +79,8 @@
 
 - `pass` now does not contain `password-store.el`.  Users should get `password-store.el` from Emacs lisp package set `emacs.pkgs.password-store`.
 
+- `mu` now does not install `mu4e` files by default.  Users should get `mu4e` from Emacs lisp package set `emacs.pkgs.mu4e`.
+
 - `mariadb` now defaults to `mariadb_1011` instead of `mariadb_106`, meaning the default version was upgraded from 10.6.x to 10.11.x. See the [upgrade notes](https://mariadb.com/kb/en/upgrading-from-mariadb-10-6-to-mariadb-10-11/) for potential issues.
 
 - `getent` has been moved from `glibc`'s `bin` output to its own dedicated output, reducing closure size for many dependents. Dependents using the `getent` alias should not be affected; others should move from using `glibc.bin` or `getBin glibc` to `getent` (which also improves compatibility with non-glibc platforms).
diff --git a/pkgs/applications/editors/emacs/elisp-packages/manual-packages.nix b/pkgs/applications/editors/emacs/elisp-packages/manual-packages.nix
index 5bb88c835610..0f28ed8f8f02 100644
--- a/pkgs/applications/editors/emacs/elisp-packages/manual-packages.nix
+++ b/pkgs/applications/editors/emacs/elisp-packages/manual-packages.nix
@@ -61,6 +61,8 @@ in
     _map = self.map;
   };
 
+  mu4e = callPackage ./manual-packages/mu4e { };
+
   ott-mode = callPackage ./manual-packages/ott-mode { };
 
   perl-completion = callPackage ./manual-packages/perl-completion { };
diff --git a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/mu4e/default.nix b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/mu4e/default.nix
new file mode 100644
index 000000000000..81fd973ecbd9
--- /dev/null
+++ b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/mu4e/default.nix
@@ -0,0 +1,33 @@
+{ elpaBuild, mu }:
+
+let
+  pname = "mu4e";
+  version = mu.mu4e.version;
+in
+elpaBuild {
+  inherit pname version;
+
+  src = mu.mu4e;
+
+  propagatedUserEnvPkgs = [ mu ];
+
+  dontUnpack = false;
+
+  # prepare a multi-file package tar archive according to info
+  # "(elisp) Multi-file Packages" for elpaBuild to install
+  postUnpack = ''
+    pushd mu-*-mu4e
+    local content_directory=${pname}-${version}
+    mkdir $content_directory
+    cp --verbose share/emacs/site-lisp/mu4e/*.el $content_directory/
+    rm --verbose --force $content_directory/mu4e-autoloads.el
+    cp --verbose share/info/* $content_directory/
+    src=$PWD/$content_directory.tar
+    tar --create --verbose --file=$src $content_directory
+    popd
+  '';
+
+  meta = mu.meta // {
+    description = "A full-featured e-mail client";
+  };
+}
diff --git a/pkgs/tools/networking/mu/default.nix b/pkgs/tools/networking/mu/default.nix
index a0ab30d917cd..a46fc526e695 100644
--- a/pkgs/tools/networking/mu/default.nix
+++ b/pkgs/tools/networking/mu/default.nix
@@ -10,6 +10,7 @@
 , gmime3
 , texinfo
 , xapian
+, fetchpatch
 }:
 
 stdenv.mkDerivation rec {
@@ -25,6 +26,14 @@ stdenv.mkDerivation rec {
     hash = "sha256-x1TsyTOK5U6/Y3QInm+XQ7T32X49iwa+4UnaHdiyqCI=";
   };
 
+  patches = [
+    (fetchpatch {
+      name = "add-mu4e-pkg.el";
+      url = "https://github.com/djcb/mu/commit/00f7053d51105eea0c72151f1a8cf0b6d8478e4e.patch";
+      hash = "sha256-21c7djmYTcqyyygqByo9vu/GsH8WMYcq8NOAvJsS5AQ=";
+    })
+  ];
+
   postPatch = ''
     # Fix mu4e-builddir (set it to $out)
     substituteInPlace mu4e/mu4e-config.el.in \
@@ -33,17 +42,8 @@ stdenv.mkDerivation rec {
       --replace "/bin/rm" "${coreutils}/bin/rm"
   '';
 
-  # AOT native-comp, mostly copied from pkgs/build-support/emacs/generic.nix
-  postInstall = lib.optionalString (emacs.withNativeCompilation or false) ''
-    mkdir -p $mu4e/share/emacs/native-lisp
-    export EMACSLOADPATH=$mu4e/share/emacs/site-lisp/mu4e:
-    export EMACSNATIVELOADPATH=$mu4e/share/emacs/native-lisp:
-
-    find $mu4e/share/emacs -type f -name '*.el' -print0 \
-      | xargs -0 -I {} -n 1 -P $NIX_BUILD_CORES sh -c \
-          "emacs --batch --eval '(setq large-file-warning-threshold nil)' -f batch-native-compile {} || true"
-  '' + ''
-    emacs --batch -l package --eval "(package-generate-autoloads \"mu4e\" \"$mu4e/share/emacs/site-lisp/mu4e\")"
+  postInstall = ''
+    rm --verbose $mu4e/share/emacs/site-lisp/mu4e/*.elc
   '';
 
   # move only the mu4e info manual