diff --git a/lib/modules.nix b/lib/modules.nix
index 654c4c588de67..f7d522cad397f 100644
--- a/lib/modules.nix
+++ b/lib/modules.nix
@@ -310,6 +310,7 @@ rec {
in opt //
{ value = addErrorContext "while evaluating the option `${showOption loc}':" value;
+ inherit (res.defsFinal') highestPrio;
definitions = map (def: def.value) res.defsFinal;
files = map (def: def.file) res.defsFinal;
inherit (res) isDefined;
@@ -317,7 +318,7 @@ rec {
# Merge definitions of a value of a given type.
mergeDefinitions = loc: type: defs: rec {
- defsFinal =
+ defsFinal' =
let
# Process mkMerge and mkIf properties.
defs' = concatMap (m:
@@ -325,15 +326,20 @@ rec {
) defs;
# Process mkOverride properties.
- defs'' = filterOverrides defs';
+ defs'' = filterOverrides' defs';
# Sort mkOrder properties.
defs''' =
# Avoid sorting if we don't have to.
- if any (def: def.value._type or "" == "order") defs''
- then sortProperties defs''
- else defs'';
- in defs''';
+ if any (def: def.value._type or "" == "order") defs''.values
+ then sortProperties defs''.values
+ else defs''.values;
+ in {
+ values = defs''';
+ inherit (defs'') highestPrio;
+ };
+
+ defsFinal = defsFinal'.values;
# Type-check the remaining definitions, and merge them.
mergedValue = foldl' (res: def:
@@ -416,13 +422,18 @@ rec {
Note that "z" has the default priority 100.
*/
- filterOverrides = defs:
+ filterOverrides = defs: (filterOverrides' defs).values;
+
+ filterOverrides' = defs:
let
defaultPrio = 100;
getPrio = def: if def.value._type or "" == "override" then def.value.priority else defaultPrio;
highestPrio = foldl' (prio: def: min (getPrio def) prio) 9999 defs;
strip = def: if def.value._type or "" == "override" then def // { value = def.value.content; } else def;
- in concatMap (def: if getPrio def == highestPrio then [(strip def)] else []) defs;
+ in {
+ values = concatMap (def: if getPrio def == highestPrio then [(strip def)] else []) defs;
+ inherit highestPrio;
+ };
/* Sort a list of properties. The sort priority of a property is
1000 by default, but can be overridden by wrapping the property
diff --git a/nixos/doc/manual/release-notes/rl-1803.xml b/nixos/doc/manual/release-notes/rl-1803.xml
index ce58c4dc95b08..469c6a9f338c1 100644
--- a/nixos/doc/manual/release-notes/rl-1803.xml
+++ b/nixos/doc/manual/release-notes/rl-1803.xml
@@ -209,6 +209,9 @@ following incompatible changes:
For stateVersion = "17.09" or lower the old behavior is preserved.
+
+ sound.enable now defaults to false.
+
matrix-synapse uses postgresql by default instead of sqlite.
diff --git a/nixos/modules/installer/tools/nixos-generate-config.pl b/nixos/modules/installer/tools/nixos-generate-config.pl
index a82ee63fd0cda..14be5c3e72ce1 100644
--- a/nixos/modules/installer/tools/nixos-generate-config.pl
+++ b/nixos/modules/installer/tools/nixos-generate-config.pl
@@ -603,6 +603,9 @@ sub multiLineList {
# Enable CUPS to print documents.
# services.printing.enable = true;
+ # Enable sound.
+ # sound.enable = true;
+
# Enable the X11 windowing system.
# services.xserver.enable = true;
# services.xserver.layout = "us";
diff --git a/nixos/modules/misc/version.nix b/nixos/modules/misc/version.nix
index 6af584250a703..275e17f0ce0c8 100644
--- a/nixos/modules/misc/version.nix
+++ b/nixos/modules/misc/version.nix
@@ -1,4 +1,4 @@
-{ config, lib, pkgs, ... }:
+{ options, config, lib, pkgs, ... }:
with lib;
@@ -78,6 +78,11 @@ in
config = {
+ warnings = lib.optional (options.system.stateVersion.highestPrio == 1001) ''
+ You don't have `system.stateVersion` explicitly set. Expect things to break.
+ See release notes and grep for "stateVersion" in `nixpkgs/nixos` tree.
+ '';
+
system.nixos = {
# These defaults are set here rather than up there so that
# changing them would not rebuild the manual
diff --git a/nixos/modules/services/audio/alsa.nix b/nixos/modules/services/audio/alsa.nix
index acf48d3c3d032..3707bd99039b9 100644
--- a/nixos/modules/services/audio/alsa.nix
+++ b/nixos/modules/services/audio/alsa.nix
@@ -21,7 +21,8 @@ in
enable = mkOption {
type = types.bool;
- default = true;
+ default = !versionAtLeast config.system.stateVersion "18.03";
+ defaultText = "!versionAtLeast system.stateVersion \"18.03\"";
description = ''
Whether to enable ALSA sound.
'';