因此,在 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?
这对于故障排除非常有用,能够评估正在运行的所有内容及其运行时的实际配置。
Rob*_*ing 10
您提到的最终配置是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>
Run Code Online (Sandbox Code Playgroud)
所以我的笔记本电脑上没有任何 mysql 数据库。
如果您使用的是薄片,则这些值可在nixosConfigurations.<hostname>属性中使用。
薄片也可以加载到 repl 中。截至撰写本文时,它还不太理想,但本期将描述实现这一目标的最佳方法。
通过Hercules CI Effects,使用模块系统的部署通常会提供.prebuilt.config用于相同目的的属性。这是runNixOS 的一个。
| 归档时间: |
|
| 查看次数: |
2303 次 |
| 最近记录: |