hyprland
This commit is contained in:
@@ -14,19 +14,19 @@ with lib;
|
||||
input = mkOption {
|
||||
type = types.str;
|
||||
default = "DP-1";
|
||||
description = "First display identifier";
|
||||
description = "First display identifier (Deprecated: prefer monitorv2)";
|
||||
};
|
||||
|
||||
resolution = mkOption {
|
||||
type = types.str;
|
||||
default = "3840x2160";
|
||||
description = "First display resolution";
|
||||
description = "First display resolution (Deprecated: prefer monitorv2)";
|
||||
};
|
||||
|
||||
refreshRate = mkOption {
|
||||
type = types.str;
|
||||
default = "240.00000";
|
||||
description = "First display refresh rate";
|
||||
description = "First display refresh rate (Deprecated: prefer monitorv2)";
|
||||
};
|
||||
};
|
||||
|
||||
@@ -34,38 +34,104 @@ with lib;
|
||||
input = mkOption {
|
||||
type = types.str;
|
||||
default = "DP-1";
|
||||
description = "Second display identifier";
|
||||
description = "Second display identifier (Deprecated: prefer monitorv2)";
|
||||
};
|
||||
|
||||
resolution = mkOption {
|
||||
type = types.str;
|
||||
default = "3840x2160";
|
||||
description = "Second display resolution";
|
||||
description = "Second display resolution (Deprecated: prefer monitorv2)";
|
||||
};
|
||||
|
||||
refreshRate = mkOption {
|
||||
type = types.str;
|
||||
default = "240.00000";
|
||||
description = "Second display refresh rate";
|
||||
description = "Second display refresh rate (Deprecated: prefer monitorv2)";
|
||||
};
|
||||
};
|
||||
|
||||
# Deprecated: prefer hyprpaper.* options
|
||||
wallpaper = mkOption {
|
||||
type = with types; listOf str;
|
||||
default = [ ];
|
||||
description = "List of hyprland wallpaper configs";
|
||||
description = "Deprecated: no longer used; prefer hyprpaper.wallpaperPath and hyprpaper.usePerMonitor.";
|
||||
};
|
||||
|
||||
hyprpaper = mkOption {
|
||||
type = types.submodule {
|
||||
options = {
|
||||
wallpaperPath = mkOption {
|
||||
type = types.str;
|
||||
default = "/run/wallpaper.jpg";
|
||||
description = "Path to the wallpaper used by hyprpaper.";
|
||||
};
|
||||
usePerMonitor = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = "If true, generate one wallpaper entry per monitor (monitorv2 preferred, falls back to display1/display2).";
|
||||
};
|
||||
};
|
||||
};
|
||||
default = { };
|
||||
description = "Hyprpaper configuration.";
|
||||
};
|
||||
|
||||
monitor = mkOption {
|
||||
type = with types; listOf str;
|
||||
default = [ ];
|
||||
description = "List of hyprland monitor configs";
|
||||
description = "List of Hyprland monitor configs (legacy). Example: [ \"eDP-1, 1920x1080@60, 0x0, 1\" ]";
|
||||
};
|
||||
|
||||
monitorv2 = mkOption {
|
||||
type = with types; listOf str;
|
||||
type =
|
||||
with types;
|
||||
listOf (
|
||||
types.submodule {
|
||||
options = {
|
||||
name = mkOption {
|
||||
type = types.str;
|
||||
description = "Monitor name (e.g., DP-1, eDP-1).";
|
||||
};
|
||||
mode = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
default = null;
|
||||
description = "Resolution@Hz or keyword (e.g., \"3840x2160@144\" or \"preferred\").";
|
||||
};
|
||||
position = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
default = null;
|
||||
description = "Position like \"0x0\" or \"auto\".";
|
||||
};
|
||||
scale = mkOption {
|
||||
type = types.nullOr types.float;
|
||||
default = null;
|
||||
description = "Scale factor (e.g., 1.0).";
|
||||
};
|
||||
transform = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
default = null;
|
||||
description = "Rotation/transform (e.g., \"normal\", \"90\", \"180\", \"270\", \"flipped\").";
|
||||
};
|
||||
disabled = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "Disable this monitor.";
|
||||
};
|
||||
mirrorOf = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
default = null;
|
||||
description = "Mirror another monitor by name.";
|
||||
};
|
||||
extra = mkOption {
|
||||
type = with types; listOf str;
|
||||
default = [ ];
|
||||
description = "Additional monitorv2 flags appended as-is.";
|
||||
};
|
||||
};
|
||||
}
|
||||
);
|
||||
default = [ ];
|
||||
description = "List of hyprland monitorv2 configs";
|
||||
description = "Hyprland monitorv2 entries as structured options; rendered to lines like \"name, mode, position, scale, transform, ...\".";
|
||||
};
|
||||
|
||||
workspace = mkOption {
|
||||
@@ -146,6 +212,110 @@ with lib;
|
||||
description = "Default applications used across the system";
|
||||
};
|
||||
|
||||
autostartCommands = mkOption {
|
||||
type = with types; listOf str;
|
||||
default = [
|
||||
"nwg-look -a"
|
||||
"nwg-dock-hyprland -d"
|
||||
];
|
||||
description = "Commands to run via Hyprland exec-once";
|
||||
};
|
||||
|
||||
launcher = mkOption {
|
||||
type = types.enum [
|
||||
"wofi"
|
||||
"rofi"
|
||||
];
|
||||
default = "wofi";
|
||||
description = "Application launcher to use in keybinds and packages.";
|
||||
};
|
||||
|
||||
notificationDaemon = mkOption {
|
||||
type = types.enum [
|
||||
"mako"
|
||||
"dunst"
|
||||
];
|
||||
default = "mako";
|
||||
description = "Notification daemon to install.";
|
||||
};
|
||||
|
||||
modKey = mkOption {
|
||||
type = types.str;
|
||||
default = "SUPER";
|
||||
description = "Modifier key used for Hyprland binds (e.g., SUPER, ALT).";
|
||||
};
|
||||
|
||||
enableVRR = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = "Enable variable refresh rate (maps to Hyprland misc.vrr).";
|
||||
};
|
||||
|
||||
allowTearing = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = "Allow tearing (maps to Hyprland general.allow_tearing).";
|
||||
};
|
||||
|
||||
debug = mkOption {
|
||||
type = types.submodule {
|
||||
options = {
|
||||
disableLogs = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "Set Hyprland debug.disable_logs.";
|
||||
};
|
||||
fullCmProto = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "Set Hyprland debug.full_cm_proto.";
|
||||
};
|
||||
disableScaleChecks = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "Set Hyprland debug.disable_scale_checks.";
|
||||
};
|
||||
};
|
||||
};
|
||||
default = { };
|
||||
description = "Hyprland debug flags.";
|
||||
};
|
||||
|
||||
keybinds = mkOption {
|
||||
type = types.submodule {
|
||||
options = {
|
||||
bind = mkOption {
|
||||
type = with types; listOf str;
|
||||
default = [ ];
|
||||
description = "Hyprland bind entries.";
|
||||
};
|
||||
bindm = mkOption {
|
||||
type = with types; listOf str;
|
||||
default = [ ];
|
||||
description = "Hyprland bindm entries.";
|
||||
};
|
||||
bindel = mkOption {
|
||||
type = with types; listOf str;
|
||||
default = [ ];
|
||||
description = "Hyprland bindel entries.";
|
||||
};
|
||||
bindl = mkOption {
|
||||
type = with types; listOf str;
|
||||
default = [ ];
|
||||
description = "Hyprland bindl entries.";
|
||||
};
|
||||
};
|
||||
};
|
||||
default = { };
|
||||
description = "Keybinding lists for Hyprland; useful for host-level overrides.";
|
||||
};
|
||||
|
||||
gestures = mkOption {
|
||||
type = with types; listOf str;
|
||||
default = [ ];
|
||||
description = "Hyprland gesture entries.";
|
||||
};
|
||||
|
||||
hyprIdle = {
|
||||
lockScreenTimer = mkOption {
|
||||
type = with types; int;
|
||||
|
||||
Reference in New Issue
Block a user