4

我正在尝试在我的 Nixos 系统上设置 Spacemacs。nixos.emacs我使用该软件包安装了 Emacs 。我尝试安装的 spacemacs 层之一需要命令行程序aclocal,但在我的系统上找不到它。

我相信一种解决方案是将包含aclocal(我相信它autoconf)的 Nix 包添加到我的environment.systemPackages. 但是,我不喜欢这个解决方案,因为它会将autoconf包添加到我的全局范围内。我宁愿只有Emacs 可以访问autoconf,以便 (1) 它保持我的全局包列表干净,以及 (2) 如果我忘记了为什么安装它,我以后不会不小心删除它。

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

编辑:需要明确的是,我不需要将autoconf包作为构建 Emacs 的输入——我希望 Emacs 完全按照当前的方式构建——但我希望autoconf任何二进制文件都可以访问该库, 和子进程, of emacs,emacsclient等当我运行它们时。

4

1 回答 1

2

您可以使用所需的包列表包装emacs二进制文件wrapProgram并为其添加前缀$PATH(您需要添加makeWrapperbuildInputs)。例如。

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

这里nixpkgs有一个示例,但还有更多示例 ( )。grep wrapProgram pkgs -R | grep '\-\-prefix PATH'

于 2016-10-29T17:43:53.657 回答