NixOS之外的Nix配置

时间:2019-07-12 13:28:52

标签: zsh oh-my-zsh nix nixos

因此,我正在尝试创建一个易于复制的开发环境(目前远离home-manager以便更好地了解Nix)。经过足够的搜索之后,我弄清楚了如何进行一些自定义派生,将buildEnv用于程序包集,并使用~/.config/nixpkgs/config.nix进行替代。我现在正在设置具有大量配置选项的zshoh-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
        ...
      ];
    };
  };
}

到目前为止,我的理解是,在~/.config/nixpkgs/config.nix中,应该有一个配置集,其中包含诸如overrides函数之类的内容,并且对应于config.programs.zsh.enable的文档示例,等等。但是,我没有写任何东西该程序部分会影响或导致我的任何程序的输出结果不同。

我想念什么?我如何影响此处列出的配置选项(https://github.com/NixOS/nixpkgs/blob/master/nixos/modules/programs/zsh/zsh.nix)?

1 个答案:

答案 0 :(得分:0)

您似乎正在尝试使用home-manager的配置,而不使用home-manager本身。如您所链接的NixOS模块中所见,它实际上设置了/etc/zshrc等,因此它不打算在用户本地配置中使用,并且在此不做任何事情。如果您查看corresponding home-manager module,您会发现它基本上是重新实现了整个模块的本地用户目的。因此,如果不依靠家庭管理员,您将无法采用这种方法。