summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorMalo Bourgon <mbourgon@gmail.com>2020-09-14 13:34:30 -0700
committerMalo Bourgon <mbourgon@gmail.com>2022-06-30 13:32:46 -0700
commitca57e8bcdbf1c50846cf37abac8b18f8d0636160 (patch)
tree85a3b3c56606cfb06a83acf71c2d5fe59e36a679 /modules
parent1d98da837f1e94c04209bce901d5b664b3cd0ec5 (diff)
Change option name and switch to using activation script
Diffstat (limited to 'modules')
-rw-r--r--modules/module-list.nix2
-rw-r--r--modules/security/pam.nix43
-rw-r--r--modules/system/activation-scripts.nix1
-rw-r--r--modules/system/etc-pam.d-sudo.patch8
-rw-r--r--modules/system/sudo.nix15
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 ]; };
-}