🙄

MacのターミナルでsudoしたときにTouchIDを使う - nix-darwinの場合

2023/02/18に公開

背景

darwin-rebuildのたびにパスワードを入力するのが面倒になってしまった。

対策案

そもそもnix-darwinは対応していた。
security.pam.enableSudoTouchIdAuthをtrueに設定するだけである。

.nixpkgs/darwin-configuration.nixに書き加えれば良い。

{
  security.pam.enableSudoTouchIdAuth = true
}

nix-darwinを日常的に使っていればmacのアップデートで消えても次のdarwin-rebuild switchで修正されるはずなので、そのあたりが嬉しみです。

もうちょっと詳しく

実装を確認してみよう。

https://github.com/LnL7/nix-darwin/blob/3db1d870b04b13411f56ab1a50cd32b001f56433/modules/security/pam.nix#L25-L30

      # Enable sudo Touch ID authentication, if not already enabled
      if ! grep 'pam_tid.so' ${file} > /dev/null; then
        ${sed} -i '2i\
      auth       sufficient     pam_tid.so # nix-darwin: ${option}
        ' ${file}
      fi

どうやらsedでpam_tid.soが書かれていなかったら差し込むようだ。

参考

https://daiderd.com/nix-darwin/manual/index.html#opt-security.pam.enableSudoTouchIdAuth

Discussion