From b1d45f5b7623f6c67bcb056063e7272c7a58ccaf Mon Sep 17 00:00:00 2001 From: Vincent Ambo Date: Fri, 15 Jun 2018 13:56:47 +0200 Subject: refactor(emacs): Use unstable channel directly in emacs module Stores the unstable channel in the global package set to make it available in the emacs module. All emacs-related packages are now taken from the unstable channel. Related changes: * prescient is now built directly from git * sly has been (temporarily) removed because the MELPA recipe is failing Unfortunately the version bumps to prescient and ivy (& its related packages) don't seem to help with raxod502/prescient.el#10 --- emacs.nix | 99 ++++++++++++++++++++++++++------------------------------------- 1 file changed, 41 insertions(+), 58 deletions(-) (limited to 'emacs.nix') diff --git a/emacs.nix b/emacs.nix index bcf6d6318ef0..3f391fc1d709 100644 --- a/emacs.nix +++ b/emacs.nix @@ -1,46 +1,14 @@ -# Derivation for Emacs configured with the packages that I need: +# Derivation for Emacs pre-configured with packages that I need. +# +# * TODO 2018-06-15: sly removed due to build error in unstable { pkgs }: -let emacsWithPackages = with pkgs; (emacsPackagesNgGen emacs).emacsWithPackages; -sly = with pkgs; emacsPackagesNg.melpaBuild { - pname = "sly"; - version = "20180221.1414"; - - src = fetchFromGitHub { - owner = "joaotavora"; - repo = "sly"; - rev = "486bfbe95612bcdc0960c490207970a188e0fbb9"; - sha256 = "0ib4q4k3h3qn88pymyjjmlmnpizdn1mfg5gpk5a715nqsgxlg09l"; - }; - - recipeFile = fetchurl { - url = "https://raw.githubusercontent.com/melpa/melpa/23b9e64887a290fca7c7ab2718f627f8d728575f/recipes/sly"; - sha256 = "1pmyqjk8fdlzwvrlx8h6fq0savksfny78fhmr8r7b07pi20y6n9l"; - name = "sly"; - }; -}; - -# Building sly-company requires quite some dancing because -# company-mode is required at build time. -trivialBuildWithCompany = with pkgs; callPackage { - emacs = with pkgs; emacsWithPackages(epkgs: [ epkgs.elpaPackages.company ]); -}; - -sly-company = with pkgs; trivialBuildWithCompany { - pname = "sly-company"; - version = "master"; - - src = fetchFromGitHub { - owner = "joaotavora"; - repo = "sly-company"; - rev = "dfe18218e4b2ee9874394b50f82f5172f41c462c"; - sha256 = "1bj8w2wfq944cnhsk5xx41mfrjv89scrg4w98kqgda5drkpdf8a7"; - }; -}; +with pkgs.unstable; with emacsPackagesNg; +let emacsWithPackages = (emacsPackagesNgGen emacs).emacsWithPackages; # The nix-mode in the official repositories is old and annoying to # work with, pin it to something newer instead: -nix-mode = with pkgs; emacsPackagesNg.melpaBuild { +nix-mode = emacsPackagesNg.melpaBuild { pname = "nix-mode"; version = "20180306"; @@ -59,7 +27,7 @@ nix-mode = with pkgs; emacsPackagesNg.melpaBuild { # The default Rust language server mode is not really usable, install # `eglot` instead and hope for the best. -eglot = with pkgs; emacsPackagesNg.melpaBuild rec { +eglot = emacsPackagesNg.melpaBuild rec { pname = "eglot"; version = "0.8"; @@ -71,27 +39,37 @@ eglot = with pkgs; emacsPackagesNg.melpaBuild rec { }; }; -# prescient & prescient-ivy provide better filtering in ivy/counsel -prescient = with pkgs; emacsPackagesNg.melpaBuild { - pname = "prescient"; - version = "20180611"; +# prescient & ivy-prescient provide better filtering in ivy/counsel, +# but they are not in nixpkgs yet: +prescientSource = fetchFromGitHub { + owner = "raxod502"; + repo = "prescient.el"; + rev = "27c94636489d5b062970a0f7e9041ca186b6b659"; + sha256 = "05jk8cms48dhpbaimmx3akmnq32fgbc0q4dja7lvpvssmq398cn7"; +}; - src = fetchFromGitHub { - owner = "raxod502"; - repo = "prescient.el"; - rev = "19a2c6b392ca6130dbbcf70cba57ee34d64fe50c"; - sha256 = "136q785lyhpgyaiysyq4pw11l83sa9h3q57v6papx813gf7rb7v7"; - }; +prescient = emacsPackagesNg.melpaBuild { + pname = "prescient"; + version = "1.0"; + src = prescientSource; recipeFile = writeText "prescient-recipe" '' - (prescient :files ("prescient.el" "ivy-prescient.el")) + (prescient :files ("prescient.el")) ''; }; -in emacsWithPackages(epkgs: - # Pinned packages (from unstable): - (with pkgs; with lib; attrValues pinnedEmacs) ++ +ivy-prescient = emacsPackagesNg.melpaBuild { + pname = "ivy-prescient"; + version = "1.0"; + src = prescientSource; + packageRequires = [ prescient ivy ]; + recipeFile = writeText "ivy-prescient-recipe" '' + (ivy-prescient :files ("ivy-prescient.el")) + ''; +}; + +in emacsWithPackages(epkgs: # Actual ELPA packages (the enlightened!) (with epkgs.elpaPackages; [ ace-window @@ -108,36 +86,41 @@ in emacsWithPackages(epkgs: (with epkgs.melpaPackages; [ browse-kill-ring cargo + counsel + counsel-tramp dash dash-functional dockerfile-mode edit-server - elm-mode erlang - flx + exwm go-mode gruber-darker-theme haskell-mode ht idle-highlight-mode + ivy + ivy-pass jq-mode kotlin-mode magit + markdown-mode + markdown-toc multi-term multiple-cursors nginx-mode paredit password-store pg - racket-mode rainbow-delimiters restclient rust-mode s smartparens string-edit - terraform-mode + swiper telephone-line + terraform-mode toml-mode uuidgen web-mode @@ -146,5 +129,5 @@ in emacsWithPackages(epkgs: ]) ++ # Custom packaged Emacs packages: - [ sly sly-company nix-mode eglot prescient pkgs.notmuch ] + [ nix-mode eglot prescient ivy-prescient pkgs.notmuch ] ) -- cgit 1.4.1