nix-home/home/modules/monitors.nix

58 lines
1.5 KiB
Nix
Raw Normal View History

2023-08-31 11:24:39 +00:00
# A monitor list and common sway set up
{ config, pkgs, lib, ... }: with lib;
let
monitors = {
# Internal
2024-01-19 10:36:36 +00:00
"framework" = {
name = "BOE 0x0BCA Unknown";
mode = "2256x1504@60Hz";
scale = 1.25;
};
2023-08-31 11:24:39 +00:00
# External
## Work @ EPFL
"work" = {
name = "LG Electronics LG ULTRAFINE 301MAXSGHD10";
mode = "3840x2160@60Hz";
2023-09-01 08:38:24 +00:00
scale = 1.25;
2023-08-31 11:24:39 +00:00
};
"home_4k" = {
name = "AOC U28G2G6B PPYP2JA000013";
mode = "3840x2160@60Hz";
2023-09-01 08:38:24 +00:00
scale = 1.5;
2023-08-31 11:24:39 +00:00
adaptive_sync = "on";
# render_bit_depth = "10";
};
2023-09-30 22:05:08 +00:00
"home_1440" = {
name = "AOC Q27G2G3R3B VXJP6HA000442";
mode = "2560x1440@165Hz";
2023-08-31 11:24:39 +00:00
adaptive_sync = "on";
};
"viewsonic_1080" = {
name = "ViewSonic Corporation XG2402 SERIES V4K182501054";
mode = "1920x1080@144Hz";
adaptive_sync = "on";
};
};
eachMonitor = _name: monitor: {
name = monitor.name;
2023-09-01 08:38:24 +00:00
value = builtins.removeAttrs monitor [ "scale" "name" ] // (if monitor ? scale then {
scale = toString monitor.scale;
} else { });
2023-08-31 11:24:39 +00:00
};
in
{
options.common.monitors = mkOption {
type = types.attrsOf types.attrs;
description = "A list of monitors";
};
config.common.monitors = monitors;
config.home.packages = mkIf config.wayland.windowManager.sway.enable (with pkgs; [ kanshi ]);
config.wayland.windowManager.sway.config.output = mkIf config.wayland.windowManager.sway.enable (
2023-09-01 08:38:24 +00:00
mapAttrs' eachMonitor config.common.monitors
2023-08-31 11:24:39 +00:00
);
}