在 NixOS 中使用 udev 自动挂载可移动媒体

在 NixOS 中使用 udev 自动挂载可移动媒体

我想要一个 udevrule 来自动安装 USB 记忆棒或 SD 卡(如果插入终端计算机)。我尝试实现此目的的方法是添加 udevrule 并利用 pmount 以非 root 用户身份挂载设备的功能。

以下额外规则在 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顺便说一下,手动执行相同的命令是可行的。

我不知道如何让 pmount 和 udev 在 NixOS 中正常工作来完成该任务。

仅供参考我添加了一个链接自动挂载.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"       
'';

解决方案已找到在 arch wiki 中,在有关 automount using 的各种答案中都提到了这一点udev

相关内容