← トップページに戻る

NixOSの指紋認証できた

ぎじゅつ
NixOS

NixOSで指紋認証ができない問題、以前からどうしようかなーと思って再挑戦した。

以前からの課題

以前の話では指紋用のドライバーがないとかそんなんだった気がするが、
NixOS自体の設定がぐちゃぐちゃだったため再度やりなおした。

fprintdの設定

機種: E14Gen6

configuration.nix
services.fprintd = { enable = true; tod = { enable = true; driver = pkgs.libfprint-2-tod1-goodix; }; };

これで以前問題だったドライバーが動かない問題があっさり解決した
ChatGPTさいきょう

fprintd-enrollの設定

ここはNix関係なく、CLIで指紋を登録するところ
コマンド打って登録した
途中sudoしないと動かなかったけど登録はできた

sudo fprintd-enroll

認証設定

じゃあ指紋をsudoとかログインに使えるようにしなければならないので、
調べたところ以下のsecurityスキームでできるらしかった

configuration.nix
security.pam = { services = { login.fprintAuth = true; sudo.fprintAuth = true; }; };

認証がうごかない

指紋は登録できなのに何故か動かなかった。
以下を試した。

全部動かず。。。意味わからん。。。

sudo fprintdのsudo怪しくね?

今さらだがsudo怪しいなって思った
そもそもsudo使ったら登録ユーザー違うのになると仮説をたてて調査

sudo fprintd-list raizawa

これだと指紋ないよって言われた
はぁ~~~?

sudo fprintd-list root

こっちだとあるらしい、デスヨネ

sudoなしで起動できるのが正しい

journalctlで調査したらfprintdはCLI上だとpolkitに弾かれるからgnome
とかのUIから使ってねって言われた

当然そんなものは入れていないのでGPT先生に聞く

configuration.nix
environment.etc."polkit-1/rules.d/50-fprintd.rules".text = '' polkit.addRule(function(action, subject) { if (action.id == "net.reactivated.fprint.device.enroll" && subject.isInGroup("wheel")) { return polkit.Result.YES; } }); '';

こんな感じでwheel groupに入れてるなら通常起動を許可する雑な方法を提示された
藁にも縋る思いなので実行して無事設定に成功した

まとめ

おわりに

現在、2025-05-07 06:42、中途半端な疲労で昼寝してしまって寝れずにこんなことしてしまった。
今日から仕事なんだよね、あーあ。
仮眠取ります。