168 lines
4.2 KiB
Nix
168 lines
4.2 KiB
Nix
{ lib, pkgs, ... }:
|
|
with lib;
|
|
{
|
|
options.mjallen.programs.hyprland = {
|
|
enable = mkEnableOption "enable hyprland";
|
|
|
|
primaryDisplay = mkOption {
|
|
type = types.str;
|
|
default = "DP-1";
|
|
description = "Primary display identifier";
|
|
};
|
|
|
|
display1 = {
|
|
input = mkOption {
|
|
type = types.str;
|
|
default = "DP-1";
|
|
description = "First display identifier";
|
|
};
|
|
|
|
resolution = mkOption {
|
|
type = types.str;
|
|
default = "3840x2160";
|
|
description = "First display resolution";
|
|
};
|
|
|
|
refreshRate = mkOption {
|
|
type = types.str;
|
|
default = "240.00000";
|
|
description = "First display refresh rate";
|
|
};
|
|
};
|
|
|
|
display2 = {
|
|
input = mkOption {
|
|
type = types.str;
|
|
default = "DP-1";
|
|
description = "Second display identifier";
|
|
};
|
|
|
|
resolution = mkOption {
|
|
type = types.str;
|
|
default = "3840x2160";
|
|
description = "Second display resolution";
|
|
};
|
|
|
|
refreshRate = mkOption {
|
|
type = types.str;
|
|
default = "240.00000";
|
|
description = "Second display refresh rate";
|
|
};
|
|
};
|
|
|
|
wallpaper = mkOption {
|
|
type = with types; listOf str;
|
|
default = [ ];
|
|
description = "List of hyprland wallpaper configs";
|
|
};
|
|
|
|
monitor = mkOption {
|
|
type = with types; listOf str;
|
|
default = [ ];
|
|
description = "List of hyprland monitor configs";
|
|
};
|
|
|
|
monitorv2 = mkOption {
|
|
type = with types; listOf str;
|
|
default = [ ];
|
|
description = "List of hyprland monitorv2 configs";
|
|
};
|
|
|
|
workspace = mkOption {
|
|
type = with types; listOf str;
|
|
default = [ ];
|
|
description = "List of hyprland workspace definitions";
|
|
};
|
|
|
|
windowRule = mkOption {
|
|
type = with types; listOf str;
|
|
default = [ ];
|
|
description = "List of hyprland window rules";
|
|
};
|
|
|
|
extraConfig = mkOption {
|
|
type = with types; str;
|
|
default = '''';
|
|
description = "Any extra configuration options";
|
|
};
|
|
|
|
iconThemeName = mkOption {
|
|
type = types.str;
|
|
default = "Colloid-Dark";
|
|
description = "Icon theme name";
|
|
};
|
|
|
|
gtkThemeName = mkOption {
|
|
type = types.str;
|
|
default = "Colloid-Dark";
|
|
description = "GTK theme name";
|
|
};
|
|
|
|
defaultApps = mkOption {
|
|
type = types.submodule {
|
|
options = {
|
|
browser = mkOption {
|
|
type = types.package;
|
|
default = pkgs.firefox;
|
|
description = "Default browser";
|
|
};
|
|
editor = mkOption {
|
|
type = types.package;
|
|
default = pkgs.micro;
|
|
description = "Default text editor";
|
|
};
|
|
fileExplorer = mkOption {
|
|
type = types.package;
|
|
default = pkgs.nemo;
|
|
description = "Default file explorer";
|
|
};
|
|
visual = mkOption {
|
|
type = types.package;
|
|
default = pkgs.vscodium;
|
|
description = "Default visual editor";
|
|
};
|
|
terminal = mkOption {
|
|
type = types.package;
|
|
default = pkgs.kitty;
|
|
description = "Default terminal";
|
|
};
|
|
office = mkOption {
|
|
type = types.package;
|
|
default = pkgs.onlyoffice-bin_latest;
|
|
description = "Default office suite";
|
|
};
|
|
video = mkOption {
|
|
type = types.package;
|
|
default = pkgs.vlc;
|
|
description = "Default video player";
|
|
};
|
|
imageViewer = mkOption {
|
|
type = types.package;
|
|
default = pkgs.nomacs;
|
|
description = "Default image viewer";
|
|
};
|
|
};
|
|
};
|
|
description = "Default applications used across the system";
|
|
};
|
|
|
|
hyprIdle = {
|
|
lockScreenTimer = mkOption {
|
|
type = with types; int;
|
|
default = 300;
|
|
description = "Time in seconds before locking the screen";
|
|
};
|
|
screenOffTimer = mkOption {
|
|
type = with types; int;
|
|
default = 900;
|
|
description = "Time in seconds before turning off the screen";
|
|
};
|
|
suspendTimer = mkOption {
|
|
type = with types; int;
|
|
default = 1800;
|
|
description = "Time in seconds before suspending";
|
|
};
|
|
};
|
|
};
|
|
}
|