diff --git a/upstart-jobs/xserver/desktopManager/default.nix b/upstart-jobs/xserver/desktopManager/default.nix index 73b0308bea2..05f82dd3e6c 100644 --- a/upstart-jobs/xserver/desktopManager/default.nix +++ b/upstart-jobs/xserver/desktopManager/default.nix @@ -1,8 +1,7 @@ {pkgs, config, ...}: let - inherit (builtins) head tail; - inherit (pkgs.lib) mkOption mkIf filter optionalString any; + inherit (pkgs.lib) mkOption mergeOneOption mkIf filter optionalString any; cfg = config.services.xserver.desktopManager; needBGCond = d: ! (d ? bgSupport && d.bgSupport); @@ -58,10 +57,8 @@ in Default desktop manager loaded if none have been chosen. "; merge = name: list: - let defaultDM = head list; in - if tail list != [] then - throw "Only one default desktop manager is allowed." - else if any (w: w.name == defaultDM) cfg.session.list then + let defaultDM = mergeOneOption name list; in + if any (w: w.name == defaultDM) cfg.session.list then defaultDM else throw "Default desktop manager not found."; diff --git a/upstart-jobs/xserver/displayManager/default.nix b/upstart-jobs/xserver/displayManager/default.nix index 2699e34ecad..12393af8f6c 100644 --- a/upstart-jobs/xserver/displayManager/default.nix +++ b/upstart-jobs/xserver/displayManager/default.nix @@ -1,8 +1,7 @@ {pkgs, config, ...}: let - inherit (builtins) head tail; - inherit (pkgs.lib) mkOption optionals filter concatMap concatMapStrings; + inherit (pkgs.lib) mkOption mergeOneOption optionals filter concatMap concatMapStrings; cfg = config.services.xserver; xorg = cfg.package; @@ -159,11 +158,7 @@ in the display manager start the xserver. "; - merge = name: list: - if tail list != [] then - throw "only one display manager is allowed." - else - head list; + merge = mergeOneOption; }; }; diff --git a/upstart-jobs/xserver/windowManager/default.nix b/upstart-jobs/xserver/windowManager/default.nix index 41c3ad15983..14f06b62b03 100644 --- a/upstart-jobs/xserver/windowManager/default.nix +++ b/upstart-jobs/xserver/windowManager/default.nix @@ -1,8 +1,7 @@ {pkgs, config, ...}: let - inherit (builtins) head tail; - inherit (pkgs.lib) mkOption any; + inherit (pkgs.lib) mkOption mergeOneOption any; cfg = config.services.xserver.windowManager; in @@ -47,10 +46,8 @@ in Default window manager loaded if none have been chosen. "; merge = name: list: - let defaultWM = head list; in - if tail list != [] then - throw "Only one default window manager is allowed." - else if any (w: w.name == defaultWM) cfg.session then + let defaultWM = mergeOneOption name list; in + if any (w: w.name == defaultWM) cfg.session then defaultWM else throw "Default window manager not found.";