[求助] nixos上如何将auctex安装为git submodule?

最近我从arch迁移到了nixos上并且部署了我之前的emacs配置文件。我并没有使用nix的方式配置emacs,因为我需要经常修改配置文件。

我使用borg管理emacs插件,borg会将插件安装为git submodule并build。迁移配置后,大部分插件都能正常运行,但少数插件不能,比如auctex,无法加载。 稍微研究了一下其启动失败的原因,原来它在build过程中出现了问题。用到的一些命令直接写死了路径,比如它的一个makefile里直接将LATEX定义为/usr/bin/latex,这在nixos下显然是行不通的。

现在要想使得auctex成功运行,我或许有以下方案

  1. 修改auctex中各种写死的路径,重新build,但侵入性较大
  2. 放弃将auctex作为git submodule,转而采用nix的方法(比如使用nixpkg中的auctex)
  3. 来emacs china咨询各位dl

我选2,我现在对于 lsp-bridge 用的也是2

或者用1,不用修改,写个脚本 patch 一下 makefile 把里面的路径改掉再 build 然后每次拉下来 submodule 后自动 patch 一下

你可以用 nix 安装 emacs 和用到的 package 然后用自己的配置,不用再 nix 中配置 emacs

1 个赞

auctex的makefile应该是autogen.sh生成的(prefix什么的并不是固定的来着

1 个赞

参考一下 nixpkgs: auctex 是怎么构建的?看起来没有写死的东西啊。也没有 patch 什么的。

另外常改配置文件和使用 nix 来管理 emacs 依赖包并不冲突啊。你别用 nix 来管理 emacs 配置就行了,把依赖拿 emacs.withPackages 打上就行了(原理就是打个 wrap 设置了一下 site-lisp 的目录,然后这个里面默认的加载 elisp 文件配置了各种包的路径)

1 个赞

既然你用 Borg 的话,有一个最原始但一定有效的方案是直接在 .gitsubmodule 里对应 drone 的 build-step 属性里加几句 sed/awk,把那些 prefix 替换掉就好了

推荐这个

elpa的镜像