{config, pkgs, ...}: {
  # Enable Sway and write some scripts
  wayland.windowManager.sway = {
    config = let
      displays = import ../common/displays.nix;
    in {
      # Define hardware
      output = {
        ${displays.d1} = {
          pos = "1920 405";
          mode = "1920x1080@143.980Hz";
          max_render_time = "3";
          bg = "~/.wallpapers/1.png fill";
          scale = "1";
          adaptive_sync = "on";
        };
        ${displays.d2} = {
          pos = "0 405";
          mode = "1920x1080@60Hz";
          max_render_time = "3";
          bg = "~/.wallpapers/2.png fill";
        };
        ${displays.d3} = {
          pos = "3840 0";
          mode = "1680x1050@59.883Hz";
          transform = "270";
          max_render_time = "3";
          bg = "~/.wallpapers/3.png fill";
        };
        ${displays.dTouch} = {
          #scale = "1.4";
        };
        "*" = {
          bg = "~/.wallpapers/1.png fill";
        };
      };

      # Mouse sensitivity, disable acceleration, allow touch while typing
      input = {
        "9610:4103:SINOWEALTH_Game_Mouse" = {
          pointer_accel = "-0.9";
        };
        "9639:64097:Compx_2.4G_Receiver_Mouse" = {
          pointer_accel = "-0.82";
        };
        "1452:627:bcm5974" = {
          scroll_factor = "0.3";
        };
        "*" = {
          accel_profile = "flat";
          dwt = "disabled";
          natural_scroll = "disabled";
        };

        # Map touchscreen to output
        "1386:806:Wacom_ISDv5_326_Finger" = {
          map_to_output = "${displays.dTouch}";
        };
      };
    };
  };
}
