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

How do I add additional packages in scope for Spacemacs in Nixos?

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

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

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

编辑: 明确地说,我不需要 autoconf 包作为构建 Emacs 的输入——我希望 Emacs 被准确地构建因为它目前是 --- 但我希望 autoconf 库可供 emacsemacsclient 等的任何二进制文件和子进程访问,当我 运行他们。

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

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

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