diff options
| author | Malo Bourgon <mbourgon@gmail.com> | 2020-09-14 13:34:30 -0700 |
|---|---|---|
| committer | Malo Bourgon <mbourgon@gmail.com> | 2022-06-30 13:32:46 -0700 |
| commit | ca57e8bcdbf1c50846cf37abac8b18f8d0636160 (patch) | |
| tree | 85a3b3c56606cfb06a83acf71c2d5fe59e36a679 /modules | |
| parent | 1d98da837f1e94c04209bce901d5b664b3cd0ec5 (diff) | |
Change option name and switch to using activation script
Diffstat (limited to 'modules')
| -rw-r--r-- | modules/module-list.nix | 2 | ||||
| -rw-r--r-- | modules/security/pam.nix | 43 | ||||
| -rw-r--r-- | modules/system/activation-scripts.nix | 1 | ||||
| -rw-r--r-- | modules/system/etc-pam.d-sudo.patch | 8 | ||||
| -rw-r--r-- | modules/system/sudo.nix | 15 |
5 files changed, 45 insertions, 24 deletions
diff --git a/modules/module-list.nix b/modules/module-list.nix index ba84d27..71ef152 100644 --- a/modules/module-list.nix +++ b/modules/module-list.nix @@ -2,6 +2,7 @@ ./alias.nix ./documentation ./misc/lib.nix + ./security/pam.nix ./security/pki ./security/sandbox ./system @@ -29,7 +30,6 @@ ./system/launchd.nix ./system/patches.nix ./system/shells.nix - ./system/sudo.nix ./system/version.nix ./time ./networking diff --git a/modules/security/pam.nix b/modules/security/pam.nix new file mode 100644 index 0000000..4137b3f --- /dev/null +++ b/modules/security/pam.nix @@ -0,0 +1,43 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.security.pam; +in + +{ + options = { + security.pam.enableSudoTouchIdAuth = mkEnableOption '' + Enable sudo authentication with Touch ID + + When enabled, this option adds the following line to /etc/pam.d/sudo: + + auth sufficient pam_tid.so + + (Note that macOS resets this file when doing a system update. As such, sudo + authentication with Touch ID won't work after a system update until the nix-darwin + configuration is reapplied.) + ''; + }; + + config = { + system.activationScripts.pam.text = '' + # PAM settings + echo >&2 "setting up pam..." + ${if cfg.enableSudoTouchIdAuth then '' + # Enable sudo Touch ID authentication + if ! grep pam_tid.so /etc/pam.d/sudo > /dev/null; then + sed -i.orig '2i\ + auth sufficient pam_tid.so + ' /etc/pam.d/sudo + fi + '' else '' + # Disable sudo Touch ID authentication + if test -e /etc/pam.d/sudo.orig; then + mv /etc/pam.d/sudo.orig /etc/pam.d/sudo + fi + ''} + ''; + }; +} diff --git a/modules/system/activation-scripts.nix b/modules/system/activation-scripts.nix index 346fb97..8ade8ed 100644 --- a/modules/system/activation-scripts.nix +++ b/modules/system/activation-scripts.nix @@ -56,6 +56,7 @@ in ${cfg.activationScripts.groups.text} ${cfg.activationScripts.users.text} ${cfg.activationScripts.applications.text} + ${cfg.activationScripts.pam.text} ${cfg.activationScripts.patches.text} ${cfg.activationScripts.etc.text} ${cfg.activationScripts.defaults.text} diff --git a/modules/system/etc-pam.d-sudo.patch b/modules/system/etc-pam.d-sudo.patch deleted file mode 100644 index fa361b4..0000000 --- a/modules/system/etc-pam.d-sudo.patch +++ /dev/null @@ -1,8 +0,0 @@ ---- /etc/pam.d/sudo -+++ /etc/pam.d/sudo -@@ -1,4 +1,5 @@ - # sudo: auth account password session -+auth sufficient pam_tid.so - auth sufficient pam_smartcard.so - auth required pam_opendirectory.so - account required pam_permit.so diff --git a/modules/system/sudo.nix b/modules/system/sudo.nix deleted file mode 100644 index d4112ed..0000000 --- a/modules/system/sudo.nix +++ /dev/null @@ -1,15 +0,0 @@ -{ config, lib, pkgs, ... }: - -with lib; - -let - cfg = config.system.sudo; -in - -{ - options = { - system.sudo.touchid.enable = mkEnableOption "Enable sudo authentication with Touch ID"; - }; - - config = mkIf cfg.touchid.enable { system.patches = [ ./etc-pam.d-sudo.patch ]; }; -} |
