NixOS/options/hyprland.nix

109 lines
2.9 KiB
Nix

{ lib, ... }:
let
types = lib.types;
in
{
options.profile.hyprland = {
enable = lib.mkEnableOption "hyperland";
settings = {
monitors = lib.mkOption {
type = with types; listOf str;
default = [ ];
description = ''List of monitors hyprland should manage'';
example = ''[ ",preffered,auto,1" ]'';
};
workspaces = lib.mkOption {
type = with types; listOf str;
default = [ ];
description = ''List of workspaces to create'';
example = ''[ "1,default:true" "2" "3" "4" "5" "6" "7" "8" "9" "10" ]'';
};
};
displayManager = lib.mkOption {
type = lib.types.enum [ "sddm" "tuigreet" ];
default = "tuigreet";
};
swayosd.display = lib.mkOption {
type = lib.types.str;
default = "eDP-1";
};
waybar.persistent-workspaces = lib.mkOption {
type = lib.types.attrs;
default = { };
description = ''List of hyprland workspaces to keep in waybar, in the format of { [monitor] = [workspace] }'';
example = ''
{
DP-1 = [ 1 2 3 4 5 6 7];
DP-1 = [ 8 9 10 ];
}
'';
};
pyprland = {
wallpaper-dirs = lib.mkOption {
type = with types; listOf str;
default = [ ];
description = ''List of directories to search for wallpapers'';
};
};
dunst.monitor = lib.mkOption {
type = lib.types.str;
default = "0";
};
wallust = {
backend = lib.mkOption {
type = lib.types.enum [ "full" "resized" "wal" "thumb" "fastresize" "kmeans" ];
default = "kmeans";
description = "How the image is parse, in order to get the colors";
};
colorSpace = lib.mkOption {
type = lib.types.enum [ "lab" "labmixed" "lch" "lchmixed" ];
default = "lch";
description = "What color space to use to produce and select the most prominent colors";
};
alpha = lib.mkOption {
type = lib.types.int;
default = 100;
};
threshold = lib.mkOption {
type = lib.types.int;
default = 1;
};
palette = lib.mkOption {
type = lib.types.enum [
"dark"
"dark16"
"darkcomp"
"darkcomp16"
"light"
"light16"
"lightcomp"
"lightcomp16"
"harddark"
"harddark16"
"harddarkcomp"
"harddarkcomp16"
"softdark"
"softdark16"
"softdarkcomp"
"softdarkcomp16"
"softlight"
"softlight16"
"softlightcomp"
"softlightcomp16"
];
default = "dark";
description = ''Use the most prominent colors in a way that makes sense. A Scheme color palette.'';
};
checkContrast = lib.mkOption {
type = lib.types.bool;
default = true;
};
};
};
}