如何在nixos中设置zsh/ohmyzsh?

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

我的 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 中实际安装的东西在哪里?我怎样才能找到这个文件?

zsh oh-my-zsh nix
1个回答
0
投票

配置看起来正确。这里有一些调试想法,

  1. 检查 ohmyzsh 的安装位置。您的
    zshrc
    应该生成一行
    source $ZSH/oh-my-zsh.sh
    。运行
    cd $ZSH
    进入该目录。
  2. 检查
    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
文件夹。

  1. 检查该文件夹中是否存在插件

仅供参考,

  • 您还可以通过将
    programs.zsh.syntaxHighlighting.enable
    设置为 true 来启用语法突出显示
  • 您可以使用
    programs.zsh.ohMyZsh.theme
    设置主题,而不是手动获取主题文件。
© www.soinside.com 2019 - 2024. All rights reserved.