udevを使用してNixOSからリムーバブルメディアを自動的にマウントします。

udevを使用してNixOSからリムーバブルメディアを自動的にマウントします。

ターミナルコンピュータに接続したら、udevruleにUSBスティックまたはSDカードを自動的にマウントするようにしたいと思います。これを達成しようとした方法は、udevruleを追加し、root以外のユーザーとしてデバイスをマウントするpmountの機能を利用することでした。

次の追加ルールはmyで定義されていますconfiguration.nix

services.udev.extraRules = ''
         ACTION=="add", SUBSYSTEM=="block", RUN+="${pkgs.bash}/bin/bash -c '${pkgs.pmount}/bin/pmount --sync --umask 000 %N &>> /tmp/udev-pmount.log'"
 '';

エラー出力は/tmp/udev-pmount.log次のとおりです。

mount: /media/sdd2: permission denied.

/mediaフォルダには777権限があり、空です。

sudoしかし、同じコマンドを手動で実行すると機能します。

これを行うために、NixOSでpmountとudevを正しく機能させる方法がわかりません。

参考までにリンクを追加しました.nix 自動マウント、同じような目的を達成する必要があります。しかし、KERNEL=="sd[a-z][0-9]"何も一致しないので動作しません。

ベストアンサー1

次のソリューションはpmount扱いませんが、再現可能な方法でストレージを自動的にマウントできる最も簡単なudev自動マウントルールは次のとおりです。

services.udev.extraRules = ''
     ACTION=="add", SUBSYSTEMS=="usb", SUBSYSTEM=="block", ENV{ID_FS_USAGE}=="filesystem", RUN{program}+="${pkgs.systemd}/bin/systemd-mount --no-block --automount=yes --collect $devnode /media"       
'';

解決策が見つかりました。アーチウィキから、これを使用した自動マウントに対するさまざまな回答で言及されていますudev

おすすめ記事