我试图在我的Nixos系统上设置Spacemacs。我使用nixos.emacs
包安装了Emacs。我尝试安装的其中一个spacemacs图层需要命令行程序aclocal
,但它无法在我的系统上找到它。
我相信一个解决方案就是将包含aclocal
的Nix包(我相信它autoconf
)添加到我的environment.systemPackages
。但是,我不喜欢这个解决方案,因为它将autoconf
包添加到我的全局范围。我希望只有 Emacs可以访问autoconf
,这样(1)它可以保持我的全局包列表清洁,(2)我不会意外删除它未来,如果我忘了为什么安装它。
在尼克索斯有没有办法做到这一点?我认为它可能涉及覆盖emacs
派生的某些属性。
编辑:要明确,我不需要autoconf
包作为构建Emacs的输入---我希望Emacs的构建与目前完全相同是---但我想让autoconf
库可以访问任何二进制文件,以及子进程,emacs
,emacsclient
等,当我运行它们时。
答案 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'
)。