如何添加udev运行脚本

如何添加udev运行脚本

我有几个脚本,我希望 udev 在插入/拔出显示器时运行。我已经添加了额外的 udev 规则,但我不知道如何添加我希望 udev 运行的脚本。

我尝试使用以下命令将 udev 指向 nix 之外的脚本:

RUN+="/home/myUser/scriptName.sh"

重建失败并出现错误:

/home/myUser/scriptName.sh is called in udev rules but not installed by udev

那么如何通过 udev 安装脚本呢?

我是否必须为脚本创建 nix 表达式并将它们与其他所有内容一起安装?

谢谢。

答案1

免责声明

这是一个不纯粹的解决方案,这意味着configuration.nix仅凭这一点无法让您完全实现目标。我强烈反对在服务器上使用它。

另一方面,我在我的笔记本电脑上使用这种方法,我仍然需要从其他地方获取我的点文件,提取工作存储库,恢复备份等,所以我有一些东西无论如何都不能单独用 nix 表达式来描述。

答案

configuration.nix这是我关注的部分udev,它负责在笔记本电脑连接坞站时设置外部显示器。

  services.udev = {
      extraRules = ''
        SUBSYSTEM=="usb", ACTION=="add|remove", ENV{ID_VENDOR}=="Lenovo", ENV{ID_MODEL}=="Lenovo_ThinkPad_Dock", RUN+="${pkgs.bash}/bin/bash /home/hoodoo/.local/bin/dock_handler.sh"
      '';
  };   

这里欺骗 nix 解释器的是这样一个事实:我调用了正确安装的东西并将我的脚本作为参数走私(并且它不会很快有能力找出所有可能命令的所有可能选项)。

如果有人好奇,我已经提供了解决方案的部分内容这里这里

相关内容