Merge pull request #6641 from oxij/emacs-ng

Somewhat more generic emacs packages' builder and a bunch of new emacs packages and metas

+429 -139
+31
pkgs/applications/editors/emacs-modes/nyan-mode/default.nix
··· 1 + {trivialBuild, fetchFromGitHub}: 2 + 3 + trivialBuild rec { 4 + pname = "nyan-mode"; 5 + version = "20150128"; 6 + 7 + src = fetchFromGitHub { 8 + owner = "TeMPOraL"; 9 + repo = pname; 10 + rev = "41faa2c809da7b2cb3e6f8fadefae3f338ced3f2"; 11 + sha256 = "1idaac7sjc8hhbf5zif61ncg1pvg28c0qfihavdx61albww0ll7f"; 12 + }; 13 + 14 + patches = [ ./directory.patch ]; 15 + 16 + preBuild = '' 17 + substituteInPlace nyan-mode.el \ 18 + --replace "@OUT@" "$out/" 19 + ''; 20 + 21 + postInstall = '' 22 + cp -r img $out 23 + cp -r mus $out 24 + ''; 25 + 26 + meta = { 27 + description = "An analog indicator of the position in the buffer"; 28 + homepage = https://github.com/TeMPOraL/nyan-mode/; 29 + license = "GPLv3+"; 30 + }; 31 + }
+13
pkgs/applications/editors/emacs-modes/nyan-mode/directory.patch
··· 1 + diff --git a/nyan-mode.el b/nyan-mode.el 2 + index 939a25a..3d0b983 100644 3 + --- a/nyan-mode.el 4 + +++ b/nyan-mode.el 5 + @@ -106,7 +106,7 @@ This can be t or nil." 6 + :group 'nyan) 7 + 8 + 9 + -(defconst +nyan-directory+ (file-name-directory (or load-file-name buffer-file-name))) 10 + +(defconst +nyan-directory+ "@OUT@") 11 + 12 + (defconst +nyan-cat-size+ 3) 13 +
+41
pkgs/build-support/emacs/generic.nix
··· 1 + # generic builder for Emacs packages 2 + 3 + { lib, stdenv, emacs, texinfo }: 4 + 5 + with lib; 6 + 7 + { pname 8 + , version ? null 9 + 10 + , buildInputs ? [] 11 + , packageRequires ? [] 12 + 13 + , meta ? {} 14 + 15 + , ... 16 + }@args: 17 + 18 + let 19 + defaultMeta = { 20 + broken = false; 21 + platforms = emacs.meta.platforms; 22 + }; 23 + in 24 + 25 + stdenv.mkDerivation ({ 26 + name = "emacs-${pname}${optionalString (version != null) "-${version}"}"; 27 + 28 + buildInputs = [emacs texinfo] ++ packageRequires ++ buildInputs; 29 + propagatedBuildInputs = packageRequires; 30 + propagatedUserEnvPkgs = packageRequires; 31 + 32 + setupHook = ./setup-hook.sh; 33 + 34 + doCheck = false; 35 + 36 + meta = defaultMeta // meta; 37 + } 38 + 39 + // removeAttrs args [ "buildInputs" "packageRequires" 40 + "meta" 41 + ])
+67
pkgs/build-support/emacs/melpa.nix
··· 1 + # builder for Emacs packages built for packages.el 2 + # using MELPA package-build.el 3 + 4 + { lib, stdenv, fetchurl, emacs, texinfo }: 5 + 6 + with lib; 7 + 8 + { pname 9 + , version 10 + 11 + , files ? null 12 + , fileSpecs ? [ "*.el" "*.el.in" "dir" 13 + "*.info" "*.texi" "*.texinfo" 14 + "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" 15 + ] 16 + 17 + , meta ? {} 18 + 19 + , ... 20 + }@args: 21 + 22 + let 23 + 24 + packageBuild = fetchurl { 25 + url = https://raw.githubusercontent.com/milkypostman/melpa/12a862e5c5c62ce627dab83d7cf2cca6e8b56c47/package-build.el; 26 + sha256 = "1nviyyprypz7nmam9rwli4yv3kxh170glfbznryrp4czxkrjjdhk"; 27 + }; 28 + 29 + fname = "${pname}-${version}"; 30 + 31 + targets = concatStringsSep " " (if files == null then fileSpecs else files); 32 + 33 + defaultMeta = { 34 + homepage = "http://melpa.org/#/${pname}"; 35 + }; 36 + 37 + in 38 + 39 + import ./generic.nix { inherit lib stdenv emacs texinfo; } ({ 40 + inherit packageBuild; 41 + 42 + buildPhase = '' 43 + runHook preBuild 44 + 45 + emacs --batch -Q -l $packageBuild -l ${./melpa2nix.el} \ 46 + -f melpa2nix-build-package \ 47 + ${pname} ${version} ${targets} 48 + 49 + runHook postBuild 50 + ''; 51 + 52 + installPhase = '' 53 + runHook preInstall 54 + 55 + emacs --batch -Q -l $packageBuild -l ${./melpa2nix.el} \ 56 + -f melpa2nix-install-package \ 57 + ${fname}.* $out/share/emacs/site-lisp/elpa 58 + 59 + runHook postInstall 60 + ''; 61 + 62 + meta = defaultMeta // meta; 63 + } 64 + 65 + // removeAttrs args [ "files" "fileSpecs" 66 + "meta" 67 + ])
+34
pkgs/build-support/emacs/trivial.nix
··· 1 + # trivial builder for Emacs packages 2 + 3 + { lib, ... }@envargs: 4 + 5 + with lib; 6 + 7 + args: 8 + 9 + import ./generic.nix envargs ({ 10 + #preConfigure = '' 11 + # export LISPDIR=$out/share/emacs/site-lisp 12 + # export VERSION_SPECIFIC_LISPDIR=$out/share/emacs/site-lisp 13 + #''; 14 + 15 + buildPhase = '' 16 + eval "$preBuild" 17 + 18 + emacs -L . --batch -f batch-byte-compile *.el 19 + 20 + eval "$postBuild" 21 + ''; 22 + 23 + installPhase = '' 24 + eval "$preInstall" 25 + 26 + LISPDIR=$out/share/emacs/site-lisp 27 + install -d $LISPDIR 28 + install *.el *.elc $LISPDIR 29 + 30 + eval "$postInstall" 31 + ''; 32 + } 33 + 34 + // args)
-104
pkgs/build-support/melpa/default.nix
··· 1 - # generic builder for Emacs packages 2 - 3 - { stdenv, fetchurl, emacs, texinfo 4 - , extension ? (self : super : {}) 5 - }: 6 - 7 - { pname 8 - , version 9 - , src 10 - , packageRequires ? [] 11 - , extraBuildInputs ? [] 12 - 13 - , files ? null 14 - , fileSpecs ? [ "*.el" "*.el.in" "dir" 15 - "*.info" "*.texi" "*.texinfo" 16 - "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" 17 - ] 18 - 19 - , meta ? {} 20 - 21 - , preUnpack ? "", postUnpack ? "" 22 - , patches ? [], patchPhase ? "", prePatch ? "", postPatch ? "" 23 - , configureFlags ? [], preConfigure ? "", postConfigure ? "" 24 - , buildPhase ? "", preBuild ? "", postBuild ? "" 25 - , preInstall ? "", postInstall ? "" 26 - , doCheck ? false, checkPhase ? "", preCheck ? "", postCheck ? "" 27 - , preFixup ? "", postFixup ? "" 28 - }: 29 - 30 - let 31 - inherit (stdenv.lib) concatStringsSep optionalAttrs; 32 - 33 - packageBuild = fetchurl { 34 - url = https://raw.githubusercontent.com/milkypostman/melpa/12a862e5c5c62ce627dab83d7cf2cca6e8b56c47/package-build.el; 35 - sha256 = "1nviyyprypz7nmam9rwli4yv3kxh170glfbznryrp4czxkrjjdhk"; 36 - }; 37 - 38 - fname = "${pname}-${version}"; 39 - 40 - targets = concatStringsSep " " (if files == null then fileSpecs else files); 41 - 42 - defaultMeta = { 43 - broken = false; 44 - homepage = "http://melpa.org/#/${pname}"; 45 - platforms = emacs.meta.platforms; 46 - }; 47 - 48 - in 49 - 50 - stdenv.mkDerivation ({ 51 - name = "emacs-${fname}"; 52 - 53 - inherit src packageBuild; 54 - 55 - buildInputs = [emacs texinfo] ++ packageRequires ++ extraBuildInputs; 56 - propagatedBuildInputs = packageRequires; 57 - propagatedUserEnvPkgs = packageRequires; 58 - 59 - setupHook = ./setup-hook.sh; 60 - 61 - buildPhase = '' 62 - runHook preBuild 63 - 64 - emacs --batch -Q -l $packageBuild -l ${./melpa2nix.el} \ 65 - -f melpa2nix-build-package \ 66 - ${pname} ${version} ${targets} 67 - 68 - runHook postBuild 69 - ''; 70 - 71 - installPhase = '' 72 - runHook preInstall 73 - 74 - emacs --batch -Q -l $packageBuild -l ${./melpa2nix.el} \ 75 - -f melpa2nix-install-package \ 76 - ${fname}.* $out/share/emacs/site-lisp/elpa 77 - 78 - runHook postInstall 79 - ''; 80 - 81 - meta = defaultMeta // meta; 82 - } 83 - 84 - // optionalAttrs (preUnpack != "") { inherit preUnpack; } 85 - // optionalAttrs (postUnpack != "") { inherit postUnpack; } 86 - // optionalAttrs (configureFlags != []) { inherit configureFlags; } 87 - // optionalAttrs (patches != []) { inherit patches; } 88 - // optionalAttrs (patchPhase != "") { inherit patchPhase; } 89 - // optionalAttrs (prePatch != "") { inherit prePatch; } 90 - // optionalAttrs (postPatch != "") { inherit postPatch; } 91 - // optionalAttrs (preConfigure != "") { inherit preConfigure; } 92 - // optionalAttrs (postConfigure != "") { inherit postConfigure; } 93 - // optionalAttrs (buildPhase != "") { inherit buildPhase; } 94 - // optionalAttrs (preBuild != "") { inherit preBuild; } 95 - // optionalAttrs (postBuild != "") { inherit postBuild; } 96 - // optionalAttrs (doCheck) { inherit doCheck; } 97 - // optionalAttrs (checkPhase != "") { inherit checkPhase; } 98 - // optionalAttrs (preCheck != "") { inherit preCheck; } 99 - // optionalAttrs (postCheck != "") { inherit postCheck; } 100 - // optionalAttrs (preInstall != "") { inherit preInstall; } 101 - // optionalAttrs (postInstall != "") { inherit postInstall; } 102 - // optionalAttrs (preFixup != "") { inherit preFixup; } 103 - // optionalAttrs (postFixup != "") { inherit postFixup; } 104 - )
pkgs/build-support/melpa/melpa2nix.el pkgs/build-support/emacs/melpa2nix.el
pkgs/build-support/melpa/setup-hook.sh pkgs/build-support/emacs/setup-hook.sh
+25 -9
pkgs/top-level/all-packages.nix
··· 9995 9995 elvis = callPackage ../applications/editors/elvis { }; 9996 9996 9997 9997 emacs = emacs24; 9998 + emacsPackages = emacs24Packages; 9999 + emacsPackagesNg = emacs24PackagesNg; 10000 + emacsMelpa = emacs24PackagesNg; # for backward compatibility 9998 10001 9999 10002 emacs24 = callPackage ../applications/editors/emacs-24 { 10000 10003 # use override to enable additional features ··· 10017 10020 }); 10018 10021 emacs24Macport = self.emacs24Macport_24_4; 10019 10022 10020 - emacsMelpa = import ./emacs-melpa-packages.nix { 10021 - inherit stdenv pkgs fetchurl fetchgit fetchFromGitHub emacs texinfo; 10022 - external = { 10023 - inherit (haskellngPackages) ghc-mod structured-haskell-mode; 10024 - }; 10025 - }; 10026 - 10027 - emacsPackages = emacs: self: let callPackage = newScope self; in rec { 10023 + emacsPackagesGen = emacs: self: let callPackage = newScope self; in rec { 10028 10024 inherit emacs; 10029 10025 10030 10026 autoComplete = callPackage ../applications/editors/emacs-modes/auto-complete { }; ··· 10179 10175 cask = callPackage ../applications/editors/emacs-modes/cask { }; 10180 10176 }; 10181 10177 10182 - emacs24Packages = recurseIntoAttrs (emacsPackages emacs24 pkgs.emacs24Packages); 10178 + emacs24Packages = recurseIntoAttrs (emacsPackagesGen emacs24 pkgs.emacs24Packages); 10179 + 10180 + emacsPackagesNgGen = emacs: import ./emacs-packages.nix { 10181 + overrides = (config.emacsPackageOverrides or (p: {})) pkgs; 10182 + 10183 + inherit lib stdenv fetchurl fetchgit fetchFromGitHub emacs; 10184 + 10185 + trivialBuild = import ../build-support/emacs/trivial.nix { 10186 + inherit lib stdenv emacs texinfo; 10187 + }; 10188 + 10189 + melpaBuild = import ../build-support/emacs/melpa.nix { 10190 + inherit lib stdenv fetchurl emacs texinfo; 10191 + }; 10192 + 10193 + external = { 10194 + inherit (haskellngPackages) ghc-mod structured-haskell-mode Agda; 10195 + }; 10196 + }; 10197 + 10198 + emacs24PackagesNg = emacsPackagesNgGen emacs24; 10183 10199 10184 10200 inherit (gnome3) empathy; 10185 10201
+218 -26
pkgs/top-level/emacs-melpa-packages.nix pkgs/top-level/emacs-packages.nix
··· 1 - { pkgs, stdenv, fetchurl, fetchFromGitHub, fetchgit 2 - , emacs, texinfo 1 + # package.el-based emacs packages 2 + # 3 + ## add this at the start your init.el: 4 + # (require 'package) 5 + # 6 + # ;; optional. makes unpure packages archives unavailable 7 + # (setq package-archives nil) 8 + # 9 + # (add-to-list 'package-directory-list "/run/current-system/sw/share/emacs/site-lisp/elpa") 10 + # 11 + # ;; optional. use this if you install emacs packages to user profiles (with nix-env) 12 + # (add-to-list 'package-directory-list "~/.nix-profile/share/emacs/site-lisp/elpa") 13 + # 14 + # (package-initialize) 15 + 16 + { overrides 17 + 18 + , lib, stdenv, fetchurl, fetchgit, fetchFromGitHub 19 + 20 + , emacs 21 + , trivialBuild 22 + , melpaBuild 3 23 4 - # non-emacs packages 5 24 , external 6 - }: 25 + }@args: 7 26 8 - # package.el-based emacs packages 27 + with lib.licences; 9 28 10 - ## init.el 11 - # (require 'package) 12 - # (setq package-archives nil 13 - # package-user-dir "~/.nix-profile/share/emacs/site-lisp/elpa") 14 - # (package-initialize) 29 + let self = _self // overrides; 30 + callPackage = lib.callPackageWith (self // removeAttrs args ["overrides" "external"]); 31 + _self = with self; { 15 32 16 - with stdenv.lib.licences; 33 + ## START HERE 17 34 18 - let 19 - melpaBuild = import ../build-support/melpa { 20 - inherit stdenv fetchurl emacs texinfo; 21 - }; 22 - in 23 - 24 - rec { 25 35 ac-haskell-process = melpaBuild rec { 26 36 pname = "ac-haskell-process"; 27 37 version = "0.5"; ··· 44 54 rev = "8351e2df4fbbeb2a4003f2fb39f46d33803f3dac"; 45 55 sha256 = "17axrgd99glnl6ma4ls3k01ysdqmiqr581wnrbsn3s4gp53mm2x6"; 46 56 }; 47 - meta = { licence = gpl3Plus; }; 57 + meta = { 58 + description = "Advanced cursor movements mode for Emacs"; 59 + licence = gpl3Plus; 60 + }; 48 61 }; 49 62 50 63 ag = melpaBuild rec { ··· 60 73 meta = { licence = gpl3Plus; }; 61 74 }; 62 75 76 + agda2-mode = with external; trivialBuild { 77 + pname = "agda-mode"; 78 + version = Agda.version; 79 + 80 + phases = [ "buildPhase" "installPhase" ]; 81 + 82 + # already byte-compiled by Agda builder 83 + buildPhase = '' 84 + agda=`${Agda}/bin/agda-mode locate` 85 + cp `dirname $agda`/*.el* . 86 + ''; 87 + 88 + meta = { 89 + description = "Agda2-mode for Emacs extracted from Agda package"; 90 + longDescription = '' 91 + Wrapper packages that liberates init.el from `agda-mode locate` magic. 92 + Simply add this to user profile or systemPackages and do `(require 'agda2)` in init.el. 93 + ''; 94 + homepage = Agda.meta.homepage; 95 + license = Agda.meta.license; 96 + }; 97 + }; 98 + 99 + anzu = melpaBuild rec { 100 + pname = "anzu"; 101 + version = "0.52"; 102 + src = fetchFromGitHub { 103 + owner = "syohex"; 104 + repo = "emacs-anzu"; 105 + rev = "f41db6225d8fb983324765aa42c94d3ee379a49f"; 106 + sha256 = "1mn20swasrl8kr557r1850vr1q0gcnwlxxafnc6lq5g01kjfcdxd"; 107 + }; 108 + meta = { 109 + description = "Show number of matches in Emacs mode-line while searching"; 110 + longDescription = '' 111 + anzu.el is an Emacs port of anzu.vim. anzu.el provides a minor 112 + mode which displays current match and total matches information 113 + in the mode-line in various search mode. 114 + ''; 115 + homepage = https://github.com/syohex/emacs-anzu/; 116 + license = gpl3Plus; 117 + }; 118 + }; 119 + 120 + apel = melpaBuild rec { 121 + pname = "apel"; 122 + version = "10.8"; 123 + src = fetchFromGitHub { 124 + owner = "wanderlust"; 125 + repo = pname; 126 + rev = "8402e59eadb580f59969114557b331b4d9364f95"; 127 + sha256 = "0sdxnf4b8rqs1cbjxh23wvxmj7ll3zddv8yfdgif6zmgyy8xhc9m"; 128 + }; 129 + files = [ 130 + "alist.el" "apel-ver.el" "broken.el" "calist.el" 131 + "emu.el" "filename.el" "install.el" "inv-23.el" "invisible.el" 132 + "mcharset.el" "mcs-20.el" "mcs-e20.el" "mule-caesar.el" 133 + "path-util.el" "pccl-20.el" "pccl.el" "pces-20.el" "pces-e20.el" 134 + "pces.el" "pcustom.el" "poe.el" "poem-e20.el" "poem-e20_3.el" 135 + "poem.el" "product.el" "pym.el" "richtext.el" "static.el" 136 + ]; 137 + meta = { 138 + description = "A Portable Emacs Library"; 139 + license = gpl3Plus; # probably 140 + }; 141 + }; 142 + 63 143 async = melpaBuild rec { 64 144 pname = "async"; 65 145 version = "1.2"; ··· 95 175 sha256 = "050lb8qjq7ra35mqp6j6qkwbvq5zj3yhz73aym5kf1vjd42rmjcw"; 96 176 }; 97 177 packageRequires = [ popup ]; 98 - 99 178 meta = { 100 179 description = "Auto-complete extension for Emacs"; 101 180 homepage = http://cx4a.org/software/auto-complete/; 102 181 license = gpl3Plus; 103 - platforms = stdenv.lib.platforms.all; 182 + platforms = lib.platforms.all; 104 183 }; 105 184 }; 106 185 ··· 117 196 meta = { licence = gpl3Plus; }; 118 197 }; 119 198 199 + browse-kill-ring = melpaBuild rec { 200 + pname = "browse-kill-ring"; 201 + version = "20140104"; 202 + src = fetchFromGitHub { 203 + owner = pname; 204 + repo = pname; 205 + rev = "f81ca5f14479fa9e938f89bf8f6baa3c4bdfb755"; 206 + sha256 = "149g4qs5dqy6yzdj5smb39id5f72bz64qfv5bjf3ssvhwl2rfba8"; 207 + }; 208 + meta = { 209 + description = "Interactively insert items from Emacs kill-ring"; 210 + homepage = https://github.com/browse-kill-ring/browse-kill-ring/; 211 + license = gpl2Plus; 212 + }; 213 + }; 214 + 120 215 change-inner = melpaBuild rec { 121 216 pname = "change-inner"; 122 217 version = "20130208"; ··· 215 310 sha256 = "0wrmlmgr4mwxlmmh8blplddri2lpk4g8k3l1vpb5c6a975420qvn"; 216 311 }; 217 312 packageRequires = [ evil ]; 218 - meta = { licence = gpl3Plus; }; 313 + meta = { 314 + description = "surround.vim emulation for Emacs evil mode"; 315 + licence = gpl3Plus; 316 + }; 219 317 }; 220 318 221 319 evil = melpaBuild { ··· 227 325 sha256 = "0yiqpzsm5sr7xdkixdvfg312dk9vsdcmj69gizk744d334yn8rsz"; 228 326 }; 229 327 packageRequires = [ goto-chg undo-tree ]; 230 - meta = { licence = gpl3Plus; }; 328 + meta = { 329 + description = "Extensible vi layer for Emacs"; 330 + licence = gpl3Plus; 331 + }; 231 332 }; 232 333 233 334 exec-path-from-shell = melpaBuild rec { ··· 251 352 rev = "fa413e07c97997d950c92d6012f5442b5c3cee78"; 252 353 sha256 = "04k0518wfy72wpzsswmncnhd372fxa0r8nbfhmbyfmns8n7sr045"; 253 354 }; 254 - meta = { licence = gpl3Plus; }; 355 + meta = { 356 + description = "Increases the selected region by semantic units in Emacs"; 357 + licence = gpl3Plus; 358 + }; 359 + }; 360 + 361 + flim = melpaBuild rec { 362 + pname = "flim"; 363 + version = "1.14.9"; # 20141216 364 + src = fetchFromGitHub { 365 + owner = "wanderlust"; 366 + repo = pname; 367 + rev = "488a4d70fb4ae57bdd30dc75c2d75579894e28a2"; 368 + sha256 = "178fhpbyffksr4v3m8jmx4rx2vqyz23qhbyvic5afabxi6lahjfs"; 369 + }; 370 + packageRequires = [ apel ]; 371 + meta = { 372 + description = "Email message encoding library for Emacs"; 373 + license = gpl3Plus; # probably 374 + }; 255 375 }; 256 376 257 377 flycheck-pos-tip = melpaBuild rec { ··· 442 562 meta = { licence = gpl3Plus; }; 443 563 }; 444 564 565 + ido-ubiquitous = melpaBuild rec { 566 + pname = "ido-ubiquitous"; 567 + version = "2.17"; 568 + src = fetchFromGitHub { 569 + owner = "DarwinAwardWinner"; 570 + repo = pname; 571 + rev = "323e4cddc05d5a4546c1b64132b2b1e9f8896452"; 572 + sha256 = "0wdjz3cqzrxhrk68g5gyvc9j2rb6f4yw00xbjgw9ldwlhmkwy5ja"; 573 + }; 574 + meta = { 575 + description = "Does what you expected ido-everywhere to do in Emacs"; 576 + homepage = https://github.com/DarwinAwardWinner/ido-ubiquitous/; 577 + license = gpl3Plus; 578 + }; 579 + }; 580 + 445 581 idris-mode = melpaBuild rec { 446 582 pname = "idris-mode"; 447 583 version = "0.9.15"; ··· 506 642 }; 507 643 meta = { licence = gpl3Plus; }; 508 644 }; 645 + 646 + nyan-mode = callPackage ../applications/editors/emacs-modes/nyan-mode {}; 509 647 510 648 org-plus-contrib = melpaBuild rec { 511 649 pname = "org-plus-contrib"; ··· 583 721 meta = { licence = gpl3Plus; }; 584 722 }; 585 723 724 + semi = melpaBuild rec { 725 + pname = "semi"; 726 + version = "1.14.7"; # 20150203 727 + src = fetchFromGitHub { 728 + owner = "wanderlust"; 729 + repo = pname; 730 + rev = "9976269556c5bcc021e4edf1b0e1accd39929528"; 731 + sha256 = "1g1xg57pz4msd3f998af5gq28qhmvi410faygzspra6y6ygaka68"; 732 + }; 733 + packageRequires = [ apel flim ]; 734 + meta = { 735 + description = "MIME library for Emacs"; 736 + license = gpl3Plus; # probably 737 + }; 738 + }; 739 + 586 740 shorten = melpaBuild rec { 587 741 pname = "shorten"; 588 742 version = "1.5"; ··· 622 776 meta = { licence = gpl3Plus; }; 623 777 }; 624 778 779 + smex = melpaBuild rec { 780 + pname = "smex"; 781 + version = "20141210"; 782 + src = fetchFromGitHub { 783 + owner = "nonsequitur"; 784 + repo = pname; 785 + rev = "aff8d4485139ac28f1c7e62912c0d0d480995831"; 786 + sha256 = "0017f1ji7rxad2n49dhn5g0pmw6lmw80cqk6dynszizj46xpbqfp"; 787 + }; 788 + meta = { 789 + description = "M-x enhancement for Emacs build on top of Ido"; 790 + homepage = https://github.com/nonsequitur/smex/; 791 + license = emacs.meta.license; # should be "same as Emacs" 792 + }; 793 + }; 794 + 625 795 structured-haskell-mode = melpaBuild rec { 626 796 pname = "shm"; 627 797 version = external.structured-haskell-mode.version; ··· 700 870 meta = { licence = gpl3Plus; }; 701 871 }; 702 872 873 + wanderlust = melpaBuild rec { 874 + pname = "wanderlust"; 875 + version = "2.15.9"; # 20150301 876 + src = fetchFromGitHub { 877 + owner = pname; 878 + repo = pname; 879 + rev = "13fb4f6519490d4ac7138f3bcf76707654348071"; 880 + sha256 = "1l48xfcwkm205prspa1rns6lqfizik5gpdwmlfgyb5mabm9x53zn"; 881 + }; 882 + packageRequires = [ apel flim semi ]; 883 + fileSpecs = [ 884 + "doc/wl.texi" "doc/wl-ja.texi" 885 + "elmo/*.el" "wl/*.el" 886 + "etc/icons" 887 + ]; 888 + meta = { 889 + description = "E-Mail client for Emacs"; 890 + license = gpl3Plus; # probably 891 + }; 892 + }; 893 + 703 894 weechat = melpaBuild rec { 704 895 pname = "weechat.el"; 705 896 version = "20141016"; ··· 709 900 rev = "4cb2ced1eda5167ce774e04657d2cd077b63c706"; 710 901 sha256 = "003sihp7irm0qqba778dx0gf8xhkxd1xk7ig5kgkryvl2jyirk28"; 711 902 }; 712 - postPatch = stdenv.lib.optionalString (!stdenv.isLinux) '' 903 + postPatch = lib.optionalString (!stdenv.isLinux) '' 713 904 rm weechat-sauron.el weechat-secrets.el 714 905 ''; 715 906 packageRequires = [ s ]; ··· 727 918 }; 728 919 meta = { licence = gpl3Plus; }; 729 920 }; 730 - } 921 + 922 + }; in self