{ lib, pkgs, stdenv, hyprland, ripgrep, socat, dbus, ... }: stdenv.mkDerivation rec { pname = "hyprland-system76-scheduler-integration"; version = "0.1.0"; nativeBuildInputs = [ socat dbus hyprland ripgrep ]; dontUnpack = "true"; dontBuild = true; installPhase = '' runHook preInstall mkdir -p $out/bin cat < $out/bin/hyprland-system76-scheduler-hook.sh #!${pkgs.bash}/bin/bash echo "opening socket.." ${pkgs.socat}/bin/socat -u UNIX-CLIENT:/tmp/hypr/\''$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock STDOUT | while read line; do if [[ "\''$line" == activewindow* ]]; then echo "got \''$line." pid="\''$(${pkgs.hyprland}/bin/hyprctl activewindow | ${pkgs.ripgrep}/bin/rg pid | ${pkgs.coreutils}/bin/cut -d' ' -f2)" if [[ -n \''$pid ]]; then echo "sending \''$pid!" ${pkgs.dbus}/bin/dbus-send --system --dest=com.system76.Scheduler --type=method_call /com/system76/Scheduler com.system76.Scheduler.SetForegroundProcess uint32:\''$pid fi pid="" fi echo "continuing.." done echo "finished." EOF chmod +x $out/bin/hyprland-system76-scheduler-hook.sh runHook postInstall ''; }