nix-dotfiles/modules/desktop/monitors.nix

33 lines
1 KiB
Nix

{ lib, config, pkgs, ... }:
with lib;
let
cfg = config.modules.desktop.monitors;
in {
options.modules.desktop.monitors = {
enable = mkEnableOption "Manually configure monitor settings, use if manual configuration is needed";
monitors = mkOption {
type = types.listOf types.attrs;
description = ''
a list of monitor configurations. each entry should be an attribute set with the following keys:
- `name`: The name of the monitor to configure
- `scale`: The scale factor to apply to the monitor
note: the first monitor in the list will be considered the "primary" monitor
'';
example = [
{ name = "eDP-1"; scale = 2.0; }
{ name = "HDMI-1"; scale = 1.0; }
];
};
};
config = mkIf cfg.enable {
hm.programs.niri.settings.outputs = builtins.listToAttrs (builtins.map (monitor: {
name = monitor.name;
value = {
scale = monitor.scale;
background-color = config.modules.desktop.themes.niri.background;
};
}) cfg.monitors);
};
}