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 .