如何在Nixos的Spacemacs范围内添加其他包?

时间:2016-10-27 22:40:17

标签: emacs spacemacs nixos

我试图在我的Nixos系统上设置Spacemacs。我使用nixos.emacs包安装了Emacs。我尝试安装的其中一个spacemacs图层需要命令行程序aclocal,但它无法在我的系统上找到它。

我相信一个解决方案就是将包含aclocal的Nix包(我相信它autoconf)添加到我的environment.systemPackages。但是,我不喜欢这个解决方案,因为它将autoconf包添加到我的全局范围。我希望只有 Emacs可以访问autoconf,这样(1)它可以保持我的全局包列表清洁,(2)我不会意外删除它未来,如果我忘了为什么安装它。

在尼克索斯有没有办法做到这一点?我认为它可能涉及覆盖emacs派生的某些属性。

编辑:要明确,我不需要autoconf包作为构建Emacs的输入---我希望Emacs的构建与目前完全相同是---但我想让autoconf库可以访问任何二进制文件,以及子进程,emacsemacsclient等,当我运行它们时。

1 个答案:

答案 0 :(得分:2)

您可以使用emacs打包wrapProgram二进制文件,并在$PATH前加上您想要的包列表(您需要将makeWrapper添加到buildInputs) 。例如

postInstall = ''
  wrapProgram "$out/bin/emacs" --prefix PATH : "${autoconf}/bin"
'';

来自nixpkgs的示例为here,但还有更多示例(grep wrapProgram pkgs -R | grep '\-\-prefix PATH')。