diff options
author | Benno Fünfstück <benno.fuenfstueck@gmail.com> | 2015-10-31 16:03:01 +0100 |
---|---|---|
committer | Benno Fünfstück <benno.fuenfstueck@gmail.com> | 2015-10-31 16:04:52 +0100 |
commit | d767aae72179d0e323584d5c4811be1f408d45ee (patch) | |
tree | 9aebaf1efd950085d26cc7d95efb688d4f266623 /nixos/modules/services/x11/display-managers/sddm.nix | |
parent | 7eea66cabeaaefa0961cf38630a17aee0e2dd536 (diff) | |
download | nixpkgs-d767aae72179d0e323584d5c4811be1f408d45ee.tar nixpkgs-d767aae72179d0e323584d5c4811be1f408d45ee.tar.gz nixpkgs-d767aae72179d0e323584d5c4811be1f408d45ee.tar.bz2 nixpkgs-d767aae72179d0e323584d5c4811be1f408d45ee.tar.lz nixpkgs-d767aae72179d0e323584d5c4811be1f408d45ee.tar.xz nixpkgs-d767aae72179d0e323584d5c4811be1f408d45ee.tar.zst nixpkgs-d767aae72179d0e323584d5c4811be1f408d45ee.zip |
sddm module: support autologin configuration
Diffstat (limited to 'nixos/modules/services/x11/display-managers/sddm.nix')
-rw-r--r-- | nixos/modules/services/x11/display-managers/sddm.nix | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/nixos/modules/services/x11/display-managers/sddm.nix b/nixos/modules/services/x11/display-managers/sddm.nix index 4594155ea13..5ca3a44324f 100644 --- a/nixos/modules/services/x11/display-managers/sddm.nix +++ b/nixos/modules/services/x11/display-managers/sddm.nix @@ -36,9 +36,22 @@ let SessionDir=${dmcfg.session.desktops} XauthPath=${pkgs.xorg.xauth}/bin/xauth + ${optionalString cfg.autoLogin.enable '' + [Autologin] + User=${cfg.autoLogin.user} + Session=${defaultSessionName}.desktop + Relogin=${if cfg.autoLogin.relogin then "true" else "false"} + ''} + ${cfg.extraConfig} ''; + defaultSessionName = + let + dm = xcfg.desktopManager.default; + wm = xcfg.windowManager.default; + in dm + optionalString (wm != "none") (" + " + wm); + in { options = { @@ -72,12 +85,62 @@ in Greeter theme to use. ''; }; + + autoLogin = mkOption { + default = {}; + description = '' + Configuration for automatic login. + ''; + + type = types.submodule { + options = { + enable = mkOption { + type = types.bool; + default = false; + description = '' + Automatically log in as the sepecified <option>autoLogin.user</option>. + ''; + }; + + user = mkOption { + type = types.nullOr types.str; + default = null; + description = '' + User to be used for the autologin. + ''; + }; + + relogin = mkOption { + type = types.bool; + default = false; + description = '' + If true automatic login will kick in again on session exit, otherwise it + will work only the first time. + ''; + }; + }; + }; + }; + }; }; config = mkIf cfg.enable { + assertions = [ + { assertion = cfg.autoLogin.enable -> cfg.autoLogin.user != null; + message = "SDDM auto-login requires services.xserver.displayManager.sddm.autoLogin.user to be set"; + } + { assertion = cfg.autoLogin.enable -> elem defaultSessionName dmcfg.session.names; + message = '' + SDDM auto-login requires that services.xserver.desktopManager.default and + services.xserver.windowMananger.default are set to valid values. The current + default session: ${defaultSessionName} is not valid. + ''; + } + ]; + services.xserver.displayManager.slim.enable = false; services.xserver.displayManager.job = { @@ -108,6 +171,18 @@ in session optional pam_keyinit.so force revoke session optional pam_permit.so ''; + + sddm-autologin.text = '' + auth requisite pam_nologin.so + auth required pam_succeed_if.so uid >= 1000 quiet + auth required pam_permit.so + + account include sddm + + password include sddm + + session include sddm + ''; }; users.extraUsers.sddm = { |