Merge pull request #207958 from hercules-ci/nixos-only-warn-stateVersion-when-used-lite

nixos/version: Only warn about unset stateVersion if used (lite)
This commit is contained in:
Robert Hensing 2022-12-28 15:03:09 +01:00 committed by GitHub
commit 8df1ea3269
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 31 additions and 9 deletions

View file

@ -89,6 +89,12 @@ in
stateVersion = mkOption {
type = types.str;
# TODO Remove this and drop the default of the option so people are forced to set it.
# Doing this also means fixing the comment in nixos/modules/testing/test-instrumentation.nix
apply = v:
lib.warnIf (options.system.stateVersion.highestPrio == (lib.mkOptionDefault { }).priority)
"system.stateVersion is not set, defaulting to ${v}. Read why this matters on https://nixos.org/manual/nixos/stable/options.html#opt-system.stateVersion."
v;
default = cfg.release;
defaultText = literalExpression "config.${opt.release}";
description = lib.mdDoc ''
@ -149,14 +155,6 @@ in
"os-release".text = attrsToText osReleaseContents;
};
# We have to use `warnings` because when warning in the default of the option
# the warning would also be shown when building the manual since the manual
# has to evaluate the default.
#
# TODO Remove this and drop the default of the option so people are forced to set it.
# Doing this also means fixing the comment in nixos/modules/testing/test-instrumentation.nix
warnings = lib.optional (options.system.stateVersion.highestPrio == (lib.mkOptionDefault { }).priority)
"system.stateVersion is not set, defaulting to ${config.system.stateVersion}. Read why this matters on https://nixos.org/manual/nixos/stable/options.html#opt-system.stateVersion.";
};
# uses version info nixpkgs, which requires a full nixpkgs path

View file

@ -11,6 +11,17 @@ in
{ imports = [
../virtualisation/qemu-vm.nix
# Avoid a dependency on stateVersion
{
disabledModules = [
../virtualisation/nixos-containers.nix
../services/x11/desktop-managers/xterm.nix
];
config = {
};
options.boot.isContainer = lib.mkOption { default = false; internal = true; };
}
];
# The builder is not intended to be used interactively
@ -97,7 +108,14 @@ in
# To prevent gratuitous rebuilds on each change to Nixpkgs
nixos.revision = null;
stateVersion = "22.05";
stateVersion = lib.mkDefault (throw ''
The macOS linux builder should not need a stateVersion to be set, but a module
has accessed stateVersion nonetheless.
Please inspect the trace of the following command to figure out which module
has a dependency on stateVersion.
nix-instantiate --attr darwin.builder --show-trace
'');
};
users.users."${user}"= {

View file

@ -507,6 +507,12 @@ in {
sqlite3 = null;
psycopg2 = "matrix-synapse";
}.${cfg.settings.database.name};
defaultText = lib.literalExpression ''
{
sqlite3 = null;
psycopg2 = "matrix-synapse";
}.''${cfg.settings.database.name};
'';
description = lib.mdDoc ''
Username to connect with psycopg2, set to null
when using sqlite3.