{ lib, config, ... }: let cfg = config.module.display; in { # REF: https://www.kernel.org/doc/Documentation/fb/fbcon.txt # REF: https://patchwork.kernel.org/project/dri-devel/patch/20191110154101.26486-10-hdegoede@redhat.com/#22993841 config = lib.mkMerge [ # NOTE: `tty` name is special. (lib.mkIf (cfg.rotate != null) { boot.kernelParams = lib.mapAttrsToList (name: rotate: let hint = if rotate == 90 then "left_side_up" else if rotate == 180 then "upside_down" else if rotate == 270 then "right_side_up" else "normal"; value = if rotate == 90 then 1 else if rotate == 180 then 2 else if rotate == 270 then 3 else 0; command = if name == "tty" then "fbcon=rotate:${toString value}" else "video=${name}:rotate=${toString rotate}"; # "video=${name}:panel_orientation=${hint}"; # "video=${name}:rotate=${toString rotate},panel_orientation=${hint}"; in command ) cfg.rotate; module.sway.extraConfig = lib.mapAttrsToList (name: rotate: "output ${name} transform ${toString rotate}" ) cfg.rotate; }) ]; }