如何解决直接从nix-shell启动IDE
我对NixOs和nix-shell还是陌生的,并且仍然逐渐了解它的成语。现在,我有一个Java项目,正在通过direnv
使用nix-shell加载构建工具链,包括jdk和bazel。
我希望IDE(以ItelliJ为例)使用相同的工具链。我的幼稚方法是使用如下的nix-shell脚本,它是我项目根目录中的default.nix
,是direnv挑选的脚本。
with import <nixpkgs> {};
stdenv.mkDerivation {
name = "my-project";
buildInputs = with pkgs; [
jdk11
bazel
jetbrains.idea-ultimate
];
shellHook = ''
export JAVA_HOME="${pkgs.jdk11}/lib/openjdk"
ln -s ${pkgs.jdk11}/lib/openjdk ./jdk
'';
}
然后我可以从外壳中使用以下命令启动IntelliJ:
$ idea-ultimate 2>1 > /dev/null &
虽然有效,但我有以下担忧:
我当然可以使用其他Nix工具(例如家庭管理器)安装这些IDE软件包,在正确的配置步骤后,它会在菜单中为我提供应用程序启动器;但是,我喜欢直接从外壳启动IDE,以确保正确的工具链在正确的路径中。
下一步,我的想法是从此default.nix
中删除IDE输入并创建自定义nix文件,其中包括IDE的输入和启动器脚本,以使用nix-shell实际启动IDE。我希望,如果从上面的外壳程序执行,它将继承其输入,并用IDE输入进行扩充,然后启动IDE。
同样,我的目标是使用nix启动我的IDE,并使用项目根目录default.nix
中的软件包和配置来确保一致性。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。