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
This commit is contained in:
		
							parent
							
								
									24314a61d6
								
							
						
					
					
						commit
						b1d45f5b76
					
				
					 2 changed files with 45 additions and 73 deletions
				
			
		
							
								
								
									
										99
									
								
								emacs.nix
									
										
									
									
									
								
							
							
						
						
									
										99
									
								
								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 <nixos/pkgs/build-support/emacs/trivial.nix> { | ||||
|   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")) | ||||
|   ''; | ||||
| }; | ||||
| 
 | ||||
| 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: | ||||
|   # Pinned packages (from unstable): | ||||
|   (with pkgs; with lib; attrValues pinnedEmacs) ++ | ||||
| 
 | ||||
|   # 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 ] | ||||
| ) | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue