diff options
author | Jan Malakhovski <oxij@oxij.org> | 2014-01-20 23:57:04 +0000 |
---|---|---|
committer | Jan Malakhovski <oxij@oxij.org> | 2015-03-03 16:02:15 +0000 |
commit | e4a4e109ba49f3868f63a61e514c4846a1cd0b9a (patch) | |
tree | 66eea07b9a477857ed69dbd44bd153dbd78d1007 /pkgs/top-level | |
parent | a444eff3f29c292ffb62700572cbd4c9cdb3718b (diff) | |
download | nixlib-e4a4e109ba49f3868f63a61e514c4846a1cd0b9a.tar nixlib-e4a4e109ba49f3868f63a61e514c4846a1cd0b9a.tar.gz nixlib-e4a4e109ba49f3868f63a61e514c4846a1cd0b9a.tar.bz2 nixlib-e4a4e109ba49f3868f63a61e514c4846a1cd0b9a.tar.lz nixlib-e4a4e109ba49f3868f63a61e514c4846a1cd0b9a.tar.xz nixlib-e4a4e109ba49f3868f63a61e514c4846a1cd0b9a.tar.zst nixlib-e4a4e109ba49f3868f63a61e514c4846a1cd0b9a.zip |
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.
Diffstat (limited to 'pkgs/top-level')
-rw-r--r-- | pkgs/top-level/all-packages.nix | 20 | ||||
-rw-r--r-- | pkgs/top-level/emacs-packages.nix | 53 |
2 files changed, 48 insertions, 25 deletions
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index b5eed339f465..78c9b3195c66 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 0be7a3adf470..9f7c9675cb0f 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 |