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. '';