Commit f03c7fb8 authored by Robert Hensing's avatar Robert Hensing
Browse files

nixos/version: Only warn about unset stateVersion if used

If a configuration does not use services that depend on the
stateVersion, it does not need to be set.

This provides an incentive for services not to rely on
stateVersion, and not to burden users with this.
parent 9aa77715
Loading
Loading
Loading
Loading
+6 −8
Original line number Diff line number Diff line
@@ -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
+6 −0
Original line number Diff line number Diff line
@@ -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.