gpt4 book ai didi

nix - 有没有办法查看在 NixOS 上构建和激活的实际计算/生成的 "output"系统配置?

转载 作者:行者123 更新时间:2023-12-04 07:27:21 26 4
gpt4 key购买 nike

所以在 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 之后构建、激活和运行的实际配置。 ?
这对于故障排除很有用,以便能够评估正在运行的所有内容以及它正在运行的实际配置。

最佳答案

您提到的最终配置是 config模块可以使用的变量。
它的值不包含纯粹的数据,所以你不能只是序列化它。一些选项是函数类型的。并非所有这些都与您的配置相关,因为所有模块始终加载到此变量中。即使他们的主要enable选项仍然有 false值(value),它仍然存在。
因此,对于故障排除,您最好的选择是 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 数据库。
如果您使用薄片,这些值可在 nixosConfigurations.<hostname> 中找到。属性。
也可以在 repl 中加载薄片。在撰写本文时,它还不是很理想,但是 this issue将描述这样做的最佳方法。
Hercules CI Effects , 使用模块系统的部署通常提供 .prebuilt.config出于相同目的的属性。这是一个 for runNixOS .

关于nix - 有没有办法查看在 NixOS 上构建和激活的实际计算/生成的 "output"系统配置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68139659/

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