You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NixOS配置zsh/oh-my-zsh遇问题及文件位置查询

解决NixOS下Zsh与Oh My Zsh配置问题

1. 修复「zsh-history-substring-search插件找不到」的错误

你当前在programs.zsh.ohMyZsh.plugins里直接写插件名,但这个插件是通过systemPackages单独安装的,不属于Oh My Zsh自带插件集合,所以Oh My Zsh找不到它。解决方法有两种:

方法一: 改用programs.zsh.plugins配置

把第三方插件从Oh My Zsh的plugins列表移到programs.zsh.plugins,NixOS会自动处理路径配置:

{ config, pkgs, ... }: {
  programs.zsh = {
    enable = true;
    ohMyZsh = {
        enable = true;
        plugins = [ "git" ]; # 仅保留Oh My Zsh自带插件
    };
    # 添加第三方Zsh插件
    plugins = [
      {
        name = "zsh-history-substring-search";
        src = pkgs.zsh-history-substring-search;
      }
      {
        name = "zsh-syntax-highlighting";
        src = pkgs.zsh-syntax-highlighting;
      }
    ];
  };
  users.users.USER.shell = pkgs.zsh;
  environment.systemPackages = [
    pkgs.oh-my-zsh
    pkgs.zsh
    pkgs.zsh-completions
    pkgs.zsh-powerlevel10k
  ];
}

方法二: 在Oh My Zsh插件列表中指定绝对路径

如果坚持用Oh My Zsh的plugins字段,需要手动指定插件的安装路径:

{ config, pkgs, ... }: {
  programs.zsh = {
    enable = true;
    ohMyZsh = {
        enable = true;
        plugins = [
          "git"
          "${pkgs.zsh-history-substring-search}/share/zsh-plugins/zsh-history-substring-search"
        ];
    };    
  };
  # 其余配置保持不变
}

2. 修复Powerlevel10k主题路径无效的问题

NixOS中软件包不会安装到/usr/share这类常规路径,而是统一放在/nix/store的哈希目录下。推荐通过NixOS配置直接启用主题,无需手动写死路径:

推荐配置方式

在programs.zsh.ohMyZsh里指定主题:

programs.zsh = {
  enable = true;
  ohMyZsh = {
    enable = true;
    theme = "powerlevel10k/powerlevel10k";
    # 其余插件配置...
  };
};

这样NixOS会自动处理主题加载,不用手动执行source命令。

手动查找主题文件路径

如果一定要手动定位文件,可以用以下命令:

  • 查看powerlevel10k包的安装根目录:
    nix-store -q --realize $(nix-instantiate -E 'with import <nixpkgs> {}; zsh-powerlevel10k')
    
  • 或者用nix-locate搜索主题文件(需先安装pkgs.nix-index并执行sudo nix-index生成索引):
    nix-locate powerlevel10k.zsh-theme
    
    输出会显示类似/nix/store/xxxxxx-zsh-powerlevel10k-1.19.0/share/zsh-theme-powerlevel10k/powerlevel10k.zsh-theme的完整路径。

通用方法:查找NixOS中软件的安装位置

  • 查看包的绝对路径:终端执行nix-store -q --realize $(nix-instantiate -E 'with import <nixpkgs> {}; <package-name>'),或者对带可执行文件的包用which <binary>
  • 查看包的目录结构:终端执行nix-store -q --tree $(nix-instantiate -E 'with import <nixpkgs> {}; <package-name>')
  • 搜索任意文件:安装pkgs.nix-index并执行sudo nix-index生成数据库后,用nix-locate <filename>搜索文件所属包和路径

内容的提问来源于stack exchange,提问作者Loading

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 12:52:26