substitute-binary: Remove thread-safe 'regexp-exec' wrapper.
[jackhill/guix/guix.git] / gnu / packages / emacs.scm
CommitLineData
468bdabb 1;;; GNU Guix --- Functional package management for GNU
4a3e602c 2;;; Copyright © 2014 Taylan Ulrich Bayirli/Kammer <taylanbayirli@gmail.com>
c72aed6d 3;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
9a4c9715 4;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
d51cafb0 5;;; Copyright © 2014 Alex Kost <alezost@gmail.com>
468bdabb
LC
6;;;
7;;; This file is part of GNU Guix.
8;;;
9;;; GNU Guix is free software; you can redistribute it and/or modify it
10;;; under the terms of the GNU General Public License as published by
11;;; the Free Software Foundation; either version 3 of the License, or (at
12;;; your option) any later version.
13;;;
14;;; GNU Guix is distributed in the hope that it will be useful, but
15;;; WITHOUT ANY WARRANTY; without even the implied warranty of
16;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17;;; GNU General Public License for more details.
18;;;
19;;; You should have received a copy of the GNU General Public License
20;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
21
1ffa7090 22(define-module (gnu packages emacs)
f61e0e79 23 #:use-module ((guix licenses) #:prefix license:)
468bdabb
LC
24 #:use-module (guix packages)
25 #:use-module (guix download)
26 #:use-module (guix build-system gnu)
71f57158 27 #:use-module (guix build-system glib-or-gtk)
fe4163f3 28 #:use-module (guix build-system trivial)
59a43334 29 #:use-module (gnu packages)
7abe1965 30 #:use-module (gnu packages gtk)
1ffa7090
LC
31 #:use-module (gnu packages ncurses)
32 #:use-module (gnu packages texinfo)
33 #:use-module (gnu packages gnutls)
4f028c8f 34 #:use-module (gnu packages pkg-config)
50efa797
LC
35 #:use-module (gnu packages guile)
36 #:use-module (gnu packages xorg)
37 #:use-module (gnu packages lesstif)
e55354b8 38 #:use-module (gnu packages image)
504a83af 39 #:use-module (gnu packages linux)
9a4c9715 40 #:use-module (gnu packages version-control)
18d26210
MW
41 #:use-module (gnu packages imagemagick)
42 #:use-module (gnu packages w3m)
89925972 43 #:use-module (gnu packages wget)
18d26210 44 #:use-module (gnu packages autotools)
f61e0e79 45 #:use-module (gnu packages compression)
50efa797 46 #:use-module (gnu packages xml)
4a3e602c 47 #:use-module (gnu packages glib)
388fd01b 48 #:use-module (gnu packages acl)
77c9286d
LC
49 #:use-module (gnu packages perl)
50 #:use-module (gnu packages linux) ;alsa
51 #:use-module (gnu packages xiph)
52 #:use-module (gnu packages mp3)
4a3e602c
TUBK
53 #:use-module (guix utils)
54 #:use-module (srfi srfi-1))
468bdabb
LC
55
56(define-public emacs
57 (package
58 (name "emacs")
388fd01b 59 (version "24.4")
468bdabb
LC
60 (source (origin
61 (method url-fetch)
62 (uri (string-append "mirror://gnu/emacs/emacs-"
3be9f724 63 version ".tar.xz"))
468bdabb
LC
64 (sha256
65 (base32
388fd01b 66 "1zflm6ac34s6v166p58ilxrxbxjm0q2wfc25f8y0mjml1lbr3qs7"))))
71f57158 67 (build-system glib-or-gtk-build-system)
468bdabb 68 (arguments
388fd01b 69 '(#:phases (alist-cons-before
468bdabb
LC
70 'configure 'fix-/bin/pwd
71 (lambda _
72 ;; Use `pwd', not `/bin/pwd'.
73 (substitute* (find-files "." "^Makefile\\.in$")
74 (("/bin/pwd")
75 "pwd")))
76 %standard-phases)))
77 (inputs
c4c4cc05 78 `(("gnutls" ,gnutls)
468bdabb
LC
79 ("ncurses" ,ncurses)
80
81 ;; TODO: Add the optional dependencies.
fa275717 82 ("libx11" ,libx11)
0a9e9a63 83 ("gtk+" ,gtk+)
fa275717 84 ("libxft" ,libxft)
50efa797 85 ("libtiff" ,libtiff)
504a83af 86 ("giflib" ,giflib)
50efa797 87 ("libjpeg" ,libjpeg-8)
388fd01b 88 ("acl" ,acl)
50efa797
LC
89
90 ;; When looking for libpng `configure' links with `-lpng -lz', so we
91 ;; must also provide zlib as an input.
92 ("libpng" ,libpng)
f61e0e79 93 ("zlib" ,zlib)
50efa797 94
fa275717 95 ("libxpm" ,libxpm)
50efa797 96 ("libxml2" ,libxml2)
504a83af
MW
97 ("libice" ,libice)
98 ("libsm" ,libsm)
99 ("alsa-lib" ,alsa-lib)
01eafd38 100 ("dbus" ,dbus)))
c4c4cc05
JD
101 (native-inputs
102 `(("pkg-config" ,pkg-config)
103 ("texinfo" ,texinfo)))
468bdabb 104 (home-page "http://www.gnu.org/software/emacs/")
f50d2669 105 (synopsis "The extensible, customizable, self-documenting text editor")
468bdabb 106 (description
79c311b8
LC
107 "GNU Emacs is an extensible and highly customizable text editor. It is
108based on an Emacs Lisp interpreter with extensions for text editing. Emacs
109has been extended in essentially all areas of computing, giving rise to a
110vast array of packages supporting, e.g., email, IRC and XMPP messaging,
111spreadsheets, remote server editing, and much more. Emacs includes extensive
112documentation on all aspects of the system, from basic editing to writing
113large Lisp programs. It has full Unicode support for nearly all human
114languages.")
f61e0e79 115 (license license:gpl3+)))
4f028c8f 116
4fd540b7
LC
117(define-public emacs-no-x
118 ;; This is the version that you should use as an input to packages that just
119 ;; need to byte-compile .el files.
120 (package (inherit emacs)
121 (location (source-properties->location (current-source-location)))
122 (name "emacs-no-x")
123 (synopsis "The extensible, customizable, self-documenting text
124editor (console only)")
125 (build-system gnu-build-system)
126 (inputs (fold alist-delete
127 (package-inputs emacs)
128 '("libx11" "gtk+" "libxft" "libtiff" "giflib" "libjpeg"
129 "libpng" "libxpm" "libice" "libsm"
130
131 ;; D-Bus depends on libx11, so remove it as well.
132 "dbus")))))
133
4a3e602c
TUBK
134(define-public emacs-no-x-toolkit
135 (package (inherit emacs)
9e771e3b 136 (location (source-properties->location (current-source-location)))
4a3e602c
TUBK
137 (name "emacs-no-x-toolkit")
138 (synopsis "The extensible, customizable, self-documenting text
139editor (without an X toolkit)" )
71f57158 140 (build-system gnu-build-system)
388fd01b
MW
141 (inputs (append `(("inotify-tools" ,inotify-tools))
142 (alist-delete "gtk+" (package-inputs emacs))))
143 (arguments (append '(#:configure-flags '("--with-x-toolkit=no"))
144 (package-arguments emacs)))))
4a3e602c 145
4f028c8f
LC
146\f
147;;;
148;;; Emacs hacking.
149;;;
150
151(define-public geiser
152 (package
153 (name "geiser")
8991a470 154 (version "0.6")
4f028c8f
LC
155 (source (origin
156 (method url-fetch)
cf8f58b2
LC
157 (uri (string-append "mirror://savannah/geiser/" version
158 "/geiser-" version ".tar.gz"))
4f028c8f 159 (sha256
8991a470 160 (base32 "1mrk0bzqcpfhsw6635qznn47nzfy9ps7wrhkpymswdfpw5mdsry5"))))
4f028c8f 161 (build-system gnu-build-system)
d51cafb0
AK
162 (arguments
163 '(#:phases (alist-cons-after
164 'install 'post-install
165 (lambda* (#:key outputs #:allow-other-keys)
166 (symlink "geiser-install.el"
167 (string-append (assoc-ref outputs "out")
168 "/share/emacs/site-lisp/"
169 "geiser-autoloads.el")))
170 %standard-phases)))
4f028c8f 171 (inputs `(("guile" ,guile-2.0)
2d32d153 172 ("emacs" ,emacs-no-x)))
4f028c8f
LC
173 (home-page "http://nongnu.org/geiser/")
174 (synopsis "Collection of Emacs modes for Guile and Racket hacking")
175 (description
176 "Geiser is a collection of Emacs major and minor modes that
177conspire with one or more Scheme interpreters to keep the Lisp Machine
178Spirit alive. It draws inspiration (and a bit more) from environments
179such as Common Lisp’s Slime, Factor’s FUEL, Squeak or Emacs itself, and
180does its best to make Scheme hacking inside Emacs (even more) fun.
181
182Or, to be precise, what i consider fun. Geiser is thus my humble
183contribution to the dynamic school of expression, and a reaction against
184what i perceive as a derailment, in modern times, of standard Scheme
185towards the static camp. Because i prefer growing and healing to poking
186at corpses, the continuously running Scheme interpreter takes the center
187of the stage in Geiser. A bundle of Elisp shims orchestrates the dialog
188between the Scheme interpreter, Emacs and, ultimately, the schemer,
189giving her access to live metadata.")
f61e0e79 190 (license license:bsd-3)))
9a4c9715 191
fe4163f3
MW
192(define-public paredit
193 (package
194 (name "paredit")
195 (version "23")
196 (source (origin
197 (method url-fetch)
198 (uri (string-append "http://mumble.net/~campbell/emacs/paredit-"
199 version ".el"))
200 (sha256
201 (base32 "1np882jzvxckljx3cjz4absyzmc5hw65cs21sjmbic82163m9lf8"))))
202 (build-system trivial-build-system)
2d32d153 203 (inputs `(("emacs" ,emacs-no-x)))
fe4163f3
MW
204 (arguments
205 `(#:modules ((guix build utils)
206 (guix build emacs-utils))
207 #:builder
208 (begin
209 (use-modules (guix build utils))
210 (use-modules (guix build emacs-utils))
211
212 (let* ((emacs (string-append (assoc-ref %build-inputs "emacs")
213 "/bin/emacs"))
214 (source (assoc-ref %build-inputs "source"))
215 (lisp-dir (string-append %output
216 "/share/emacs/site-lisp"))
217 (target (string-append lisp-dir "/paredit.el")))
218 (mkdir-p lisp-dir)
219 (copy-file source target)
220 (with-directory-excursion lisp-dir
221 (parameterize ((%emacs emacs))
d51cafb0 222 (emacs-generate-autoloads ,name lisp-dir)
fe4163f3
MW
223 (emacs-batch-eval '(byte-compile-file "paredit.el"))))))))
224 (home-page "http://mumble.net/~campbell/emacs/paredit/")
225 (synopsis "Emacs minor mode for editing parentheses")
226 (description
227 "ParEdit (paredit.el) is a minor mode for performing structured editing
228of S-expression data. The typical example of this would be Lisp or Scheme
229source code.
230
231ParEdit helps **keep parentheses balanced** and adds many keys for moving
232S-expressions and moving around in S-expressions. Its behavior can be jarring
233for those who may want transient periods of unbalanced parentheses, such as
234when typing parentheses directly or commenting out code line by line.")
f61e0e79 235 (license license:gpl3+)))
fe4163f3 236
9a4c9715
MW
237(define-public magit
238 (package
239 (name "magit")
fac8b30b 240 (version "1.2.1")
9a4c9715
MW
241 (source (origin
242 (method url-fetch)
fac8b30b
MW
243 (uri (string-append
244 "https://github.com/magit/magit/releases/download/"
245 version "/" name "-" version ".tar.gz"))
9a4c9715 246 (sha256
fac8b30b 247 (base32 "1in48g5l5xdc9cf2apnpgx73mqlz2njrpi1w52dgql4qxv3kg6gr"))))
9a4c9715
MW
248 (build-system gnu-build-system)
249 (native-inputs `(("texinfo" ,texinfo)))
2d32d153 250 (inputs `(("emacs" ,emacs-no-x)
9a4c9715
MW
251 ("git" ,git)
252 ("git:gui" ,git "gui")))
253 (arguments
254 `(#:modules ((guix build gnu-build-system)
255 (guix build utils)
256 (guix build emacs-utils))
257 #:imported-modules ((guix build gnu-build-system)
258 (guix build utils)
259 (guix build emacs-utils))
260 #:tests? #f ; no check target
261 #:phases
262 (alist-replace
263 'configure
264 (lambda* (#:key outputs #:allow-other-keys)
265 (let ((out (assoc-ref outputs "out")))
266 (substitute* "Makefile"
267 (("/usr/local") out)
268 (("/etc") (string-append out "/etc")))))
269 (alist-cons-before
270 'build 'patch-exec-paths
271 (lambda* (#:key inputs #:allow-other-keys)
272 (let ((git (assoc-ref inputs "git"))
273 (git:gui (assoc-ref inputs "git:gui")))
274 (emacs-substitute-variables "magit.el"
275 ("magit-git-executable" (string-append git "/bin/git"))
276 ("magit-gitk-executable" (string-append git:gui "/bin/gitk")))))
d51cafb0
AK
277 (alist-cons-after
278 'install 'post-install
279 (lambda* (#:key outputs #:allow-other-keys)
280 (emacs-generate-autoloads
281 ,name (string-append (assoc-ref outputs "out")
282 "/share/emacs/site-lisp/")))
283 %standard-phases)))))
9a4c9715
MW
284 (home-page "http://magit.github.io/")
285 (synopsis "Emacs interface for the Git version control system")
286 (description
287 "With Magit, you can inspect and modify your Git repositories with Emacs.
288You can review and commit the changes you have made to the tracked files, for
289example, and you can browse the history of past changes. There is support for
290cherry picking, reverting, merging, rebasing, and other common Git
291operations.")
f61e0e79 292 (license license:gpl3+)))
18d26210
MW
293
294\f
295;;;
296;;; Web browsing.
297;;;
298
299(define-public emacs-w3m
300 (package
301 (name "emacs-w3m")
302 (version "1.4.483+0.20120614")
303 (source (origin
304 (method url-fetch)
305 (uri (string-append "mirror://debian/pool/main/w/w3m-el/w3m-el_"
306 version ".orig.tar.gz"))
307 (sha256
308 (base32 "0ms181gjavnfk79hhv5xl9llik4c6kj0w3c04kgyif8lcy2sxljx"))))
309 (build-system gnu-build-system)
310 (native-inputs `(("autoconf" ,autoconf)))
311 (inputs `(("w3m" ,w3m)
312 ("imagemagick" ,imagemagick)
2d32d153 313 ("emacs" ,emacs-no-x)))
18d26210
MW
314 (arguments
315 '(#:modules ((guix build gnu-build-system)
316 (guix build utils)
317 (guix build emacs-utils))
318 #:imported-modules ((guix build gnu-build-system)
319 (guix build utils)
320 (guix build emacs-utils))
321 #:configure-flags
322 (let ((out (assoc-ref %outputs "out")))
323 (list (string-append "--with-lispdir="
324 out "/share/emacs/site-lisp")
325 (string-append "--with-icondir="
326 out "/share/images/emacs-w3m")))
327 #:tests? #f ; no check target
328 #:phases
722ec722
MW
329 (alist-cons-after
330 'unpack 'autoconf
18d26210
MW
331 (lambda _
332 (zero? (system* "autoconf")))
333 (alist-cons-before
334 'build 'patch-exec-paths
335 (lambda* (#:key inputs outputs #:allow-other-keys)
336 (let ((out (assoc-ref outputs "out"))
337 (w3m (assoc-ref inputs "w3m"))
338 (imagemagick (assoc-ref inputs "imagemagick"))
339 (coreutils (assoc-ref inputs "coreutils")))
340 (emacs-substitute-variables "w3m.el"
341 ("w3m-command" (string-append w3m "/bin/w3m"))
342 ("w3m-touch-command" (string-append coreutils "/bin/touch"))
343 ("w3m-image-viewer" (string-append imagemagick "/bin/display"))
344 ("w3m-icon-directory" (string-append out
345 "/share/images/emacs-w3m")))
346 (emacs-substitute-variables "w3m-image.el"
347 ("w3m-imagick-convert-program" (string-append imagemagick
348 "/bin/convert"))
349 ("w3m-imagick-identify-program" (string-append imagemagick
350 "/bin/identify")))
351 #t))
352 (alist-replace
353 'install
354 (lambda* (#:key outputs #:allow-other-keys)
355 (and (zero? (system* "make" "install" "install-icons"))
356 (with-directory-excursion
357 (string-append (assoc-ref outputs "out")
358 "/share/emacs/site-lisp")
359 (for-each delete-file '("ChangeLog" "ChangeLog.1"))
d51cafb0 360 (symlink "w3m-load.el" "w3m-autoloads.el")
18d26210
MW
361 #t)))
362 %standard-phases)))))
363 (home-page "http://emacs-w3m.namazu.org/")
364 (synopsis "Simple Web browser for Emacs based on w3m")
365 (description
35b9e423 366 "Emacs-w3m is an emacs interface for the w3m web browser.")
f61e0e79 367 (license license:gpl2+)))
89925972
MW
368
369(define-public emacs-wget
370 (package
371 (name "emacs-wget")
372 (version "0.5.0")
373 (source (origin
374 (method url-fetch)
375 (uri (string-append "mirror://debian/pool/main/w/wget-el/wget-el_"
376 version ".orig.tar.gz"))
377 (sha256
378 (base32 "10byvyv9dk0ib55gfqm7bcpxmx2qbih1jd03gmihrppr2mn52nff"))))
379 (build-system gnu-build-system)
380 (inputs `(("wget" ,wget)
2d32d153 381 ("emacs" ,emacs-no-x)))
89925972
MW
382 (arguments
383 '(#:modules ((guix build gnu-build-system)
384 (guix build utils)
385 (guix build emacs-utils))
386 #:imported-modules ((guix build gnu-build-system)
387 (guix build utils)
388 (guix build emacs-utils))
389 #:tests? #f ; no check target
390 #:phases
391 (alist-replace
392 'configure
393 (lambda* (#:key outputs #:allow-other-keys)
394 (substitute* "Makefile"
395 (("/usr/local") (assoc-ref outputs "out"))
396 (("/site-lisp/emacs-wget") "/site-lisp")))
397 (alist-cons-before
398 'build 'patch-exec-paths
399 (lambda* (#:key inputs outputs #:allow-other-keys)
400 (let ((wget (assoc-ref inputs "wget")))
401 (emacs-substitute-variables "wget.el"
402 ("wget-command" (string-append wget "/bin/wget")))))
d51cafb0
AK
403 (alist-cons-after
404 'install 'post-install
405 (lambda* (#:key outputs #:allow-other-keys)
406 (emacs-generate-autoloads
407 "wget" (string-append (assoc-ref outputs "out")
408 "/share/emacs/site-lisp/")))
409 %standard-phases)))))
89925972 410 (home-page "http://www.emacswiki.org/emacs/EmacsWget")
ae2189a9 411 (synopsis "Simple file downloader for Emacs based on wget")
89925972 412 (description
35b9e423 413 "Emacs-wget is an emacs interface for the wget file downloader.")
f61e0e79 414 (license license:gpl2+)))
77c9286d
LC
415
416\f
417;;;
418;;; Multimedia.
419;;;
420
421(define-public emms
422 (package
423 (name "emms")
424 (version "4.0")
425 (source (origin
426 (method url-fetch)
427 (uri (string-append "mirror://gnu/emms/emms-"
428 version ".tar.gz"))
429 (sha256
430 (base32
431 "1q0n3iwva8bvai2rl9sm49sdjmk0wi7vajz4knz01l7g67nrp87l"))
432 (modules '((guix build utils)))
433 (snippet
434 '(substitute* "Makefile"
435 (("/usr/bin/install-info")
436 ;; No need to use 'install-info' since it would create a
437 ;; useless 'dir' file.
438 "true")
439 (("^INFODIR=.*")
440 ;; Install Info files to $out/share/info, not $out/info.
441 "INFODIR := $(PREFIX)/share/info\n")
442 (("/site-lisp/emms")
443 ;; Install directly in share/emacs/site-lisp, not in a
444 ;; sub-directory.
445 "/site-lisp")
446 (("^all: (.*)\n" _ rest)
447 ;; Build 'emms-print-metadata'.
448 (string-append "all: " rest " emms-print-metadata\n"))))))
449 (build-system gnu-build-system)
450 (arguments
451 '(#:modules ((guix build gnu-build-system)
452 (guix build utils)
453 (guix build emacs-utils))
454 #:imported-modules ((guix build gnu-build-system)
455 (guix build utils)
456 (guix build emacs-utils))
457
458 #:phases (alist-replace
459 'configure
460 (lambda* (#:key inputs outputs #:allow-other-keys)
461 (let ((out (assoc-ref outputs "out"))
462 (vorbis (assoc-ref inputs "vorbis-tools"))
463 (alsa (assoc-ref inputs "alsa-utils"))
464 (mpg321 (assoc-ref inputs "mpg321"))
465 (mp3info (assoc-ref inputs "mp3info")))
466 ;; Specify the installation directory.
467 (substitute* "Makefile"
468 (("PREFIX=.*$")
469 (string-append "PREFIX := " out "\n")))
470
471 (setenv "SHELL" (which "sh"))
472 (setenv "CC" "gcc")
473
474 ;; Specify the absolute file names of the various
475 ;; programs so that everything works out-of-the-box.
476 (with-directory-excursion "lisp"
477 (emacs-substitute-variables
478 "emms-player-mpg321-remote.el"
479 ("emms-player-mpg321-remote-command"
480 (string-append mpg321 "/bin/mpg321")))
481 (substitute* "emms-player-simple.el"
482 (("\"ogg123\"")
483 (string-append "\"" vorbis "/bin/ogg123\"")))
484 (emacs-substitute-variables "emms-info-ogginfo.el"
485 ("emms-info-ogginfo-program-name"
486 (string-append vorbis "/bin/ogginfo")))
487 (emacs-substitute-variables "emms-info-libtag.el"
488 ("emms-info-libtag-program-name"
489 (string-append out "/bin/emms-print-metadata")))
2d2a2bac
LC
490 (emacs-substitute-variables "emms-info-mp3info.el"
491 ("emms-info-mp3info-program-name"
492 (string-append mp3info "/bin/mp3info")))
77c9286d
LC
493 (substitute* "emms-volume-amixer.el"
494 (("\"amixer\"")
495 (string-append "\"" alsa "/bin/amixer\"")))
496 (substitute* "emms-tag-editor.el"
497 (("\"mp3info\"")
a5f60659 498 (string-append "\"" mp3info "/bin/mp3info\""))))))
77c9286d
LC
499 (alist-cons-before
500 'install 'pre-install
501 (lambda* (#:key outputs #:allow-other-keys)
c72aed6d
LC
502 ;; The 'install' rule expects the target directory to
503 ;; exist.
77c9286d
LC
504 (let* ((out (assoc-ref outputs "out"))
505 (man1 (string-append out "/share/man/man1")))
506 (mkdir-p man1)
c72aed6d 507 #t))
77c9286d
LC
508 (alist-cons-after
509 'install 'post-install
510 (lambda* (#:key outputs #:allow-other-keys)
511 (let* ((out (assoc-ref outputs "out"))
512 (target (string-append
513 out "/bin/emms-print-metadata")))
d51cafb0
AK
514 (symlink "emms-auto.el"
515 (string-append out "/share/emacs/site-lisp/"
516 "emms-autoloads.el"))
77c9286d
LC
517 (mkdir-p (dirname target))
518 (copy-file "src/emms-print-metadata" target)
519 (chmod target #o555)))
520 %standard-phases)))
521 #:tests? #f))
2d32d153 522 (native-inputs `(("emacs" ,emacs-no-x) ;for (guix build emacs-utils)
77c9286d 523 ("texinfo" ,texinfo)))
c72aed6d 524 (inputs `(("alsa-utils" ,alsa-utils)
77c9286d
LC
525 ("vorbis-tools" ,vorbis-tools)
526 ("mpg321" ,mpg321)
527 ("taglib" ,taglib)
528 ("mp3info" ,mp3info)))
529 (synopsis "Emacs Multimedia System")
530 (description
531 "EMMS is the Emacs Multimedia System. It is a small front-end which
532can control one of the supported external players. Thus, it supports
533whatever formats are supported by your music player. It also
534supports tagging and playlist management, all behind a clean and
535light user interface.")
536 (home-page "http://www.gnu.org/software/emms/")
f61e0e79 537 (license license:gpl3+)))
c7e553a3
LC
538
539\f
540;;;
541;;; Miscellaneous.
542;;;
543
544(define-public bbdb
545 (package
546 (name "bbdb")
547 (version "3.1.2")
548 (source (origin
549 (method url-fetch)
550 (uri (string-append "mirror://savannah/bbdb/bbdb-"
551 version ".tar.gz"))
552 (sha256
553 (base32
554 "1gs16bbpiiy01w9pyg12868r57kx1v3hnw04gmqsmpc40l1hyy05"))
555 (modules '((guix build utils)))
556 (snippet
557 ;; We don't want to build and install the PDF.
558 '(substitute* "doc/Makefile.in"
559 (("^doc_DATA = .*$")
560 "doc_DATA =\n")))))
561 (build-system gnu-build-system)
562 (arguments
563 '(#:phases (alist-cons-after
564 'install 'post-install
565 (lambda* (#:key outputs #:allow-other-keys)
566 ;; Add an autoloads file with the right name for guix.el.
567 (let* ((out (assoc-ref outputs "out"))
568 (site (string-append out "/share/emacs/site-lisp")))
569 (with-directory-excursion site
570 (symlink "bbdb-loaddefs.el" "bbdb-autoloads.el"))))
571 %standard-phases)))
2d32d153 572 (native-inputs `(("emacs" ,emacs-no-x)))
c7e553a3
LC
573 (home-page "http://savannah.nongnu.org/projects/bbdb/")
574 (synopsis "Contact management utility for Emacs")
575 (description
576 "BBDB is the Insidious Big Brother Database for GNU Emacs. It provides
577an address book for email and snail mail addresses, phone numbers and the
578like. It can be linked with various Emacs mail clients (Message and Mail
579mode, Rmail, Gnus, MH-E, and VM). BBDB is fully customizable.")
f61e0e79 580 (license license:gpl3+)))