nixos/modules/home-manager/monitors.nix

81 lines
1.8 KiB
Nix
Raw Normal View History

2024-05-11 13:49:12 +01:00
{
lib,
config,
...
}: let
inherit (lib) mkOption types;
cfg = config.monitors;
in {
options.monitors = mkOption {
type = types.listOf (
types.submodule {
options = {
name = mkOption {
type = types.str;
example = "DP-1";
};
primary = mkOption {
type = types.bool;
default = false;
};
width = mkOption {
type = types.int;
example = 1920;
};
height = mkOption {
type = types.int;
example = 1080;
};
refreshRate = mkOption {
type = types.int;
default = 60;
};
x = mkOption {
type = types.int;
default = 0;
};
y = mkOption {
type = types.int;
default = 0;
};
2024-05-30 21:20:39 +01:00
scale = mkOption {
type = types.int;
default = 1;
};
2024-05-31 15:48:46 +01:00
vendor = mkOption {
type = types.str;
default = "";
};
product = mkOption {
type = types.str;
default = "";
};
serial = mkOption {
type = types.str;
default = "";
};
2024-05-11 13:49:12 +01:00
enabled = mkOption {
type = types.bool;
default = true;
};
workspace = mkOption {
type = types.nullOr types.str;
default = null;
};
};
}
);
default = [];
};
config = {
assertions = [
{
assertion =
((lib.length config.monitors) != 0)
-> ((lib.length (lib.filter (m: m.primary) config.monitors)) == 1);
message = "Exactly one monitor must be set to primary.";
}
];
};
}