gpt4 book ai didi

NixOS - 带参数的模块导入

转载 作者:行者123 更新时间:2023-12-01 08:49:05 27 4
gpt4 key购买 nike

假设我有我的 NixOS configuration.nix设置如下:

{config, pkgs, ...}:
{
services.openssh.enable = true;
}

我现在想要第二个名为 networking.nix 的文件它根据一个参数设置我的主机名。
{config, pkgs, hostname, ...}:
{
networking.hostName = hostname
}

这可能吗?我怎样才能包含该文件。我已经尝试过使用 imports = [ ./networking.nix { hostname = "helloworld"; } ];但这没有用。

谢谢。

最佳答案

“NixOS 配置文件”只是一个 module那没有定义选项,所以真的没有区别。一个 configuration.nix file 只是一个模块,通常它没有定义任何选项,所以它可以写在 abbreviated form .

定义选项是 NixOS 模块传递信息的正常方式,因此这是最惯用的方式。

但是,如果您真的必须,出于某种非常特殊的原因,因为您在使用 NixOS 做非常不寻常的事情,您可以将任意函数放入 imports。 .但是您不应该这样做,因为它不适用于模块系统的自定义错误消息以及可能依赖于知道模块定义位置的其他方面。如果这样做,请确保它是实际功能。在您的情况下,这意味着修改 networking.nix 的第一行使其成为 curry 函数:

hostname: {config, pkgs, ...}:

在我看来不是很漂亮。尽管它对正在发生的事情非常明确,但它偏离了对 NixOS 模块的预期。

关于NixOS - 带参数的模块导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47650857/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com