added pam u2f auth

This commit is contained in:
twoneis 2025-03-07 11:27:49 +01:00
parent 27dd02777d
commit 6f36d70cdf
3 changed files with 31 additions and 15 deletions

View file

@ -8,6 +8,7 @@
containers.enable = true; containers.enable = true;
networkmanager.enable = true; networkmanager.enable = true;
yubikey.enable = true; yubikey.enable = true;
yubikey.login = true;
stateVersion = "24.11"; stateVersion = "24.11";
hmStateVersion = "24.11"; hmStateVersion = "24.11";

View file

@ -4,19 +4,31 @@
pkgs, pkgs,
... ...
}: let }: let
inherit (lib) mkIf; inherit (lib) mkMerge mkIf;
inherit (config) conf; inherit (config) conf;
in in
mkIf conf.yubikey.enable { mkMerge [
services.udev.packages = [pkgs.yubikey-personalization]; (mkIf
services.pcscd.enable = true; conf.yubikey.enable
{
services.udev.packages = [pkgs.yubikey-personalization];
services.pcscd.enable = true;
programs.gnupg.agent = { programs.gnupg.agent = {
enable = true; enable = true;
enableSSHSupport = true; enableSSHSupport = true;
}; };
home-manager.users.${conf.username}.home.packages = with pkgs; [ home-manager.users.${conf.username}.home.packages = with pkgs; [
yubioath-flutter yubioath-flutter
]; ];
} })
(mkIf
conf.yubikey.login
{
security.pam.services = {
login.u2fAuth = true;
sudo.u2fAuth = true;
};
})
]

View file

@ -12,9 +12,12 @@ in {
games.enable = mkEnableOption "Enable games."; games.enable = mkEnableOption "Enable games.";
secureboot.enable = mkEnableOption "Enable secure boot utilities (manual key-enrolling required)."; secureboot.enable = mkEnableOption "Enable secure boot utilities (manual key-enrolling required).";
extraLayout.enable = mkEnableOption "Enable additional custom layout."; extraLayout.enable = mkEnableOption "Enable additional custom layout.";
fonts.enable = mkEnableOption "Install and set preferred fonts"; fonts.enable = mkEnableOption "Install and set preferred fonts.";
networkmanager.enable = mkEnableOption "Enable network manager and some related configuration"; networkmanager.enable = mkEnableOption "Enable network manager and some related configuration.";
yubikey.enable = mkEnableOption "Enable support for yubikey"; yubikey = {
enable = mkEnableOption "Enable support for yubikey.";
login = mkEnableOption "Enable login with yubikey, make sure ~/.config/Yubico/u2f_keys is set up.";
};
# Generally server options # Generally server options
ssh.enable = mkEnableOption "Install my public key to allow accessing this machine via ssh."; ssh.enable = mkEnableOption "Install my public key to allow accessing this machine via ssh.";