我的 nixos 配置如下所示:
{ config, pkgs, ... }: {
programs.zsh = {
enable = true;
ohMyZsh = {
enable = true;
plugins = [ "git" "zsh-history-substring-search" ];
};
};
users.users.USER.shell = pkgs.zsh;
environment.systemPackages = [
pkgs.oh-my-zsh
pkgs.zsh
pkgs.zsh-completions
pkgs.zsh-powerlevel10k
pkgs.zsh-syntax-highlighting
pkgs.zsh-history-substring-search
];
}
我希望我现有的 .zshrc 能够正常工作,但事实并非如此。例如,当打开新的 shell 时,我收到此错误:
[oh-my-zsh] plugin 'zsh-history-substring-search' not found
但它显然已安装(请参阅systemPackages)。
我的 .zshrc 文件中也有这个:
source /usr/share/zsh-theme-powerlevel10k/powerlevel10k.zsh-theme
这是有道理的,它无法获取(因为它可能安装在其他地方),但我现在的问题是:nixos 中实际安装的东西在哪里?我怎样才能找到这个文件?
配置看起来正确。这里有一些调试想法,
zshrc
应该生成一行 source $ZSH/oh-my-zsh.sh
。运行 cd $ZSH
进入该目录。oh-my-zsh.sh
文件。应该有一个类似于下面的块(我使用家庭管理器,所以你的可能看起来不同)# Add all defined plugins to fpath. This must be done
# before running compinit.
for plugin ($plugins); do
if is_plugin "$ZSH_CUSTOM" "$plugin"; then
fpath=("$ZSH_CUSTOM/plugins/$plugin" $fpath)
elif is_plugin "$ZSH" "$plugin"; then
fpath=("$ZSH/plugins/$plugin" $fpath)
else
echo "[oh-my-zsh] plugin '$plugin' not found"
fi
done
在这里您可以找到插件目录。就我而言,它是同一目录中的
plugins
文件夹。
仅供参考,
programs.zsh.syntaxHighlighting.enable
设置为 true 来启用语法突出显示programs.zsh.ohMyZsh.theme
设置主题,而不是手动获取主题文件。