feat: use per device monitor configuration
This commit is contained in:
parent
cb0744c298
commit
f2f778891c
6 changed files with 98 additions and 20 deletions
|
@ -5,7 +5,10 @@
|
||||||
config,
|
config,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
lib.mkIf osConfig.programs.hyprland.enable {
|
let
|
||||||
|
inherit (lib) mapAttrsToList mkIf hasAttr;
|
||||||
|
in
|
||||||
|
mkIf osConfig.programs.hyprland.enable {
|
||||||
home.sessionVariables.ELECTRON_OZONE_PLATFORM_HINT = "auto";
|
home.sessionVariables.ELECTRON_OZONE_PLATFORM_HINT = "auto";
|
||||||
|
|
||||||
wayland.windowManager.hyprland = {
|
wayland.windowManager.hyprland = {
|
||||||
|
@ -14,10 +17,15 @@ lib.mkIf osConfig.programs.hyprland.enable {
|
||||||
settings = {
|
settings = {
|
||||||
"$mod" = "SUPER";
|
"$mod" = "SUPER";
|
||||||
|
|
||||||
monitor = [
|
monitor = mapAttrsToList (
|
||||||
"DP-2,1920x1080@144, 0x0, 1"
|
name: value:
|
||||||
"HDMI-A-1,1920x1080@60, 1920x0, 1"
|
let
|
||||||
];
|
inherit (value) resX resY scale;
|
||||||
|
posFinal = "${toString value.posX}x${toString value.posY}";
|
||||||
|
rrFinal = if hasAttr "rr" value then "@${toString value.rr}" else "";
|
||||||
|
in
|
||||||
|
"${name}, ${toString resX}x${toString resY}${rrFinal}, ${posFinal}, ${toString scale}"
|
||||||
|
) osConfig.modules.system.outputs;
|
||||||
|
|
||||||
exec-once = [
|
exec-once = [
|
||||||
"${config.services.kdeconnect.package}/bin/kdeconnect-indicator"
|
"${config.services.kdeconnect.package}/bin/kdeconnect-indicator"
|
||||||
|
@ -51,6 +59,7 @@ lib.mkIf osConfig.programs.hyprland.enable {
|
||||||
input = {
|
input = {
|
||||||
numlock_by_default = true;
|
numlock_by_default = true;
|
||||||
kb_options = "compose:caps";
|
kb_options = "compose:caps";
|
||||||
|
kb_layout = osConfig.console.keyMap;
|
||||||
};
|
};
|
||||||
|
|
||||||
decoration = {
|
decoration = {
|
||||||
|
@ -60,10 +69,12 @@ lib.mkIf osConfig.programs.hyprland.enable {
|
||||||
active_opacity = 1.0;
|
active_opacity = 1.0;
|
||||||
inactive_opacity = 1.0;
|
inactive_opacity = 1.0;
|
||||||
|
|
||||||
drop_shadow = true;
|
shadow = {
|
||||||
shadow_range = 4;
|
enabled = true;
|
||||||
shadow_render_power = 3;
|
range = 4;
|
||||||
"col.shadow" = "rgba(1a1a1aee)";
|
render_power = 3;
|
||||||
|
color = "rgba(1a1a1aee)";
|
||||||
|
};
|
||||||
|
|
||||||
# https://wiki.hyprland.org/Configuring/Variables/#blur
|
# https://wiki.hyprland.org/Configuring/Variables/#blur
|
||||||
blur = {
|
blur = {
|
||||||
|
|
|
@ -6,6 +6,9 @@
|
||||||
osConfig,
|
osConfig,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
|
let
|
||||||
|
inherit (lib) mapAttrs;
|
||||||
|
in
|
||||||
lib.mkIf osConfig.programs.sway.enable {
|
lib.mkIf osConfig.programs.sway.enable {
|
||||||
|
|
||||||
services.swayidle.enable = true;
|
services.swayidle.enable = true;
|
||||||
|
@ -199,14 +202,12 @@ lib.mkIf osConfig.programs.sway.enable {
|
||||||
};
|
};
|
||||||
#: }}}
|
#: }}}
|
||||||
#: Output {{{
|
#: Output {{{
|
||||||
output = {
|
output = mapAttrs (name: value: {
|
||||||
eDP-1 = {
|
scale = toString value.scale;
|
||||||
scale = "2";
|
pos = "${toString value.posX} ${toString value.posY}";
|
||||||
pos = "0 0";
|
res = "${toString value.resX}x${toString value.resY}";
|
||||||
res = "3840x2400";
|
|
||||||
adaptive_sync = "on";
|
adaptive_sync = "on";
|
||||||
};
|
}) osConfig.modules.system.outputs;
|
||||||
};
|
|
||||||
#: }}}
|
#: }}}
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -32,10 +32,24 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
modules = {
|
modules = {
|
||||||
system.networking = {
|
system = {
|
||||||
|
outputs = {
|
||||||
|
"DP-2" = {
|
||||||
|
resX = 1920;
|
||||||
|
resY = 1080;
|
||||||
|
};
|
||||||
|
"HDMI-A-1" = {
|
||||||
|
posX = 1920;
|
||||||
|
resX = 1920;
|
||||||
|
resY = 1080;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
networking = {
|
||||||
wifi.enable = true;
|
wifi.enable = true;
|
||||||
bluetooth.enable = true;
|
bluetooth.enable = true;
|
||||||
};
|
};
|
||||||
|
};
|
||||||
|
|
||||||
services = {
|
services = {
|
||||||
cliphist.enable = true;
|
cliphist.enable = true;
|
||||||
|
@ -81,6 +95,7 @@
|
||||||
firefox.enable = true;
|
firefox.enable = true;
|
||||||
thunderbird.enable = true;
|
thunderbird.enable = true;
|
||||||
sway.enable = true;
|
sway.enable = true;
|
||||||
|
hyprland.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
security.polkit.enable = true;
|
security.polkit.enable = true;
|
||||||
|
|
|
@ -17,6 +17,13 @@
|
||||||
media.enableAll = true;
|
media.enableAll = true;
|
||||||
|
|
||||||
system = {
|
system = {
|
||||||
|
outputs = {
|
||||||
|
eDP-1 = {
|
||||||
|
resX = 3840;
|
||||||
|
resY = 2400;
|
||||||
|
scale = 2.0;
|
||||||
|
};
|
||||||
|
};
|
||||||
networking = {
|
networking = {
|
||||||
bluetooth.enable = true;
|
bluetooth.enable = true;
|
||||||
wifi.enable = true;
|
wifi.enable = true;
|
||||||
|
|
|
@ -2,5 +2,6 @@
|
||||||
imports = [
|
imports = [
|
||||||
./networking
|
./networking
|
||||||
./roles
|
./roles
|
||||||
|
./outputs.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
43
options/system/outputs.nix
Normal file
43
options/system/outputs.nix
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
{ lib, ... }:
|
||||||
|
let
|
||||||
|
inherit (lib) mkOption;
|
||||||
|
inherit (lib.types)
|
||||||
|
attrsOf
|
||||||
|
submodule
|
||||||
|
int
|
||||||
|
float
|
||||||
|
str
|
||||||
|
;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.modules.system.outputs = mkOption {
|
||||||
|
type = attrsOf (
|
||||||
|
submodule (
|
||||||
|
{ name, config, ... }:
|
||||||
|
{
|
||||||
|
options = {
|
||||||
|
name = mkOption {
|
||||||
|
type = str;
|
||||||
|
default = name;
|
||||||
|
};
|
||||||
|
scale = mkOption {
|
||||||
|
type = float;
|
||||||
|
default = 1.0;
|
||||||
|
};
|
||||||
|
posX = mkOption {
|
||||||
|
type = int;
|
||||||
|
default = 0;
|
||||||
|
};
|
||||||
|
posY = mkOption {
|
||||||
|
type = int;
|
||||||
|
default = 0;
|
||||||
|
};
|
||||||
|
resX = mkOption { type = int; };
|
||||||
|
resY = mkOption { type = int; };
|
||||||
|
};
|
||||||
|
}
|
||||||
|
)
|
||||||
|
);
|
||||||
|
default = { };
|
||||||
|
};
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue