nix-shell 相当于 `make -C DIR`?

nix-shell 相当于 `make -C DIR`?

nix-shell相当于 的make -C DIR吗?早在我有一个 Nix shell 之前,我经常运行sudo make -C ~/dev/root install来配置我的系统,而使用 Nix shell,我找不到比nix-shell --run 'sudo make -C ~/dev/root install' ~/dev/root/shell.nixor更简单的方法cd ~/dev/root && nix-shell --run 'sudo make install'- 如果我尝试简化nix-shell --run 'sudo make -C ~/dev/root install'它,则使用 shell.nix (或 default.nix)当前目录,并在当前目录中nix-shell --run 'sudo make install' ~/dev/root/shell.nix运行内部命令。sudo make install

答案1

我希望当我将你的问题解释为时我理解正确

如何自动转到Nix shell 中cd的路径?shell.nix

一个 shell hook 应该cd "${toString ./.}"可以做到这一点。这当然是完全不纯洁的。我也不知道shell.nix符号链接时会发生什么。不能退款。

{ pkgs ? import <nixpkgs> {} }:

pkgs.mkShell {
  buildInputs = [ pkgs.hello ];
  shellHook = ''cd "${toString ./.}"'';
}
$ nix-shell ~/Documents/letters/shell.nix --run "pwd"
/home/<user>/Documents/letters

相关内容