lol
1{ lib
2, stdenv
3, fetchFromGitHub
4, meson
5, ninja
6, pkg-config
7, coreutils
8, emacs
9, glib
10, gmime3
11, texinfo
12, xapian
13, fetchpatch
14}:
15
16stdenv.mkDerivation rec {
17 pname = "mu";
18 version = "1.10.8";
19
20 outputs = [ "out" "mu4e" ];
21
22 src = fetchFromGitHub {
23 owner = "djcb";
24 repo = "mu";
25 rev = "v${version}";
26 hash = "sha256-cDfW0yXA+0fZY5lv4XCHWu+5B0svpMeVMf8ttX/z4Og=";
27 };
28
29 patches = [
30 (fetchpatch {
31 name = "add-mu4e-pkg.el";
32 url = "https://github.com/djcb/mu/commit/00f7053d51105eea0c72151f1a8cf0b6d8478e4e.patch";
33 hash = "sha256-21c7djmYTcqyyygqByo9vu/GsH8WMYcq8NOAvJsS5AQ=";
34 })
35 ];
36
37 postPatch = ''
38 # Fix mu4e-builddir (set it to $out)
39 substituteInPlace mu4e/mu4e-config.el.in \
40 --replace "@abs_top_builddir@" "$out"
41 substituteInPlace lib/utils/mu-test-utils.cc \
42 --replace "/bin/rm" "${coreutils}/bin/rm"
43 '';
44
45 postInstall = ''
46 rm --verbose $mu4e/share/emacs/site-lisp/mu4e/*.elc
47 '';
48
49 # move only the mu4e info manual
50 # this has to be after preFixup otherwise the info manual may be moved back by _multioutDocs()
51 # we manually move the mu4e info manual instead of setting
52 # outputInfo to mu4e because we do not want to move the mu-guile
53 # info manual (if it exists)
54 postFixup = ''
55 moveToOutput share/info/mu4e.info.gz $mu4e
56 install-info $mu4e/share/info/mu4e.info.gz $mu4e/share/info/dir
57 if [[ -a ''${!outputInfo}/share/info/mu-guile.info.gz ]]; then
58 install-info --delete $mu4e/share/info/mu4e.info.gz ''${!outputInfo}/share/info/dir
59 else
60 rm --verbose --recursive ''${!outputInfo}/share/info
61 fi
62 '';
63
64 buildInputs = [ emacs glib gmime3 texinfo xapian ];
65
66 mesonFlags = [
67 "-Dguile=disabled"
68 "-Dreadline=disabled"
69 "-Dlispdir=${placeholder "mu4e"}/share/emacs/site-lisp"
70 ];
71
72 nativeBuildInputs = [ pkg-config meson ninja ];
73
74 doCheck = true;
75
76 meta = with lib; {
77 description = "A collection of utilities for indexing and searching Maildirs";
78 license = licenses.gpl3Plus;
79 homepage = "https://www.djcbsoftware.nl/code/mu/";
80 changelog = "https://github.com/djcb/mu/releases/tag/v${version}";
81 maintainers = with maintainers; [ antono chvp peterhoeg ];
82 mainProgram = "mu";
83 platforms = platforms.unix;
84 };
85}