如何从家庭管理器自动导入的家庭管理器模块中访问 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
使用
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