udev 실행 스크립트를 추가하는 방법

udev 실행 스크립트를 추가하는 방법

모니터가 연결/분리될 때 udev를 실행하려는 몇 가지 스크립트가 있습니다. 추가 udev 규칙을 추가했지만 udev에서 실행하려는 스크립트를 추가하는 방법을 모르겠습니다.

나는 다음을 사용하여 nix 외부 스크립트에 udev를 지정하려고 시도했습니다.

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 인터프리터를 속이는 것은 내가 적절하게 설치된 것을 호출하고 내 스크립트를 인수로 밀수한다는 사실입니다(그리고 가능한 모든 명령에 대해 가능한 모든 옵션을 곧 알아낼 수 있는 능력을 갖지 못할 것입니다).

궁금하신 분들을 위해 해결방법의 일부를 올려드립니다여기그리고여기.

관련 정보