From 76a501acdb6b38689aa24e0c331d83149499aabc Mon Sep 17 00:00:00 2001 From: Eric Seidel Date: Tue, 17 Feb 2015 15:06:27 -0800 Subject: reorganize emacs packages and add some meta info --- pkgs/build-support/melpa/default.nix | 104 +++++++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 pkgs/build-support/melpa/default.nix (limited to 'pkgs/build-support/melpa/default.nix') diff --git a/pkgs/build-support/melpa/default.nix b/pkgs/build-support/melpa/default.nix new file mode 100644 index 00000000000..11cb14f93db --- /dev/null +++ b/pkgs/build-support/melpa/default.nix @@ -0,0 +1,104 @@ +# generic builder for Emacs packages + +{ stdenv, fetchurl, emacs, texinfo +, extension ? (self : super : {}) +}: + +{ pname +, version +, src +, packageRequires ? [] +, extraBuildInputs ? [] + +, files ? null +, fileSpecs ? [ "*.el" "*.el.in" "dir" + "*.info" "*.texi" "*.texinfo" + "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo" + ] + +, meta ? {} + +, preUnpack ? "", postUnpack ? "" +, patches ? [], patchPhase ? "", prePatch ? "", postPatch ? "" +, configureFlags ? [], preConfigure ? "", postConfigure ? "" +, buildPhase ? "", preBuild ? "", postBuild ? "" +, preInstall ? "", postInstall ? "" +, doCheck ? false, checkPhase ? "", preCheck ? "", postCheck ? "" +, preFixup ? "", postFixup ? "" +}: + +let + inherit (stdenv.lib) concatStringsSep optionalAttrs; + + packageBuild = fetchurl { + url = https://raw.githubusercontent.com/milkypostman/melpa/12a862e5c5c62ce627dab83d7cf2cca6e8b56c47/package-build.el; + sha256 = "1nviyyprypz7nmam9rwli4yv3kxh170glfbznryrp4czxkrjjdhk"; + }; + + fname = "${pname}-${version}"; + + 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; + + buildPhase = '' + runHook preBuild + + emacs --batch -Q -l $packageBuild -l ${./melpa2nix.el} \ + -f melpa2nix-build-package \ + ${pname} ${version} ${targets} + + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + + emacs --batch -Q -l $packageBuild -l ${./melpa2nix.el} \ + -f melpa2nix-install-package \ + ${fname}.* $out/share/emacs/site-lisp/elpa + + runHook postInstall + ''; + + 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; } +) -- cgit 1.4.1