From 59213cc1da2b0055be35a6f7e6fddc805410c556 Mon Sep 17 00:00:00 2001 From: John Wiegley Date: Wed, 16 Dec 2015 15:13:16 -0800 Subject: emacs25pre: New expression, from emacs-25 pre-release branch --- pkgs/applications/editors/emacs-25/default.nix | 113 +++++++++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100644 pkgs/applications/editors/emacs-25/default.nix (limited to 'pkgs/applications/editors/emacs-25/default.nix') diff --git a/pkgs/applications/editors/emacs-25/default.nix b/pkgs/applications/editors/emacs-25/default.nix new file mode 100644 index 000000000000..472a686b964b --- /dev/null +++ b/pkgs/applications/editors/emacs-25/default.nix @@ -0,0 +1,113 @@ +{ stdenv, fetchgit, ncurses, xlibsWrapper, libXaw, libXpm, Xaw3d +, pkgconfig, gettext, libXft, dbus, libpng, libjpeg, libungif +, libtiff, librsvg, texinfo, gconf, libxml2, imagemagick, gnutls +, alsaLib, cairo, acl, gpm, AppKit, Foundation, libobjc +, autoconf, automake +, withX ? !stdenv.isDarwin +, withGTK3 ? false, gtk3 ? null +, withGTK2 ? true, gtk2 +}: + +assert (libXft != null) -> libpng != null; # probably a bug +assert stdenv.isDarwin -> libXaw != null; # fails to link otherwise +assert withGTK2 -> withX || stdenv.isDarwin; +assert withGTK3 -> withX || stdenv.isDarwin; +assert withGTK2 -> !withGTK3 && gtk2 != null; +assert withGTK3 -> !withGTK2 && gtk3 != null; + +let + toolkit = + if withGTK3 then "gtk3" + else if withGTK2 then "gtk2" + else "lucid"; +in + +stdenv.mkDerivation rec { + name = "emacs-25.0.50-1b5630e"; + + builder = ./builder.sh; + + src = fetchgit { + url = "git://git.savannah.gnu.org/emacs.git"; + rev = "1b5630eb47d3f4bade09708c958ab006b83b3fc0"; + sha256 = "0n3qbri84akmy7ad1pbv89j4jn4x9pnkz0p4nbhh6m1c37cbz58l"; + }; + + patches = stdenv.lib.optionals stdenv.isDarwin [ + ./at-fdcwd.patch + ]; + + postPatch = '' + sed -i 's|/usr/share/locale|${gettext}/share/locale|g' lisp/international/mule-cmds.el + ''; + + buildInputs = + [ ncurses gconf libxml2 gnutls alsaLib pkgconfig texinfo acl gpm gettext + autoconf automake ] + ++ stdenv.lib.optional stdenv.isLinux dbus + ++ stdenv.lib.optionals withX + [ xlibsWrapper libXaw Xaw3d libXpm libpng libjpeg libungif libtiff librsvg libXft + imagemagick gconf ] + ++ stdenv.lib.optional (withX && withGTK2) gtk2 + ++ stdenv.lib.optional (withX && withGTK3) gtk3 + ++ stdenv.lib.optional (stdenv.isDarwin && withX) cairo; + + propagatedBuildInputs = stdenv.lib.optionals stdenv.isDarwin [ AppKit Foundation libobjc + ]; + + NIX_LDFLAGS = stdenv.lib.optional stdenv.isDarwin + "/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation"; + + configureFlags = + if stdenv.isDarwin + then [ "--with-ns" "--disable-ns-self-contained" ] + else if withX + then [ "--with-x-toolkit=${toolkit}" "--with-xft" ] + else [ "--with-x=no" "--with-xpm=no" "--with-jpeg=no" "--with-png=no" + "--with-gif=no" "--with-tiff=no" ]; + + NIX_CFLAGS_COMPILE = stdenv.lib.optionalString (stdenv.isDarwin && withX) + "-I${cairo}/include/cairo"; + + preBuild = '' + find . -name '*.elc' -delete + ''; + + postInstall = '' + mkdir -p $out/share/emacs/site-lisp/ + cp ${./site-start.el} $out/share/emacs/site-lisp/site-start.el + '' + stdenv.lib.optionalString stdenv.isDarwin '' + mkdir -p $out/Applications + mv nextstep/Emacs.app $out/Applications + ''; + + doCheck = !stdenv.isDarwin; + + meta = with stdenv.lib; { + description = "GNU Emacs 25 (pre), the extensible, customizable text editor"; + homepage = http://www.gnu.org/software/emacs/; + license = licenses.gpl3Plus; + maintainers = with maintainers; [ chaoflow lovek323 simons the-kenny ]; + platforms = platforms.all; + + # So that Exuberant ctags is preferred + priority = 1; + + longDescription = '' + GNU Emacs is an extensible, customizable text editor—and more. At its + core is an interpreter for Emacs Lisp, a dialect of the Lisp + programming language with extensions to support text editing. + + The features of GNU Emacs include: content-sensitive editing modes, + including syntax coloring, for a wide variety of file types including + plain text, source code, and HTML; complete built-in documentation, + including a tutorial for new users; full Unicode support for nearly all + human languages and their scripts; highly customizable, using Emacs + Lisp code or a graphical interface; a large number of extensions that + add other functionality, including a project planner, mail and news + reader, debugger interface, calendar, and more. Many of these + extensions are distributed with GNU Emacs; others are available + separately. + ''; + }; +} -- cgit 1.4.1