【问题标题】:Is there a way to see the actual computed / generated "output" system configuration built and activated on NixOS?有没有办法查看在 NixOS 上构建和激活的实际计算/生成的“输出”系统配置?
【发布时间】:2021-06-26 05:54:41
【问题描述】:

所以在 NixOS 上我们可以编辑文件/etc/nixos/configuration.nix 来指定我们的“输入”系统配置。但是,当我们运行nixos-rebuild switch 来构建和激活我们的“输入”配置时,严格来说,激活的实际配置将不完全是我们在“输入”中的配置,而是基于该“输入”的“输出”配置”。

具体来说,某些杂项配置参数可能会导致 NixOS 逻辑为“输入”配置中未严格指定的其他服务插入配置。例如,这里https://github.com/NixOS/nixpkgs/blob/724ed08df02546fea2ab38613d615dd47461528c/nixos/modules/services/web-apps/wordpress.nix#L279 是一些 NixOS 逻辑,它将 MySQL / MariaDB 服务的配置插入到最终的“输出”系统配置中,但不是因为直接在“输入”配置中请求 MySQL 服务,而是因为 WordPress 配置已指定,并自动激活 MySQL 服务以方便 WordPress 实例的运行。

我的问题是,有谁知道看到这个“最终”生成的“输出”配置的命令或过程是什么,这将是nixos-rebuild switch 之后系统构建、激活和运行的实际配置?

这对于故障排除很有用,以便能够评估正在运行的所有内容及其运行的实际配置。

【问题讨论】:

标签: nix nixos


【解决方案1】:

您提到的最后一个配置是模块可以使用的config 变量。 它的值不包含纯粹的数据,所以你不能只是序列化它。一些选项是函数类型的。并非所有这些都与您的配置相关,因为所有模块始终加载到此变量中。即使他们的主要enable 选项仍然具有false 值,它仍然存在。

因此,对于故障排除,您的最佳选择是nix repl

$ nix repl '<nixpkgs/nixos>'

Loading '<nixpkgs/nixos>'...
Added 6 variables.

nix-repl> config.services.mysql.[press TAB key]
config.services.mysql.bind              config.services.mysql.extraOptions      config.services.mysql.port
config.services.mysql.configFile        config.services.mysql.group             config.services.mysql.replication
config.services.mysql.dataDir           config.services.mysql.initialDatabases  config.services.mysql.rootPassword
config.services.mysql.enable            config.services.mysql.initialScript     config.services.mysql.settings
config.services.mysql.ensureDatabases   config.services.mysql.package           config.services.mysql.user
config.services.mysql.ensureUsers       config.services.mysql.pidDir
nix-repl> config.services.mysql.ensureDatabases
[ ]

nix-repl>

所以我的笔记本电脑上没有任何 mysql 数据库。

如果您使用的是 flakes,这些值在 nixosConfigurations.&lt;hostname&gt; 属性中可用。

也可以在 repl 中加载薄片。在撰写本文时,它还不是很理想,但this issue 将描述这样做的最佳方法。

使用Hercules CI Effects,使用模块系统的部署通常提供.prebuilt.config 属性用于相同目的。这是for runNixOS

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-05
    • 2021-03-16
    • 1970-01-01
    • 1970-01-01
    • 2021-05-13
    • 1970-01-01
    • 2011-06-02
    相关资源
    最近更新 更多