如何从家庭管理器模块中访问 nixos(或 nix-darwin)配置?

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

如何从家庭管理器自动导入的家庭管理器模块中访问 NixOS

config
?当我使用
config
时,它是 home-manager 配置,而不是 NixOS 配置。

我有一个像这样的家庭管理器模块:

{ pkgs, ...}:
 {
  home.packages = [
    pkgs.hello
    pkgs.cowsay
  ];
}

包括两次使用相同的 nixos flake,用于具有不同主机名的 2 台不同机器。两者都使用

networking.hostName = "hostA"
"hostB"
在 nixos 级别模块中设置主机名。

现在我只想包含

cowsay
(如果这是主机 B,而不是主机 A)。怎么办?

当我这样做时:

{ pkgs, config, ...}:
 {
  home.packages = [
    pkgs.hello
  ] ++ pkgs.lib.optionals (config.networking.hostName == "hostB") [
    pkgs.cowsay
  ];
}

我收到错误:

error: attribute 'networking' missing

       at /nix/store/4h4c5s050y7hrdgrzdhhqdjw92ijf5fm-source/home-manager-user.nix:5:28:

            4|     pkgs.hello
            5|   ] ++ pkgs.lib.optionals (config.networking.hostName == "hostB") [
             |                            ^
            6|     pkgs.cowsay
nix nixos nix-darwin home-manager
1个回答
0
投票

使用

osConfig
代替
config
:

{ pkgs, osConfig, ...}:
 {
  home.packages = [
    pkgs.hello
  ] ++ pkgs.lib.optionals (osConfig.networking.hostName == "hostB") [
    pkgs.cowsay
  ];
}

感谢 GitHub 用户 rycee:https://github.com/nix-community/home-manager/issues/393#issuecomment-1259996423

© www.soinside.com 2019 - 2024. All rights reserved.