Zsh NixOS外部的Nix配置

Zsh NixOS外部的Nix配置,zsh,oh-my-zsh,nix,nixos,Zsh,Oh My Zsh,Nix,Nixos,因此,我正在尝试创建一个易于复制的开发环境(目前远离家庭管理者,以便更好地理解Nix)。在进行了充分的搜索之后,我找到了如何进行一些自定义派生,对包集使用buildEnv,并使用~/.config/nixpkgs/config.nix进行覆盖。我现在正在设置zsh和oh my zsh,它们有很多配置选项,但我能找到的唯一文档似乎建议将它们添加到configuration.nix,这是一个我不能使用的NixOS选项 当前我的config.nix代码如下所示: let pkgs = impor

因此,我正在尝试创建一个易于复制的开发环境(目前远离
家庭管理者
,以便更好地理解Nix)。在进行了充分的搜索之后,我找到了如何进行一些自定义派生,对包集使用
buildEnv
,并使用
~/.config/nixpkgs/config.nix
进行覆盖。我现在正在设置
zsh
oh my zsh
,它们有很多配置选项,但我能找到的唯一文档似乎建议将它们添加到
configuration.nix
,这是一个我不能使用的NixOS选项

当前我的
config.nix
代码如下所示:

let 
  pkgs = import <nixpkgs> {};
in {
  allowUnfree = true;

  programs = {
      zsh = {
        enable = true;
        promptInit = "source ${pkgs.zsh-powerlevel9k}/share/zsh-powerlevel9k/powerlevel9k.zsh-theme";
        ohMyZsh = {
            enable = true;
            plugins = ["autojump"];
            theme = "powerlevel9k/powerlevel9k";
        };
      };
  };

  packageOverrides = pkgs: with pkgs; rec {
    all = buildEnv {
      name = "all";
      paths = with pkgs; [
        tmuxinator
        zsh
        oh-my-zsh
        autojump
        ...
      ];
    };
  };
}
let
pkgs=import{};
在{
allowUnfree=true;
程序={
zsh={
启用=真;
promptInit=“source${pkgs.zsh-powerlevel9k}/share/zsh-powerlevel9k/powerlevel9k.zsh主题”;
ohMyZsh={
启用=真;
插件=[“自动跳转”];
theme=“powerlevel9k/powerlevel9k”;
};
};
};
packageOverrides=pkgs:带pkgs;rec{
all=buildEnv{
name=“全部”;
路径=带有pkg[
牵引器
zsh
我的天啊
自动跳转
...
];
};
};
}
到目前为止,我的理解是,在
~/.config/nixpkgs/config.nix
中,应该有一个单独的配置集,其中包含覆盖函数之类的内容,并对应于
config.programs.zsh.enable
等文档示例,我在“程序”部分中编写的任何内容都不会影响或导致任何程序的不同输出


我错过了什么?如何影响此处列出的配置选项()?

您似乎试图在不使用home manager本身的情况下使用home manager的配置。正如您在链接的NixOS模块中所看到的,这实际上设置了
/etc/zshrc
etc,因此它不打算在用户本地配置中使用,也不会在那里执行任何操作。如果您查看,您将看到它基本上是为了用户本地目的重新实现整个模块。因此,如果不依赖家庭经理,您将无法使用这种方法