Kieran's opinionated (and probably slightly dumb) nix config

feat: add password prefered pam config

Changed files
+70 -3
moonlark
+2 -3
moonlark/configuration.nix
···
# hpyrland config
# ./hyprland
+
+
./pam.nix
];
nixpkgs = {
···
})
pkgs.github-desktop
];
-
-
services.fprintd.enable = true;
-
security.pam.services.hyprlock.fprintAuth = true;
services.gnome.gnome-keyring.enable = true;
+68
moonlark/pam.nix
···
+
{
+
lib,
+
config,
+
pkgs,
+
...
+
}: {
+
services.fprintd.enable = true;
+
security.pam.services.hyprlock = lib.mkIf (config.services.fprintd.enable) {
+
text = ''
+
# Account management.
+
account required pam_unix.so # unix (order 10900)
+
+
# Authentication management.
+
auth sufficient pam_unix.so try_first_pass likeauth nullok
+
auth sufficient ${pkgs.fprintd}/lib/security/pam_fprintd.so
+
auth required pam_deny.so # deny
+
+
# Password management.
+
password sufficient pam_unix.so nullok yescrypt # unix
+
+
# Session management.
+
session required pam_env.so conffile=/etc/pam/environment readenv=0 # env (order 10100)
+
session required pam_unix.so # unix (order 10200)
+
'';
+
};
+
+
security.pam.services.sudo = lib.mkIf (config.services.fprintd.enable) {
+
text = ''
+
# Account management.
+
account required pam_unix.so # unix (order 10900)
+
+
# Authentication management.
+
auth sufficient pam_unix.so try_first_pass likeauth nullok
+
auth sufficient ${pkgs.fprintd}/lib/security/pam_fprintd.so
+
auth required pam_deny.so # deny
+
+
# Password management.
+
password sufficient pam_unix.so nullok yescrypt # unix
+
+
# Session management.
+
session required pam_env.so conffile=/etc/pam/environment readenv=0 # env (order 10100)
+
session required pam_unix.so # unix (order 10200)
+
'';
+
};
+
+
security.pam.services.su = lib.mkIf (config.services.fprintd.enable) {
+
text = ''
+
# Account management.
+
account required pam_unix.so # unix (order 10900)
+
+
# Authentication management.
+
auth sufficient pam_rootok.so # rootok (order 10200)
+
auth required pam_faillock.so # faillock (order 10400)
+
auth sufficient pam_unix.so try_first_pass likeauth nullok
+
auth sufficient ${pkgs.fprintd}/lib/security/pam_fprintd.so
+
auth required pam_deny.so # deny
+
+
# Password management.
+
password sufficient pam_unix.so nullok yescrypt # unix
+
+
# Session management.
+
session required pam_env.so conffile=/etc/pam/environment readenv=0 # env (order 10100)
+
session required pam_unix.so # unix (order 10200)
+
session required pam_unix.so # unix (order 10200)
+
session optional pam_xauth.so systemuser=99 xauthpath=${pkgs.xorg.xauth}/bin/xauth # xauth (order 12100)
+
'';
+
};
+
}