将 nix-shell 配置为使用 Bash 以外的 shell?

问题描述 投票:0回答:5

我使用的是 NixOS 15 和 nix-shell v1.10。我现在使用 Zsh 作为我的主 shell,并且当我在由 Nix 表达式构建的开发环境中工作时,也希望将它与 nix-shell 中的 Oh-My-Zsh 结合使用。

如果有帮助,这里是我为 Rails 项目设置的 Nix 环境之一:

with import <nixpkgs> {}; {
  cannyFreeRadicalEnv = stdenv.mkDerivation rec {
    name = "canny-free-radical-env";
    version = "0.1";
    src = ./.;
    buildInputs = [
        stdenv
        ruby_2_2_2
        bundler_HEAD
        zlib
        postgresql94
        sqlite
    ];
  };
}

** 编辑**

以这种方式运行命令不会在 CLI 提示符中表明我位于 nix-shell 中。有没有一种简单的方法来检测这一点,以便我可以在我的

zshrc
中快速编写脚本?

shell configuration development-environment nixos
5个回答
6
投票

使用以下命令打开 shell:

nix-shell . --command "zsh"

感谢#nixos IRC 频道上的人们给了我快速答复。


5
投票

最近开设了PR #545,它将解决这个问题


0
投票

您可能想尝试这个 Zsh 插件。

https://github.com/chisui/zsh-nix-shell


0
投票

any-nix-shell对我有用。这里还提供了一种更手动的方法https://ianthehenry.com/posts/how-to-learn-nix/nix-zshell/

但请注意,这些解决方案不会转发

alias
和类似
unpackPhase
的阶段。


0
投票

我尝试了一种简单的方法,它似乎有效。

$ alias nix-shell='nix-shell --run zsh'

多次提供

--run
似乎会导致使用最后一个:

$ nix-shell -p cowsay --run 'cowsay a' --run 'cowsay b'
 ___
< b >
 ---
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

所以这个别名只是为

--run
设置默认值。

这会破坏什么吗?我无法想象它会发生,但我知道什么?别名似乎没有导出到子 shell。

© www.soinside.com 2019 - 2024. All rights reserved.