Como adicionar scripts para o udev ser executado

4

Eu tenho vários scripts que gostaria que o udev executasse quando um monitor fosse conectado / desconectado. Eu adicionei as regras extras do udev, mas não sei como adicionar os scripts que eu quero que o udev execute.

Eu tentei apontar o udev para os scripts fora do nix com:

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

Isso falhou na reconstrução com o erro:

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

Então, como instalo scripts pelo udev?

Eu tenho que criar expressões nix para os scripts e instalá-los com todo o resto?

Obrigado.

    
por TheRoach 25.02.2015 / 21:06

1 resposta

0

Aviso de isenção

Esta é uma solução impura, e isso significa que configuration.nix sozinho não vai chegar lá. Eu desestimulo strongmente o uso disso nos servidores.

Por outro lado, eu uso essa abordagem para meu laptop, onde ainda tenho que buscar meus arquivos de ponto de outro lugar, extrair repositórios de trabalho, restaurar backups etc., então tenho coisas que não podem ser descritas por expressões nix sozinho de qualquer maneira.

A resposta

Essa é a parte do meu configuration.nix referente a udev e cuida da configuração de um monitor externo quando o laptop é encaixado.

  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"
      '';
  };   

O que engana o intérprete nix aqui é o fato de eu chamar algo apropriadamente instalado e contrabandear meu script como um argumento (e ele não terá a capacidade de descobrir todas as opções possíveis para todos os comandos possíveis tão cedo).

Caso alguém esteja curioso, eu tenho as partes da solução aqui e aqui .

    
por 09.01.2018 / 22:43

Tags