如何在 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
库可供 emacs
、emacsclient
等的任何二进制文件和子进程访问,当我 运行他们。
你可以用 wrapProgram
包装 emacs
二进制文件,并在 $PATH
前面加上你想要的包列表(你需要将 makeWrapper
添加到 buildInputs
).例如
postInstall = ''
wrapProgram "$out/bin/emacs" --prefix PATH : "${autoconf}/bin"
'';
来自 nixpkgs
的示例是 here,但还有更多示例 (grep wrapProgram pkgs -R | grep '\-\-prefix PATH'
)。
我正在尝试在我的 Nixos 系统上设置 Spacemacs。我使用 nixos.emacs
包安装了 Emacs。我尝试安装的 spacemacs 层之一需要命令行程序 aclocal
,但在我的系统上找不到它。
我相信一种解决方案是将包含 aclocal
(我相信它是 autoconf
)的 Nix 包添加到我的 environment.systemPackages
。但是,我不喜欢这个解决方案,因为它将 autoconf
包添加到我的全局范围。我宁愿 只有 Emacs 可以访问 autoconf
,这样 (1) 它可以保持我的全局包列表干净,并且 (2) 我不会不小心删除它以后要是忘了为什么安装了
有没有办法在 Nixos 中做到这一点?我认为这可能涉及覆盖 emacs
派生的某些属性。
编辑: 明确地说,我不需要 autoconf
包作为构建 Emacs 的输入——我希望 Emacs 被准确地构建因为它目前是 --- 但我希望 autoconf
库可供 emacs
、emacsclient
等的任何二进制文件和子进程访问,当我 运行他们。
你可以用 wrapProgram
包装 emacs
二进制文件,并在 $PATH
前面加上你想要的包列表(你需要将 makeWrapper
添加到 buildInputs
).例如
postInstall = ''
wrapProgram "$out/bin/emacs" --prefix PATH : "${autoconf}/bin"
'';
来自 nixpkgs
的示例是 here,但还有更多示例 (grep wrapProgram pkgs -R | grep '\-\-prefix PATH'
)。