From 2c32576a912af1d7d7311d6837f21d4aa8b2d8c7 Mon Sep 17 00:00:00 2001 From: Jan Malakhovski Date: Sat, 13 Jul 2013 14:09:24 +0000 Subject: [PATCH 01/11] add emacs-modes/{apel, flim, semi, wanderlust} --- .../editors/emacs-modes/apel/default.nix | 25 ++++++++++++++ .../editors/emacs-modes/flim/default.nix | 30 +++++++++++++++++ .../editors/emacs-modes/semi/default.nix | 33 +++++++++++++++++++ .../emacs-modes/wanderlust/default.nix | 31 +++++++++++++++++ pkgs/top-level/all-packages.nix | 8 +++++ 5 files changed, 127 insertions(+) create mode 100644 pkgs/applications/editors/emacs-modes/apel/default.nix create mode 100644 pkgs/applications/editors/emacs-modes/flim/default.nix create mode 100644 pkgs/applications/editors/emacs-modes/semi/default.nix create mode 100644 pkgs/applications/editors/emacs-modes/wanderlust/default.nix diff --git a/pkgs/applications/editors/emacs-modes/apel/default.nix b/pkgs/applications/editors/emacs-modes/apel/default.nix new file mode 100644 index 00000000000..7036dc3bcc5 --- /dev/null +++ b/pkgs/applications/editors/emacs-modes/apel/default.nix @@ -0,0 +1,25 @@ +{stdenv, fetchgit, emacs}: + +stdenv.mkDerivation rec { + name = "apel-git"; + + src = fetchgit { + url = "http://github.com/wanderlust/apel"; + rev = "beca6c4fc58fdc0f8923b320265ec5a304850f50"; + }; + + buildInputs = [emacs]; + + preConfigure = '' + cat << EOF > APEL-CFG + (setq APEL_DIR "$out/share/emacs/site-lisp/apel") + (setq EMU_DIR "$out/share/emacs/site-lisp/emu") + EOF + ''; + + meta = { + description = "APEL"; + homepage = http://nya.org/; + license = "GPL"; + }; +} diff --git a/pkgs/applications/editors/emacs-modes/flim/default.nix b/pkgs/applications/editors/emacs-modes/flim/default.nix new file mode 100644 index 00000000000..1da221a4b1b --- /dev/null +++ b/pkgs/applications/editors/emacs-modes/flim/default.nix @@ -0,0 +1,30 @@ +{stdenv, fetchgit, emacs, apel}: + +stdenv.mkDerivation rec { + name = "flim-git"; + + src = fetchgit { + url = "http://github.com/wanderlust/flim"; + rev = "d435c3626d2e07cc62f084930b6d5eca66f6768c"; + }; + + buildInputs = [emacs apel]; + + preConfigure = '' + cat << EOF > FLIM-CFG + (add-to-list 'load-path "${apel}/share/emacs/site-lisp/apel") + (add-to-list 'load-path "${apel}/share/emacs/site-lisp/emu") + (require 'install) + (setq PREFIX "$out/share") + (setq LISPDIR "$out/share/emacs/site-lisp") + (setq FLIM_DIR "$out/share/emacs/site-lisp/flim") + EOF + cat FLIM-CFG + ''; + + meta = { + description = "FLIM"; + homepage = http://nya.org/; + license = "GPL"; + }; +} diff --git a/pkgs/applications/editors/emacs-modes/semi/default.nix b/pkgs/applications/editors/emacs-modes/semi/default.nix new file mode 100644 index 00000000000..43e184608d9 --- /dev/null +++ b/pkgs/applications/editors/emacs-modes/semi/default.nix @@ -0,0 +1,33 @@ +{stdenv, fetchgit, emacs, apel, flim}: + +stdenv.mkDerivation rec { + name = "semi-git"; + + src = fetchgit { + url = "http://github.com/wanderlust/semi"; + rev = "e81b1ec56a5d2c8ae352df1cd6a7eaa2532097f0"; + }; + + buildInputs = [emacs apel flim]; + + preConfigure = '' + cat << EOF > SEMI-CFG + (add-to-list 'load-path "${apel}/share/emacs/site-lisp/apel") + (add-to-list 'load-path "${apel}/share/emacs/site-lisp/emu") + (add-to-list 'load-path "${flim}/share/emacs/site-lisp/flim") + (require 'install) + (setq PREFIX "$out") + (setq METHOD_DIR "$out/share/semi") + (setq LISPDIR "$out/share/emacs/site-lisp") + (setq SEMI_KERNEL_DIR "$out/share/emacs/site-lisp/semi") + (setq SETUP_FILE_DIR "$out/share/emacs/site-lisp/semi") + EOF + cat SEMI-CFG + ''; + + meta = { + description = "SEMI"; + homepage = http://nya.org/; + license = "GPL"; + }; +} diff --git a/pkgs/applications/editors/emacs-modes/wanderlust/default.nix b/pkgs/applications/editors/emacs-modes/wanderlust/default.nix new file mode 100644 index 00000000000..0ee49bef161 --- /dev/null +++ b/pkgs/applications/editors/emacs-modes/wanderlust/default.nix @@ -0,0 +1,31 @@ +{stdenv, fetchgit, emacs, apel, flim, semi}: + +stdenv.mkDerivation rec { + name = "wanderlust-git"; + + src = fetchgit { + url = "http://github.com/wanderlust/wanderlust"; + rev = "5e1ccbda73e29657fc05dc05aa9717eff02fdf71"; + }; + + buildInputs = [emacs apel flim semi]; + + preConfigure = '' + cat << EOF > WL-CFG + (add-to-list 'load-path "${apel}/share/emacs/site-lisp/apel") + (add-to-list 'load-path "${apel}/share/emacs/site-lisp/emu") + (add-to-list 'load-path "${flim}/share/emacs/site-lisp/flim") + (add-to-list 'load-path "${semi}/share/emacs/site-lisp/semi") + (require 'install) + (setq LISPDIR "$out/share/emacs/site-lisp") + (setq PIXMAPDIR (concat "$out/share/emacs/" emacs-version "/etc/wl/icons")) + EOF + cat WL-CFG + ''; + + meta = { + description = "wanderlust"; + homepage = http://nya.org/; + license = "GPL"; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index fba5857cfb4..690ff3851e1 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -10018,6 +10018,8 @@ let autoComplete = callPackage ../applications/editors/emacs-modes/auto-complete { }; + apel = callPackage ../applications/editors/emacs-modes/apel { }; + bbdb = callPackage ../applications/editors/emacs-modes/bbdb { }; bbdb3 = callPackage ../applications/editors/emacs-modes/bbdb/3.nix {}; @@ -10056,6 +10058,8 @@ let ess = callPackage ../applications/editors/emacs-modes/ess { }; + flim = callPackage ../applications/editors/emacs-modes/flim { }; + flycheck = callPackage ../applications/editors/emacs-modes/flycheck { }; flymakeCursor = callPackage ../applications/editors/emacs-modes/flymake-cursor { }; @@ -10147,6 +10151,8 @@ let sbtMode = callPackage ../applications/editors/emacs-modes/sbt-mode { }; + semi = callPackage ../applications/editors/emacs-modes/semi { }; + scalaMode1 = callPackage ../applications/editors/emacs-modes/scala-mode/v1.nix { }; scalaMode2 = callPackage ../applications/editors/emacs-modes/scala-mode/v2.nix { }; @@ -10161,6 +10167,8 @@ let tuaregMode = callPackage ../applications/editors/emacs-modes/tuareg { }; + wanderlust = callPackage ../applications/editors/emacs-modes/wanderlust { }; + writeGood = callPackage ../applications/editors/emacs-modes/writegood { }; xmlRpc = callPackage ../applications/editors/emacs-modes/xml-rpc { }; From a444eff3f29c292ffb62700572cbd4c9cdb3718b Mon Sep 17 00:00:00 2001 From: Jan Malakhovski Date: Mon, 2 Mar 2015 23:37:43 +0000 Subject: [PATCH 02/11] reorganize emacs related files --- .../{melpa/default.nix => emacs/melpa.nix} | 0 .../{melpa => emacs}/melpa2nix.el | 0 .../{melpa => emacs}/setup-hook.sh | 0 pkgs/top-level/all-packages.nix | 22 +++++++++++-------- ...-melpa-packages.nix => emacs-packages.nix} | 2 +- 5 files changed, 14 insertions(+), 10 deletions(-) rename pkgs/build-support/{melpa/default.nix => emacs/melpa.nix} (100%) rename pkgs/build-support/{melpa => emacs}/melpa2nix.el (100%) rename pkgs/build-support/{melpa => emacs}/setup-hook.sh (100%) rename pkgs/top-level/{emacs-melpa-packages.nix => emacs-packages.nix} (99%) diff --git a/pkgs/build-support/melpa/default.nix b/pkgs/build-support/emacs/melpa.nix similarity index 100% rename from pkgs/build-support/melpa/default.nix rename to pkgs/build-support/emacs/melpa.nix diff --git a/pkgs/build-support/melpa/melpa2nix.el b/pkgs/build-support/emacs/melpa2nix.el similarity index 100% rename from pkgs/build-support/melpa/melpa2nix.el rename to pkgs/build-support/emacs/melpa2nix.el diff --git a/pkgs/build-support/melpa/setup-hook.sh b/pkgs/build-support/emacs/setup-hook.sh similarity index 100% rename from pkgs/build-support/melpa/setup-hook.sh rename to pkgs/build-support/emacs/setup-hook.sh diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 690ff3851e1..b5eed339f46 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -9984,6 +9984,8 @@ let elvis = callPackage ../applications/editors/elvis { }; emacs = emacs24; + emacsPackages = emacs24Packages; + emacsMelpa = emacs24Melpa; emacs24 = callPackage ../applications/editors/emacs-24 { # use override to enable additional features @@ -10006,14 +10008,7 @@ let }); emacs24Macport = self.emacs24Macport_24_4; - emacsMelpa = import ./emacs-melpa-packages.nix { - inherit stdenv pkgs fetchurl fetchgit fetchFromGitHub emacs texinfo; - external = { - inherit (haskellngPackages) ghc-mod structured-haskell-mode; - }; - }; - - emacsPackages = emacs: self: let callPackage = newScope self; in rec { + emacsPackagesGen = emacs: self: let callPackage = newScope self; in rec { inherit emacs; autoComplete = callPackage ../applications/editors/emacs-modes/auto-complete { }; @@ -10176,7 +10171,16 @@ let cask = callPackage ../applications/editors/emacs-modes/cask { }; }; - emacs24Packages = recurseIntoAttrs (emacsPackages emacs24 pkgs.emacs24Packages); + emacs24Packages = recurseIntoAttrs (emacsPackagesGen emacs24 pkgs.emacs24Packages); + + emacsMelpaGen = emacs: import ./emacs-packages.nix { + inherit stdenv pkgs fetchurl fetchgit fetchFromGitHub emacs texinfo; + external = { + inherit (haskellngPackages) ghc-mod structured-haskell-mode; + }; + }; + + emacs24Melpa = emacsMelpaGen emacs24; inherit (gnome3) empathy; diff --git a/pkgs/top-level/emacs-melpa-packages.nix b/pkgs/top-level/emacs-packages.nix similarity index 99% rename from pkgs/top-level/emacs-melpa-packages.nix rename to pkgs/top-level/emacs-packages.nix index e8f965a784a..0be7a3adf47 100644 --- a/pkgs/top-level/emacs-melpa-packages.nix +++ b/pkgs/top-level/emacs-packages.nix @@ -16,7 +16,7 @@ with stdenv.lib.licences; let - melpaBuild = import ../build-support/melpa { + melpaBuild = import ../build-support/emacs/melpa.nix { inherit stdenv fetchurl emacs texinfo; }; in From e4a4e109ba49f3868f63a61e514c4846a1cd0b9a Mon Sep 17 00:00:00 2001 From: Jan Malakhovski Date: Mon, 20 Jan 2014 23:57:04 +0000 Subject: [PATCH 03/11] refactor Emacs packages'/modes' builders This simplifies melpa builder by merging with it my old emacs modes builder, adds better instructions and support for overrides in emacs-packages.nix, and renames some emacs-related stuff in all-packages.nix for sanity reasons. I declare this backwards compatible since direct uses of emacsPackages in configuration.nix are very unlikely. --- pkgs/build-support/emacs/generic.nix | 41 ++++++++++++++++++ pkgs/build-support/emacs/melpa.nix | 63 ++++++---------------------- pkgs/build-support/emacs/trivial.nix | 34 +++++++++++++++ pkgs/top-level/all-packages.nix | 20 +++++++-- pkgs/top-level/emacs-packages.nix | 53 +++++++++++++---------- 5 files changed, 136 insertions(+), 75 deletions(-) create mode 100644 pkgs/build-support/emacs/generic.nix create mode 100644 pkgs/build-support/emacs/trivial.nix diff --git a/pkgs/build-support/emacs/generic.nix b/pkgs/build-support/emacs/generic.nix new file mode 100644 index 00000000000..be81e93e32a --- /dev/null +++ b/pkgs/build-support/emacs/generic.nix @@ -0,0 +1,41 @@ +# generic builder for Emacs packages + +{ lib, stdenv, emacs, texinfo }: + +with lib; + +{ pname +, version ? null + +, buildInputs ? [] +, packageRequires ? [] + +, meta ? {} + +, ... +}@args: + +let + defaultMeta = { + broken = false; + platforms = emacs.meta.platforms; + }; +in + +stdenv.mkDerivation ({ + name = "emacs-${pname}${optionalString (version != null) "-${version}"}"; + + buildInputs = [emacs texinfo] ++ packageRequires ++ buildInputs; + propagatedBuildInputs = packageRequires; + propagatedUserEnvPkgs = packageRequires; + + setupHook = ./setup-hook.sh; + + doCheck = false; + + meta = defaultMeta // meta; +} + +// removeAttrs args [ "buildInputs" "packageRequires" + "meta" + ]) diff --git a/pkgs/build-support/emacs/melpa.nix b/pkgs/build-support/emacs/melpa.nix index 11cb14f93db..607a1b4a5ef 100644 --- a/pkgs/build-support/emacs/melpa.nix +++ b/pkgs/build-support/emacs/melpa.nix @@ -1,14 +1,12 @@ -# generic builder for Emacs packages +# builder for Emacs packages built for packages.el +# using MELPA package-build.el -{ stdenv, fetchurl, emacs, texinfo -, extension ? (self : super : {}) -}: +{ lib, stdenv, fetchurl, emacs, texinfo }: + +with lib; { pname , version -, src -, packageRequires ? [] -, extraBuildInputs ? [] , files ? null , fileSpecs ? [ "*.el" "*.el.in" "dir" @@ -18,19 +16,12 @@ , meta ? {} -, preUnpack ? "", postUnpack ? "" -, patches ? [], patchPhase ? "", prePatch ? "", postPatch ? "" -, configureFlags ? [], preConfigure ? "", postConfigure ? "" -, buildPhase ? "", preBuild ? "", postBuild ? "" -, preInstall ? "", postInstall ? "" -, doCheck ? false, checkPhase ? "", preCheck ? "", postCheck ? "" -, preFixup ? "", postFixup ? "" -}: +, ... +}@args: let - inherit (stdenv.lib) concatStringsSep optionalAttrs; - packageBuild = fetchurl { + packageBuild = fetchurl { url = https://raw.githubusercontent.com/milkypostman/melpa/12a862e5c5c62ce627dab83d7cf2cca6e8b56c47/package-build.el; sha256 = "1nviyyprypz7nmam9rwli4yv3kxh170glfbznryrp4czxkrjjdhk"; }; @@ -40,23 +31,13 @@ let targets = concatStringsSep " " (if files == null then fileSpecs else files); defaultMeta = { - broken = false; homepage = "http://melpa.org/#/${pname}"; - platforms = emacs.meta.platforms; }; in -stdenv.mkDerivation ({ - name = "emacs-${fname}"; - - inherit src packageBuild; - - buildInputs = [emacs texinfo] ++ packageRequires ++ extraBuildInputs; - propagatedBuildInputs = packageRequires; - propagatedUserEnvPkgs = packageRequires; - - setupHook = ./setup-hook.sh; +import ./generic.nix { inherit lib stdenv emacs texinfo; } ({ + inherit packageBuild; buildPhase = '' runHook preBuild @@ -81,24 +62,6 @@ stdenv.mkDerivation ({ meta = defaultMeta // meta; } -// optionalAttrs (preUnpack != "") { inherit preUnpack; } -// optionalAttrs (postUnpack != "") { inherit postUnpack; } -// optionalAttrs (configureFlags != []) { inherit configureFlags; } -// optionalAttrs (patches != []) { inherit patches; } -// optionalAttrs (patchPhase != "") { inherit patchPhase; } -// optionalAttrs (prePatch != "") { inherit prePatch; } -// optionalAttrs (postPatch != "") { inherit postPatch; } -// optionalAttrs (preConfigure != "") { inherit preConfigure; } -// optionalAttrs (postConfigure != "") { inherit postConfigure; } -// optionalAttrs (buildPhase != "") { inherit buildPhase; } -// optionalAttrs (preBuild != "") { inherit preBuild; } -// optionalAttrs (postBuild != "") { inherit postBuild; } -// optionalAttrs (doCheck) { inherit doCheck; } -// optionalAttrs (checkPhase != "") { inherit checkPhase; } -// optionalAttrs (preCheck != "") { inherit preCheck; } -// optionalAttrs (postCheck != "") { inherit postCheck; } -// optionalAttrs (preInstall != "") { inherit preInstall; } -// optionalAttrs (postInstall != "") { inherit postInstall; } -// optionalAttrs (preFixup != "") { inherit preFixup; } -// optionalAttrs (postFixup != "") { inherit postFixup; } -) +// removeAttrs args [ "files" "fileSpecs" + "meta" + ]) diff --git a/pkgs/build-support/emacs/trivial.nix b/pkgs/build-support/emacs/trivial.nix new file mode 100644 index 00000000000..9c97e8bf951 --- /dev/null +++ b/pkgs/build-support/emacs/trivial.nix @@ -0,0 +1,34 @@ +# trivial builder for Emacs packages + +{ lib, ... }@envargs: + +with lib; + +args: + +import ./generic.nix envargs ({ + #preConfigure = '' + # export LISPDIR=$out/share/emacs/site-lisp + # export VERSION_SPECIFIC_LISPDIR=$out/share/emacs/site-lisp + #''; + + buildPhase = '' + eval "$preBuild" + + emacs -L . --batch -f batch-byte-compile *.el + + eval "$postBuild" + ''; + + installPhase = '' + eval "$preInstall" + + LISPDIR=$out/share/emacs/site-lisp + install -d $LISPDIR + install *.el *.elc $LISPDIR + + eval "$postInstall" + ''; +} + +// args) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index b5eed339f46..78c9b3195c6 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -9985,7 +9985,8 @@ let emacs = emacs24; emacsPackages = emacs24Packages; - emacsMelpa = emacs24Melpa; + emacsPackagesNg = emacs24PackagesNg; + emacsMelpa = emacs24PackagesNg; # for backward compatibility emacs24 = callPackage ../applications/editors/emacs-24 { # use override to enable additional features @@ -10173,14 +10174,25 @@ let emacs24Packages = recurseIntoAttrs (emacsPackagesGen emacs24 pkgs.emacs24Packages); - emacsMelpaGen = emacs: import ./emacs-packages.nix { - inherit stdenv pkgs fetchurl fetchgit fetchFromGitHub emacs texinfo; + emacsPackagesNgGen = emacs: import ./emacs-packages.nix { + overrides = (config.emacsPackageOverrides or (p: {})) pkgs; + + inherit lib stdenv fetchurl fetchgit fetchFromGitHub emacs; + + trivialBuild = import ../build-support/emacs/trivial.nix { + inherit lib stdenv emacs texinfo; + }; + + melpaBuild = import ../build-support/emacs/melpa.nix { + inherit lib stdenv fetchurl emacs texinfo; + }; + external = { inherit (haskellngPackages) ghc-mod structured-haskell-mode; }; }; - emacs24Melpa = emacsMelpaGen emacs24; + emacs24PackagesNg = emacsPackagesNgGen emacs24; inherit (gnome3) empathy; diff --git a/pkgs/top-level/emacs-packages.nix b/pkgs/top-level/emacs-packages.nix index 0be7a3adf47..9f7c9675cb0 100644 --- a/pkgs/top-level/emacs-packages.nix +++ b/pkgs/top-level/emacs-packages.nix @@ -1,27 +1,37 @@ -{ pkgs, stdenv, fetchurl, fetchFromGitHub, fetchgit -, emacs, texinfo - -# non-emacs packages -, external -}: - # package.el-based emacs packages - -## init.el +# +## add this at the start your init.el: # (require 'package) -# (setq package-archives nil -# package-user-dir "~/.nix-profile/share/emacs/site-lisp/elpa") +# +# ;; optional. makes unpure packages archives unavailable +# (setq package-archives nil) +# +# (add-to-list 'package-directory-list "/run/current-system/sw/share/emacs/site-lisp/elpa") +# +# ;; optional. use this if you install emacs packages to user profiles (with nix-env) +# (add-to-list 'package-directory-list "~/.nix-profile/share/emacs/site-lisp/elpa") +# # (package-initialize) -with stdenv.lib.licences; +{ overrides -let - melpaBuild = import ../build-support/emacs/melpa.nix { - inherit stdenv fetchurl emacs texinfo; - }; -in +, lib, stdenv, fetchurl, fetchgit, fetchFromGitHub + +, emacs +, trivialBuild +, melpaBuild + +, external +}@args: + +with lib.licences; + +let self = _self // overrides; + callPackage = lib.callPackageWith (self // removeAttrs args ["overrides" "external"]); + _self = with self; { + + ## START HERE -rec { ac-haskell-process = melpaBuild rec { pname = "ac-haskell-process"; version = "0.5"; @@ -100,7 +110,7 @@ rec { description = "Auto-complete extension for Emacs"; homepage = http://cx4a.org/software/auto-complete/; license = gpl3Plus; - platforms = stdenv.lib.platforms.all; + platforms = lib.platforms.all; }; }; @@ -709,7 +719,7 @@ rec { rev = "4cb2ced1eda5167ce774e04657d2cd077b63c706"; sha256 = "003sihp7irm0qqba778dx0gf8xhkxd1xk7ig5kgkryvl2jyirk28"; }; - postPatch = stdenv.lib.optionalString (!stdenv.isLinux) '' + postPatch = lib.optionalString (!stdenv.isLinux) '' rm weechat-sauron.el weechat-secrets.el ''; packageRequires = [ s ]; @@ -727,4 +737,5 @@ rec { }; meta = { licence = gpl3Plus; }; }; -} + +}; in self From e3f6e475b7c2a443b3baadbe58f0f2bcf33a0e74 Mon Sep 17 00:00:00 2001 From: Jan Malakhovski Date: Tue, 21 Jan 2014 00:22:32 +0000 Subject: [PATCH 04/11] add agda emacs package wrapper --- pkgs/top-level/all-packages.nix | 2 +- pkgs/top-level/emacs-packages.nix | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 78c9b3195c6..deb0d0483c4 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -10188,7 +10188,7 @@ let }; external = { - inherit (haskellngPackages) ghc-mod structured-haskell-mode; + inherit (haskellngPackages) ghc-mod structured-haskell-mode Agda; }; }; diff --git a/pkgs/top-level/emacs-packages.nix b/pkgs/top-level/emacs-packages.nix index 9f7c9675cb0..04e1dac6857 100644 --- a/pkgs/top-level/emacs-packages.nix +++ b/pkgs/top-level/emacs-packages.nix @@ -70,6 +70,29 @@ let self = _self // overrides; meta = { licence = gpl3Plus; }; }; + agda2-mode = with external; trivialBuild { + pname = "agda-mode"; + version = Agda.version; + + phases = [ "buildPhase" "installPhase" ]; + + # already byte-compiled by Agda builder + buildPhase = '' + agda=`${Agda}/bin/agda-mode locate` + cp `dirname $agda`/*.el* . + ''; + + meta = { + description = "Agda2-mode for Emacs extracted from Agda package"; + longDescription = '' + Wrapper packages that liberates init.el from `agda-mode locate` magic. + Simply add this to user profile or systemPackages and do `(require 'agda2)` in init.el. + ''; + homepage = Agda.meta.homepage; + license = Agda.meta.license; + }; + }; + async = melpaBuild rec { pname = "async"; version = "1.2"; From de6e14f3315de5ef4eb80ba409dfe2a00132dfc6 Mon Sep 17 00:00:00 2001 From: Jan Malakhovski Date: Tue, 21 Jan 2014 00:05:57 +0000 Subject: [PATCH 05/11] add anzu emacs package --- pkgs/top-level/emacs-packages.nix | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/pkgs/top-level/emacs-packages.nix b/pkgs/top-level/emacs-packages.nix index 04e1dac6857..458978932bf 100644 --- a/pkgs/top-level/emacs-packages.nix +++ b/pkgs/top-level/emacs-packages.nix @@ -93,6 +93,27 @@ let self = _self // overrides; }; }; + anzu = melpaBuild rec { + pname = "anzu"; + version = "0.52"; + src = fetchFromGitHub { + owner = "syohex"; + repo = "emacs-anzu"; + rev = "f41db6225d8fb983324765aa42c94d3ee379a49f"; + sha256 = "1mn20swasrl8kr557r1850vr1q0gcnwlxxafnc6lq5g01kjfcdxd"; + }; + meta = { + description = "Show number of matches in Emacs mode-line while searching"; + longDescription = '' + anzu.el is an Emacs port of anzu.vim. anzu.el provides a minor + mode which displays current match and total matches information + in the mode-line in various search mode. + ''; + homepage = https://github.com/syohex/emacs-anzu/; + license = gpl3Plus; + }; + }; + async = melpaBuild rec { pname = "async"; version = "1.2"; From e7061857c11374bd4ecab86f352141ae137f353a Mon Sep 17 00:00:00 2001 From: Jan Malakhovski Date: Tue, 21 Jan 2014 00:04:12 +0000 Subject: [PATCH 06/11] add browse-kill-ring emacs package --- pkgs/top-level/emacs-packages.nix | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/pkgs/top-level/emacs-packages.nix b/pkgs/top-level/emacs-packages.nix index 458978932bf..f33033d12d2 100644 --- a/pkgs/top-level/emacs-packages.nix +++ b/pkgs/top-level/emacs-packages.nix @@ -171,6 +171,22 @@ let self = _self // overrides; meta = { licence = gpl3Plus; }; }; + browse-kill-ring = melpaBuild rec { + pname = "browse-kill-ring"; + version = "20140104"; + src = fetchFromGitHub { + owner = pname; + repo = pname; + rev = "f81ca5f14479fa9e938f89bf8f6baa3c4bdfb755"; + sha256 = "149g4qs5dqy6yzdj5smb39id5f72bz64qfv5bjf3ssvhwl2rfba8"; + }; + meta = { + description = "Interactively insert items from Emacs kill-ring"; + homepage = https://github.com/browse-kill-ring/browse-kill-ring/; + license = gpl2Plus; + }; + }; + change-inner = melpaBuild rec { pname = "change-inner"; version = "20130208"; From 34e69a2572c7a09fb53fb4033cbfe2d7ef47ee66 Mon Sep 17 00:00:00 2001 From: Jan Malakhovski Date: Tue, 21 Jan 2014 00:05:16 +0000 Subject: [PATCH 07/11] add ido-ubiquitous emacs package --- pkgs/top-level/emacs-packages.nix | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/pkgs/top-level/emacs-packages.nix b/pkgs/top-level/emacs-packages.nix index f33033d12d2..2b96e0bb14a 100644 --- a/pkgs/top-level/emacs-packages.nix +++ b/pkgs/top-level/emacs-packages.nix @@ -512,6 +512,22 @@ let self = _self // overrides; meta = { licence = gpl3Plus; }; }; + ido-ubiquitous = melpaBuild rec { + pname = "ido-ubiquitous"; + version = "2.17"; + src = fetchFromGitHub { + owner = "DarwinAwardWinner"; + repo = pname; + rev = "323e4cddc05d5a4546c1b64132b2b1e9f8896452"; + sha256 = "0wdjz3cqzrxhrk68g5gyvc9j2rb6f4yw00xbjgw9ldwlhmkwy5ja"; + }; + meta = { + description = "Does what you expected ido-everywhere to do in Emacs"; + homepage = https://github.com/DarwinAwardWinner/ido-ubiquitous/; + license = gpl3Plus; + }; + }; + idris-mode = melpaBuild rec { pname = "idris-mode"; version = "0.9.15"; From 59ebcccc59eea028494334e9a8c04de62ac80c13 Mon Sep 17 00:00:00 2001 From: Jan Malakhovski Date: Tue, 21 Jan 2014 00:12:55 +0000 Subject: [PATCH 08/11] add nyan-mode emacs package --- .../editors/emacs-modes/nyan-mode/default.nix | 31 +++++++++++++++++++ .../emacs-modes/nyan-mode/directory.patch | 13 ++++++++ pkgs/top-level/emacs-packages.nix | 2 ++ 3 files changed, 46 insertions(+) create mode 100644 pkgs/applications/editors/emacs-modes/nyan-mode/default.nix create mode 100644 pkgs/applications/editors/emacs-modes/nyan-mode/directory.patch diff --git a/pkgs/applications/editors/emacs-modes/nyan-mode/default.nix b/pkgs/applications/editors/emacs-modes/nyan-mode/default.nix new file mode 100644 index 00000000000..ab94dbae950 --- /dev/null +++ b/pkgs/applications/editors/emacs-modes/nyan-mode/default.nix @@ -0,0 +1,31 @@ +{trivialBuild, fetchFromGitHub}: + +trivialBuild rec { + pname = "nyan-mode"; + version = "20150128"; + + src = fetchFromGitHub { + owner = "TeMPOraL"; + repo = pname; + rev = "41faa2c809da7b2cb3e6f8fadefae3f338ced3f2"; + sha256 = "1idaac7sjc8hhbf5zif61ncg1pvg28c0qfihavdx61albww0ll7f"; + }; + + patches = [ ./directory.patch ]; + + preBuild = '' + substituteInPlace nyan-mode.el \ + --replace "@OUT@" "$out/" + ''; + + postInstall = '' + cp -r img $out + cp -r mus $out + ''; + + meta = { + description = "An analog indicator of the position in the buffer"; + homepage = https://github.com/TeMPOraL/nyan-mode/; + license = "GPLv3+"; + }; +} diff --git a/pkgs/applications/editors/emacs-modes/nyan-mode/directory.patch b/pkgs/applications/editors/emacs-modes/nyan-mode/directory.patch new file mode 100644 index 00000000000..b471531ec34 --- /dev/null +++ b/pkgs/applications/editors/emacs-modes/nyan-mode/directory.patch @@ -0,0 +1,13 @@ +diff --git a/nyan-mode.el b/nyan-mode.el +index 939a25a..3d0b983 100644 +--- a/nyan-mode.el ++++ b/nyan-mode.el +@@ -106,7 +106,7 @@ This can be t or nil." + :group 'nyan) + + +-(defconst +nyan-directory+ (file-name-directory (or load-file-name buffer-file-name))) ++(defconst +nyan-directory+ "@OUT@") + + (defconst +nyan-cat-size+ 3) + diff --git a/pkgs/top-level/emacs-packages.nix b/pkgs/top-level/emacs-packages.nix index 2b96e0bb14a..781a6b10bf6 100644 --- a/pkgs/top-level/emacs-packages.nix +++ b/pkgs/top-level/emacs-packages.nix @@ -593,6 +593,8 @@ let self = _self // overrides; meta = { licence = gpl3Plus; }; }; + nyan-mode = callPackage ../applications/editors/emacs-modes/nyan-mode {}; + org-plus-contrib = melpaBuild rec { pname = "org-plus-contrib"; version = "20141020"; From 8dd923a2e4f5911b8cc60bd8ce7b60a67e44c037 Mon Sep 17 00:00:00 2001 From: Jan Malakhovski Date: Tue, 21 Jan 2014 00:11:57 +0000 Subject: [PATCH 09/11] add smex emacs package --- pkgs/top-level/emacs-packages.nix | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/pkgs/top-level/emacs-packages.nix b/pkgs/top-level/emacs-packages.nix index 781a6b10bf6..8dac3fa52df 100644 --- a/pkgs/top-level/emacs-packages.nix +++ b/pkgs/top-level/emacs-packages.nix @@ -710,6 +710,22 @@ let self = _self // overrides; meta = { licence = gpl3Plus; }; }; + smex = melpaBuild rec { + pname = "smex"; + version = "20141210"; + src = fetchFromGitHub { + owner = "nonsequitur"; + repo = pname; + rev = "aff8d4485139ac28f1c7e62912c0d0d480995831"; + sha256 = "0017f1ji7rxad2n49dhn5g0pmw6lmw80cqk6dynszizj46xpbqfp"; + }; + meta = { + description = "M-x enhancement for Emacs build on top of Ido"; + homepage = https://github.com/nonsequitur/smex/; + license = emacs.meta.license; # should be "same as Emacs" + }; + }; + structured-haskell-mode = melpaBuild rec { pname = "shm"; version = external.structured-haskell-mode.version; From 380389bc0bc04afcba3ef17bb4ffde147a845ddb Mon Sep 17 00:00:00 2001 From: Jan Malakhovski Date: Fri, 9 Jan 2015 23:02:02 +0000 Subject: [PATCH 10/11] update and convert {apel, flim, semi, wanderlust} to emacs packages --- .../editors/emacs-modes/apel/default.nix | 25 ------ .../editors/emacs-modes/flim/default.nix | 30 -------- .../editors/emacs-modes/semi/default.nix | 33 -------- .../emacs-modes/wanderlust/default.nix | 31 -------- pkgs/top-level/all-packages.nix | 8 -- pkgs/top-level/emacs-packages.nix | 76 +++++++++++++++++++ 6 files changed, 76 insertions(+), 127 deletions(-) delete mode 100644 pkgs/applications/editors/emacs-modes/apel/default.nix delete mode 100644 pkgs/applications/editors/emacs-modes/flim/default.nix delete mode 100644 pkgs/applications/editors/emacs-modes/semi/default.nix delete mode 100644 pkgs/applications/editors/emacs-modes/wanderlust/default.nix diff --git a/pkgs/applications/editors/emacs-modes/apel/default.nix b/pkgs/applications/editors/emacs-modes/apel/default.nix deleted file mode 100644 index 7036dc3bcc5..00000000000 --- a/pkgs/applications/editors/emacs-modes/apel/default.nix +++ /dev/null @@ -1,25 +0,0 @@ -{stdenv, fetchgit, emacs}: - -stdenv.mkDerivation rec { - name = "apel-git"; - - src = fetchgit { - url = "http://github.com/wanderlust/apel"; - rev = "beca6c4fc58fdc0f8923b320265ec5a304850f50"; - }; - - buildInputs = [emacs]; - - preConfigure = '' - cat << EOF > APEL-CFG - (setq APEL_DIR "$out/share/emacs/site-lisp/apel") - (setq EMU_DIR "$out/share/emacs/site-lisp/emu") - EOF - ''; - - meta = { - description = "APEL"; - homepage = http://nya.org/; - license = "GPL"; - }; -} diff --git a/pkgs/applications/editors/emacs-modes/flim/default.nix b/pkgs/applications/editors/emacs-modes/flim/default.nix deleted file mode 100644 index 1da221a4b1b..00000000000 --- a/pkgs/applications/editors/emacs-modes/flim/default.nix +++ /dev/null @@ -1,30 +0,0 @@ -{stdenv, fetchgit, emacs, apel}: - -stdenv.mkDerivation rec { - name = "flim-git"; - - src = fetchgit { - url = "http://github.com/wanderlust/flim"; - rev = "d435c3626d2e07cc62f084930b6d5eca66f6768c"; - }; - - buildInputs = [emacs apel]; - - preConfigure = '' - cat << EOF > FLIM-CFG - (add-to-list 'load-path "${apel}/share/emacs/site-lisp/apel") - (add-to-list 'load-path "${apel}/share/emacs/site-lisp/emu") - (require 'install) - (setq PREFIX "$out/share") - (setq LISPDIR "$out/share/emacs/site-lisp") - (setq FLIM_DIR "$out/share/emacs/site-lisp/flim") - EOF - cat FLIM-CFG - ''; - - meta = { - description = "FLIM"; - homepage = http://nya.org/; - license = "GPL"; - }; -} diff --git a/pkgs/applications/editors/emacs-modes/semi/default.nix b/pkgs/applications/editors/emacs-modes/semi/default.nix deleted file mode 100644 index 43e184608d9..00000000000 --- a/pkgs/applications/editors/emacs-modes/semi/default.nix +++ /dev/null @@ -1,33 +0,0 @@ -{stdenv, fetchgit, emacs, apel, flim}: - -stdenv.mkDerivation rec { - name = "semi-git"; - - src = fetchgit { - url = "http://github.com/wanderlust/semi"; - rev = "e81b1ec56a5d2c8ae352df1cd6a7eaa2532097f0"; - }; - - buildInputs = [emacs apel flim]; - - preConfigure = '' - cat << EOF > SEMI-CFG - (add-to-list 'load-path "${apel}/share/emacs/site-lisp/apel") - (add-to-list 'load-path "${apel}/share/emacs/site-lisp/emu") - (add-to-list 'load-path "${flim}/share/emacs/site-lisp/flim") - (require 'install) - (setq PREFIX "$out") - (setq METHOD_DIR "$out/share/semi") - (setq LISPDIR "$out/share/emacs/site-lisp") - (setq SEMI_KERNEL_DIR "$out/share/emacs/site-lisp/semi") - (setq SETUP_FILE_DIR "$out/share/emacs/site-lisp/semi") - EOF - cat SEMI-CFG - ''; - - meta = { - description = "SEMI"; - homepage = http://nya.org/; - license = "GPL"; - }; -} diff --git a/pkgs/applications/editors/emacs-modes/wanderlust/default.nix b/pkgs/applications/editors/emacs-modes/wanderlust/default.nix deleted file mode 100644 index 0ee49bef161..00000000000 --- a/pkgs/applications/editors/emacs-modes/wanderlust/default.nix +++ /dev/null @@ -1,31 +0,0 @@ -{stdenv, fetchgit, emacs, apel, flim, semi}: - -stdenv.mkDerivation rec { - name = "wanderlust-git"; - - src = fetchgit { - url = "http://github.com/wanderlust/wanderlust"; - rev = "5e1ccbda73e29657fc05dc05aa9717eff02fdf71"; - }; - - buildInputs = [emacs apel flim semi]; - - preConfigure = '' - cat << EOF > WL-CFG - (add-to-list 'load-path "${apel}/share/emacs/site-lisp/apel") - (add-to-list 'load-path "${apel}/share/emacs/site-lisp/emu") - (add-to-list 'load-path "${flim}/share/emacs/site-lisp/flim") - (add-to-list 'load-path "${semi}/share/emacs/site-lisp/semi") - (require 'install) - (setq LISPDIR "$out/share/emacs/site-lisp") - (setq PIXMAPDIR (concat "$out/share/emacs/" emacs-version "/etc/wl/icons")) - EOF - cat WL-CFG - ''; - - meta = { - description = "wanderlust"; - homepage = http://nya.org/; - license = "GPL"; - }; -} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index deb0d0483c4..c0acbf53e8e 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -10014,8 +10014,6 @@ let autoComplete = callPackage ../applications/editors/emacs-modes/auto-complete { }; - apel = callPackage ../applications/editors/emacs-modes/apel { }; - bbdb = callPackage ../applications/editors/emacs-modes/bbdb { }; bbdb3 = callPackage ../applications/editors/emacs-modes/bbdb/3.nix {}; @@ -10054,8 +10052,6 @@ let ess = callPackage ../applications/editors/emacs-modes/ess { }; - flim = callPackage ../applications/editors/emacs-modes/flim { }; - flycheck = callPackage ../applications/editors/emacs-modes/flycheck { }; flymakeCursor = callPackage ../applications/editors/emacs-modes/flymake-cursor { }; @@ -10147,8 +10143,6 @@ let sbtMode = callPackage ../applications/editors/emacs-modes/sbt-mode { }; - semi = callPackage ../applications/editors/emacs-modes/semi { }; - scalaMode1 = callPackage ../applications/editors/emacs-modes/scala-mode/v1.nix { }; scalaMode2 = callPackage ../applications/editors/emacs-modes/scala-mode/v2.nix { }; @@ -10163,8 +10157,6 @@ let tuaregMode = callPackage ../applications/editors/emacs-modes/tuareg { }; - wanderlust = callPackage ../applications/editors/emacs-modes/wanderlust { }; - writeGood = callPackage ../applications/editors/emacs-modes/writegood { }; xmlRpc = callPackage ../applications/editors/emacs-modes/xml-rpc { }; diff --git a/pkgs/top-level/emacs-packages.nix b/pkgs/top-level/emacs-packages.nix index 8dac3fa52df..86ae2157864 100644 --- a/pkgs/top-level/emacs-packages.nix +++ b/pkgs/top-level/emacs-packages.nix @@ -114,6 +114,29 @@ let self = _self // overrides; }; }; + apel = melpaBuild rec { + pname = "apel"; + version = "10.8"; + src = fetchFromGitHub { + owner = "wanderlust"; + repo = pname; + rev = "8402e59eadb580f59969114557b331b4d9364f95"; + sha256 = "0sdxnf4b8rqs1cbjxh23wvxmj7ll3zddv8yfdgif6zmgyy8xhc9m"; + }; + files = [ + "alist.el" "apel-ver.el" "broken.el" "calist.el" + "emu.el" "filename.el" "install.el" "inv-23.el" "invisible.el" + "mcharset.el" "mcs-20.el" "mcs-e20.el" "mule-caesar.el" + "path-util.el" "pccl-20.el" "pccl.el" "pces-20.el" "pces-e20.el" + "pces.el" "pcustom.el" "poe.el" "poem-e20.el" "poem-e20_3.el" + "poem.el" "product.el" "pym.el" "richtext.el" "static.el" + ]; + meta = { + description = "A Portable Emacs Library"; + license = gpl3Plus; # probably + }; + }; + async = melpaBuild rec { pname = "async"; version = "1.2"; @@ -324,6 +347,22 @@ let self = _self // overrides; meta = { licence = gpl3Plus; }; }; + flim = melpaBuild rec { + pname = "flim"; + version = "1.14.9"; # 20141216 + src = fetchFromGitHub { + owner = "wanderlust"; + repo = pname; + rev = "488a4d70fb4ae57bdd30dc75c2d75579894e28a2"; + sha256 = "178fhpbyffksr4v3m8jmx4rx2vqyz23qhbyvic5afabxi6lahjfs"; + }; + packageRequires = [ apel ]; + meta = { + description = "Email message encoding library for Emacs"; + license = gpl3Plus; # probably + }; + }; + flycheck-pos-tip = melpaBuild rec { pname = "flycheck-pos-tip"; version = "20140813"; @@ -671,6 +710,22 @@ let self = _self // overrides; meta = { licence = gpl3Plus; }; }; + semi = melpaBuild rec { + pname = "semi"; + version = "1.14.7"; # 20150203 + src = fetchFromGitHub { + owner = "wanderlust"; + repo = pname; + rev = "9976269556c5bcc021e4edf1b0e1accd39929528"; + sha256 = "1g1xg57pz4msd3f998af5gq28qhmvi410faygzspra6y6ygaka68"; + }; + packageRequires = [ apel flim ]; + meta = { + description = "MIME library for Emacs"; + license = gpl3Plus; # probably + }; + }; + shorten = melpaBuild rec { pname = "shorten"; version = "1.5"; @@ -804,6 +859,27 @@ let self = _self // overrides; meta = { licence = gpl3Plus; }; }; + wanderlust = melpaBuild rec { + pname = "wanderlust"; + version = "2.15.9"; # 20150301 + src = fetchFromGitHub { + owner = pname; + repo = pname; + rev = "13fb4f6519490d4ac7138f3bcf76707654348071"; + sha256 = "1l48xfcwkm205prspa1rns6lqfizik5gpdwmlfgyb5mabm9x53zn"; + }; + packageRequires = [ apel flim semi ]; + fileSpecs = [ + "doc/wl.texi" "doc/wl-ja.texi" + "elmo/*.el" "wl/*.el" + "etc/icons" + ]; + meta = { + description = "E-Mail client for Emacs"; + license = gpl3Plus; # probably + }; + }; + weechat = melpaBuild rec { pname = "weechat.el"; version = "20141016"; From 6e59fa4941f9067bdaaf7aa63658aefb56b7f575 Mon Sep 17 00:00:00 2001 From: Jan Malakhovski Date: Tue, 3 Mar 2015 03:09:36 +0000 Subject: [PATCH 11/11] add meta descriptions to a bunch of emacs packages --- pkgs/top-level/emacs-packages.nix | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/pkgs/top-level/emacs-packages.nix b/pkgs/top-level/emacs-packages.nix index 86ae2157864..680ec72ed5c 100644 --- a/pkgs/top-level/emacs-packages.nix +++ b/pkgs/top-level/emacs-packages.nix @@ -54,7 +54,10 @@ let self = _self // overrides; rev = "8351e2df4fbbeb2a4003f2fb39f46d33803f3dac"; sha256 = "17axrgd99glnl6ma4ls3k01ysdqmiqr581wnrbsn3s4gp53mm2x6"; }; - meta = { licence = gpl3Plus; }; + meta = { + description = "Advanced cursor movements mode for Emacs"; + licence = gpl3Plus; + }; }; ag = melpaBuild rec { @@ -172,7 +175,6 @@ let self = _self // overrides; sha256 = "050lb8qjq7ra35mqp6j6qkwbvq5zj3yhz73aym5kf1vjd42rmjcw"; }; packageRequires = [ popup ]; - meta = { description = "Auto-complete extension for Emacs"; homepage = http://cx4a.org/software/auto-complete/; @@ -308,7 +310,10 @@ let self = _self // overrides; sha256 = "0wrmlmgr4mwxlmmh8blplddri2lpk4g8k3l1vpb5c6a975420qvn"; }; packageRequires = [ evil ]; - meta = { licence = gpl3Plus; }; + meta = { + description = "surround.vim emulation for Emacs evil mode"; + licence = gpl3Plus; + }; }; evil = melpaBuild { @@ -320,7 +325,10 @@ let self = _self // overrides; sha256 = "0yiqpzsm5sr7xdkixdvfg312dk9vsdcmj69gizk744d334yn8rsz"; }; packageRequires = [ goto-chg undo-tree ]; - meta = { licence = gpl3Plus; }; + meta = { + description = "Extensible vi layer for Emacs"; + licence = gpl3Plus; + }; }; exec-path-from-shell = melpaBuild rec { @@ -344,7 +352,10 @@ let self = _self // overrides; rev = "fa413e07c97997d950c92d6012f5442b5c3cee78"; sha256 = "04k0518wfy72wpzsswmncnhd372fxa0r8nbfhmbyfmns8n7sr045"; }; - meta = { licence = gpl3Plus; }; + meta = { + description = "Increases the selected region by semantic units in Emacs"; + licence = gpl3Plus; + }; }; flim = melpaBuild rec {