commit 34581dafda417971934f71c97fc9c4919ffd5d0d
parent a3d642d87fbd4d938e9628dda320478adf842090
Author: Katja (ctucx) <git@ctu.cx>
Date: Tue, 25 Mar 2025 13:57:04 +0100
parent a3d642d87fbd4d938e9628dda320478adf842090
Author: Katja (ctucx) <git@ctu.cx>
Date: Tue, 25 Mar 2025 13:57:04 +0100
modules/nixos/gnome: improve pam foo
1 file changed, 63 insertions(+), 21 deletions(-)
M
|
84
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------
diff --git a/modules/nixos/gnome.nix b/modules/nixos/gnome.nix @@ -302,28 +302,70 @@ in { }; # GDM LFS PAM modules, adapted somehow to NixOS - security.pam.services.gdm-launch-environment.text = '' - auth required pam_succeed_if.so audit quiet_success user = gdm - auth optional pam_permit.so - - account required pam_succeed_if.so audit quiet_success user = gdm - account sufficient pam_unix.so - - password required pam_deny.so - - session required pam_succeed_if.so audit quiet_success user = gdm - session required pam_env.so conffile=/etc/pam/environment readenv=0 - session optional ${config.systemd.package}/lib/security/pam_systemd.so - session optional pam_keyinit.so force revoke - session optional pam_permit.so - ''; + security.pam.services = { + gdm-launch-environment.text = '' + auth required pam_succeed_if.so audit quiet_success user = gdm + auth optional pam_permit.so + + account required pam_succeed_if.so audit quiet_success user = gdm + account sufficient pam_unix.so + + password required pam_deny.so + + session required pam_succeed_if.so audit quiet_success user = gdm + session required pam_env.so conffile=/etc/pam/environment readenv=0 + session optional ${config.systemd.package}/lib/security/pam_systemd.so + session optional pam_keyinit.so force revoke + session optional pam_permit.so + ''; + + gdm-password.text = '' + auth substack login + account include login + password substack login + session include login + ''; + + gdm-autologin.text = '' + auth requisite pam_nologin.so + auth required pam_succeed_if.so uid >= 1000 quiet + ${lib.optionalString config.security.pam.services.login.enableGnomeKeyring '' + auth [success=ok default=1] ${pkgs.gdm}/lib/security/pam_gdm.so + auth optional ${pkgs.gnome-keyring}/lib/security/pam_gnome_keyring.so + ''} + auth required pam_permit.so + + account sufficient pam_unix.so + + password requisite pam_unix.so nullok yescrypt + + session optional pam_keyinit.so revoke + session include login + ''; + + # This would block password prompt when included by gdm-password. + # GDM will instead run gdm-fingerprint in parallel. + login.fprintAuth = lib.mkIf config.services.fprintd.enable false; + + gdm-fingerprint.text = lib.mkIf config.services.fprintd.enable '' + auth required pam_shells.so + auth requisite pam_nologin.so + auth requisite pam_faillock.so preauth + auth required ${pkgs.fprintd}/lib/security/pam_fprintd.so + auth required pam_env.so + ${lib.optionalString config.security.pam.services.login.enableGnomeKeyring '' + auth [success=ok default=1] ${pkgs.gdm}/lib/security/pam_gdm.so + auth optional ${pkgs.gnome-keyring}/lib/security/pam_gnome_keyring.so + ''} + + account include login + + password required pam_deny.so + + session include login + ''; + }; - security.pam.services.gdm-password.text = '' - auth substack login - account include login - password substack login - session include login - ''; }; }