Add mu4e epkgs patch and use it

This commit is contained in:
Charlotte Van Petegem 2023-09-06 14:52:58 +02:00
parent f43162eed7
commit 8eb59c601f
No known key found for this signature in database
GPG key ID: 019E764B7184435A
2 changed files with 143 additions and 2 deletions

142
patches/253438.patch Normal file
View file

@ -0,0 +1,142 @@
diff --git a/nixos/doc/manual/release-notes/rl-2311.section.md b/nixos/doc/manual/release-notes/rl-2311.section.md
index 3e20cc438969a..f13bfd2f9794d 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 5bb88c835610c..0f28ed8f8f028 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 0000000000000..81fd973ecbd95
--- /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 06083f8e0fae7..a46fc526e6958 100644
--- a/pkgs/tools/networking/mu/default.nix
+++ b/pkgs/tools/networking/mu/default.nix
@@ -10,12 +10,15 @@
, gmime3
, texinfo
, xapian
+, fetchpatch
}:
stdenv.mkDerivation rec {
pname = "mu";
version = "1.10.7";
+ outputs = [ "out" "mu4e" ];
+
src = fetchFromGitHub {
owner = "djcb";
repo = "mu";
@@ -23,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 \
@@ -31,17 +42,23 @@ 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 $out/share/emacs/native-lisp
- export EMACSLOADPATH=$out/share/emacs/site-lisp/mu4e:
- export EMACSNATIVELOADPATH=$out/share/emacs/native-lisp:
+ postInstall = ''
+ rm --verbose $mu4e/share/emacs/site-lisp/mu4e/*.elc
+ '';
- find $out/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\" \"$out/share/emacs/site-lisp/mu4e\")"
+ # move only the mu4e info manual
+ # this has to be after preFixup otherwise the info manual may be moved back by _multioutDocs()
+ # we manually move the mu4e info manual instead of setting
+ # outputInfo to mu4e because we do not want to move the mu-guile
+ # info manual (if it exists)
+ postFixup = ''
+ moveToOutput share/info/mu4e.info.gz $mu4e
+ install-info $mu4e/share/info/mu4e.info.gz $mu4e/share/info/dir
+ if [[ -a ''${!outputInfo}/share/info/mu-guile.info.gz ]]; then
+ install-info --delete $mu4e/share/info/mu4e.info.gz ''${!outputInfo}/share/info/dir
+ else
+ rm --verbose --recursive ''${!outputInfo}/share/info
+ fi
'';
buildInputs = [ emacs glib gmime3 texinfo xapian ];
@@ -49,6 +66,7 @@ stdenv.mkDerivation rec {
mesonFlags = [
"-Dguile=disabled"
"-Dreadline=disabled"
+ "-Dlispdir=${placeholder "mu4e"}/share/emacs/site-lisp"
];
nativeBuildInputs = [ pkg-config meson ninja ];