darwin.linux-builder: Expose nixosConfig and nixosOptions attributes

I chose not to do nixos.{config, options} because that would make it
look too much like a configuration object, which it is not.

A configuration object I would define as for example the result of
calling NixOS, an attrset with `_type = "configuration";`.

Recreating a configuration object without evalModules is quite
feasible but not guaranteed to be correct, and not maintainable.
This commit is contained in:
Robert Hensing 2023-10-12 22:59:19 +02:00
parent 9443a0b51e
commit 508c310222
2 changed files with 20 additions and 1 deletions

View file

@ -157,3 +157,17 @@ in the example below and rebuild.
You may make any other changes to your VM in this attribute set. For example,
you could enable Docker or X11 forwarding to your Darwin host.
## Troubleshooting the generated configuration {#sec-darwin-builder-troubleshoot}
The `linux-builder` package exposes the attributes `nixosConfig` and `nixosOptions` that allow you to inspect the generated NixOS configuration in the `nix repl`. For example:
```
$ nix repl --file ~/src/nixpkgs --argstr system aarch64-darwin
nix-repl> darwin.linux-builder.nixosConfig.nix.package
«derivation /nix/store/...-nix-2.17.0.drv»
nix-repl> :p darwin.linux-builder.nixosOptions.virtualisation.memorySize.definitionsWithLocations
[ { file = "/home/user/src/nixpkgs/nixos/modules/profiles/macos-builder.nix"; value = 3072; } ]
```

View file

@ -1,4 +1,4 @@
{ config, lib, ... }:
{ config, lib, options, ... }:
let
keysDirectory = "/var/keys";
@ -167,6 +167,11 @@ in
meta = (old.meta or { }) // {
platforms = lib.platforms.darwin;
};
passthru = (old.passthru or { }) // {
# Let users in the repl inspect the config
nixosConfig = config;
nixosOptions = options;
};
});
system = {