モニターが接続/分離されたときに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インタプリタをだますことは、私が適切にインストールされたものを呼び出して、私のスクリプトを引数として密輸するという事実です(そして、可能なすべてのコマンドに対して可能なすべてのオプションをすぐに把握する能力はありません)。