添加至configuration.nix后Emacs Packages未加载问题求助
解决Nix构建Emacs后包未加载的问题
嘿,我之前也碰到过一模一样的情况!你现在的问题核心是构建的定制化Emacs环境和你之前用nix-env装的默认Emacs是完全独立的,再加上可能没在配置里主动启用包,所以才看不到预期效果。给你一步步拆解解决方法:
1. 先启动正确的定制版Emacs实例
你用nix-build emacs.nix完成构建后,当前目录会生成一个叫result的符号链接,这就是你打包好的带插件的Emacs环境。别直接运行原来的emacs命令了,试试启动这个路径下的二进制文件:
./result/bin/emacs
进去后可以用M-x package-list-packages验证,你指定的那些包应该都已经在列表里了。
2. 把定制版Emacs安装到用户环境(省得每次输长路径)
如果不想每次都敲./result/bin/emacs这种长命令,直接把构建好的Emacs安装到你的用户环境里就行:
nix-env -i -f emacs.nix
之后再运行emacs,启动的就是你定制的带包版本了。
3. 别忘了在Emacs配置里启用这些包
就算包已经被添加到Emacs的加载路径里,Emacs也不会自动帮你启用它们。你得在init.el(或者你的配置文件)里加上启用代码,举几个常用的例子:
;; 启用magit(这个肯定是刚需对吧😉) (use-package magit :ensure t) ;; 开启company全局补全 (use-package company :ensure t :config (global-company-mode 1)) ;; 加载labburn主题 (load-theme 'labburn t) ;; flycheck、yasnippet这类工具也需要类似的配置来启用
要是你的配置里缺了这些步骤,就算包装好了也不会有实际效果哦。
(可选)简化你的emacs.nix配置
你的配置功能完全没问题,但可以稍微精简一下,看起来更清爽:
{ pkgs ? import <nixpkgs> {} }: (pkgs.emacsPackagesNgGen pkgs.emacs).emacsWithPackages (epkgs: with epkgs.melpaStablePackages; [ magit labburn-theme cider company flycheck iedit yasnippet nix-mode ] )
只是去掉了多余的中间变量,功能和原来完全一致。
内容的提问来源于stack exchange,提问作者Gleiry Agustin Serrano Wong
相关产品推荐
相关产品推荐

