diff --git a/nixos/homes/kylekrein/niri.nix b/nixos/homes/kylekrein/niri.nix index f40d856..9ebe0a5 100644 --- a/nixos/homes/kylekrein/niri.nix +++ b/nixos/homes/kylekrein/niri.nix @@ -360,4 +360,46 @@ in { RestartSec = 5; }; }; + systemd.user.services.autorotate = lib.mkIf (hwconfig.hasTouchscreen) { + Unit = { + Description = "Adds auto rotation to Niri."; + }; + Install = { + WantedBy = ["default.target"]; + }; + Service = { + ExecStart = "${pkgs.writeShellScript "autorotate" '' + transform="normal" + + monitor-sensor | while read -r line; do + case "$line" in + *normal*) + new_transform="normal" + ;; + *right-up*) + new_transform="270" + ;; + *bottom-up*) + new_transform="180" + ;; + *left-up*) + new_transform="90" + ;; + *) + continue + ;; + esac + + if [[ "$new_transform" != "$transform" ]]; then + transform="$new_transform" + echo "Transform: $transform" + niri msg output eDP-1 transform "$transform" + systemctl --user restart lisgd-niri.service + fi + done + ''}"; + Restart = "on-failure"; + RestartSec = 5; + }; + }; }