diff options
author | Tor Hedin Brønner <torhedinbronner@gmail.com> | 2019-01-12 10:31:37 +0100 |
---|---|---|
committer | Jan Tojnar <jtojnar@gmail.com> | 2019-12-15 04:16:20 +0100 |
commit | d25365c3c13f2fcc4e5574f01106c061c493e63e (patch) | |
tree | dda982f84e63f48a3f46b71eb17747d77e6809a4 /nixos/modules/services/x11/display-managers/default.nix | |
parent | 58e5290fcee60178973f4cc21011fbbf03497410 (diff) | |
download | nixpkgs-d25365c3c13f2fcc4e5574f01106c061c493e63e.tar nixpkgs-d25365c3c13f2fcc4e5574f01106c061c493e63e.tar.gz nixpkgs-d25365c3c13f2fcc4e5574f01106c061c493e63e.tar.bz2 nixpkgs-d25365c3c13f2fcc4e5574f01106c061c493e63e.tar.lz nixpkgs-d25365c3c13f2fcc4e5574f01106c061c493e63e.tar.xz nixpkgs-d25365c3c13f2fcc4e5574f01106c061c493e63e.tar.zst nixpkgs-d25365c3c13f2fcc4e5574f01106c061c493e63e.zip |
nixos/displayManager: introduce defaultSession
There's two ways of providing graphical sessions now: - `displayManager.session` via. `desktopManager.session` and `windowManager.session` - `displayManager.sessionPackages` `sessionPackages` doesn't make a distinction between desktop and window managers. This makes selecting a session provided by a package using `desktopManager.default` nonsensical. We therefor introduce `displayManager.defaultSession` which can select a session from either `displayManager.session` or `displayManager.sessionPackages`. It will default to `desktopManager.default + windowManager.default` as before. If the dm default is "none" it will select the first provided session from `sessionPackages`.
Diffstat (limited to 'nixos/modules/services/x11/display-managers/default.nix')
-rw-r--r-- | nixos/modules/services/x11/display-managers/default.nix | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/nixos/modules/services/x11/display-managers/default.nix b/nixos/modules/services/x11/display-managers/default.nix index f55bfbfd0c1..1a46e7c02e5 100644 --- a/nixos/modules/services/x11/display-managers/default.nix +++ b/nixos/modules/services/x11/display-managers/default.nix @@ -327,6 +327,37 @@ in }; }; + defaultSession = mkOption { + type = with types; str // { + description = "session name"; + check = d: let + sessionNames = cfg.displayManager.session.names ++ + (concatMap (p: p.providedSessions) cfg.displayManager.sessionPackages); + in + assertMsg (str.check d && (d == "none" || (elem d sessionNames))) '' + Default graphical session, '${d}', not found. + Valid names for 'services.xserver.displayManager.defaultSession' are: + ${concatStringsSep "\n " sessionNames} + ''; + }; + default = let + dmDefault = cfg.desktopManager.default; + wmDefault = cfg.windowManager.default; + defaultPackage = + if cfg.displayManager.sessionPackages != [] then + (head (head cfg.displayManager.sessionPackages).providedSessions) + else + null; + defaultDmWm = dmDefault + optionalString (wmDefault != "none") ("+" + wmDefault); + in + if defaultDmWm == "none" && isString defaultPackage then + defaultPackage + else + defaultDmWm; + example = "gnome"; + description = "Default graphical session (only effective for LightDM and SDDM)."; + }; + job = { preStart = mkOption { |