2024-06-29 18:05:39 +03:00
|
|
|
{ lib, config, ... }: with lib; let
|
|
|
|
cfg = config.style;
|
|
|
|
|
|
|
|
mkTypeOption = default: type: mkOption { inherit default type; };
|
|
|
|
mkStrOption = default: mkTypeOption default types.str;
|
|
|
|
mkIntOption = default: mkTypeOption default types.int;
|
|
|
|
mkFloatOption = default: mkTypeOption default types.float;
|
2024-06-25 04:04:39 +03:00
|
|
|
in {
|
2024-06-29 18:05:39 +03:00
|
|
|
options.style = {
|
2024-06-29 18:55:41 +03:00
|
|
|
color = {
|
|
|
|
bg = {
|
|
|
|
dark = mkStrOption config.lib.stylix.colors.base00;
|
|
|
|
light = mkStrOption config.lib.stylix.colors.base07;
|
|
|
|
regular = mkStrOption config.lib.stylix.colors.base01;
|
|
|
|
};
|
|
|
|
fg = {
|
|
|
|
dark = mkStrOption config.lib.stylix.colors.base04;
|
|
|
|
light = mkStrOption config.lib.stylix.colors.base06;
|
|
|
|
regular = mkStrOption config.lib.stylix.colors.base05;
|
|
|
|
};
|
|
|
|
accent = mkStrOption config.lib.stylix.colors.base0A;
|
|
|
|
heading = mkStrOption config.lib.stylix.colors.base0D;
|
|
|
|
hl = mkStrOption config.lib.stylix.colors.base03;
|
|
|
|
keyword = mkStrOption config.lib.stylix.colors.base0E;
|
|
|
|
link = mkStrOption config.lib.stylix.colors.base09;
|
|
|
|
misc = mkStrOption config.lib.stylix.colors.base0F;
|
|
|
|
negative = mkStrOption config.lib.stylix.colors.base08;
|
|
|
|
neutral = mkStrOption config.lib.stylix.colors.base0C;
|
|
|
|
positive = mkStrOption config.lib.stylix.colors.base0B;
|
|
|
|
selection = mkStrOption config.lib.stylix.colors.base02;
|
|
|
|
transparent = mkStrOption "ffffff00";
|
2024-06-25 04:04:39 +03:00
|
|
|
|
2024-06-29 18:55:41 +03:00
|
|
|
accent-b = mkStrOption config.lib.stylix.colors.base0A-rgb-b;
|
|
|
|
accent-g = mkStrOption config.lib.stylix.colors.base0A-rgb-g;
|
|
|
|
accent-r = mkStrOption config.lib.stylix.colors.base0A-rgb-r;
|
2024-06-25 04:04:39 +03:00
|
|
|
|
2024-06-29 18:55:41 +03:00
|
|
|
negative-b = mkStrOption config.lib.stylix.colors.base08-rgb-b;
|
|
|
|
negative-g = mkStrOption config.lib.stylix.colors.base08-rgb-g;
|
|
|
|
negative-r = mkStrOption config.lib.stylix.colors.base08-rgb-r;
|
2024-06-25 04:04:39 +03:00
|
|
|
|
2024-06-29 18:55:41 +03:00
|
|
|
neutral-b = mkStrOption config.lib.stylix.colors.base0C-rgb-b;
|
|
|
|
neutral-g = mkStrOption config.lib.stylix.colors.base0C-rgb-g;
|
|
|
|
neutral-r = mkStrOption config.lib.stylix.colors.base0C-rgb-r;
|
2024-06-25 04:04:39 +03:00
|
|
|
|
2024-06-29 18:55:41 +03:00
|
|
|
positive-b = mkStrOption config.lib.stylix.colors.base0B-rgb-b;
|
|
|
|
positive-g = mkStrOption config.lib.stylix.colors.base0B-rgb-g;
|
|
|
|
positive-r = mkStrOption config.lib.stylix.colors.base0B-rgb-r;
|
2024-06-25 04:04:39 +03:00
|
|
|
|
2024-06-29 18:55:41 +03:00
|
|
|
bg-b = mkStrOption config.lib.stylix.colors.base00-rgb-b;
|
|
|
|
bg-g = mkStrOption config.lib.stylix.colors.base00-rgb-g;
|
|
|
|
bg-r = mkStrOption config.lib.stylix.colors.base00-rgb-r;
|
2024-06-25 04:04:39 +03:00
|
|
|
|
2024-06-29 18:55:41 +03:00
|
|
|
fg-b = mkStrOption config.lib.stylix.colors.base06-rgb-b;
|
|
|
|
fg-g = mkStrOption config.lib.stylix.colors.base06-rgb-g;
|
|
|
|
fg-r = mkStrOption config.lib.stylix.colors.base06-rgb-r;
|
2024-06-25 04:04:39 +03:00
|
|
|
|
2024-06-29 18:55:41 +03:00
|
|
|
border = mkStrOption config.lib.stylix.colors.base01;
|
|
|
|
border-b = mkStrOption config.lib.stylix.colors.base01-rgb-b;
|
|
|
|
border-g = mkStrOption config.lib.stylix.colors.base01-rgb-g;
|
|
|
|
border-r = mkStrOption config.lib.stylix.colors.base01-rgb-r;
|
|
|
|
};
|
2024-06-25 04:04:39 +03:00
|
|
|
|
2024-06-29 18:55:41 +03:00
|
|
|
font = {
|
|
|
|
emoji.name = mkStrOption config.stylix.fonts.emoji.name;
|
|
|
|
monospace.name = mkStrOption config.stylix.fonts.monospace.name;
|
|
|
|
sansSerif.name = mkStrOption config.stylix.fonts.sansSerif.name;
|
|
|
|
serif.name = mkStrOption config.stylix.fonts.serif.name;
|
|
|
|
size = {
|
|
|
|
terminal = mkIntOption config.stylix.fonts.sizes.terminal;
|
|
|
|
popup = mkIntOption config.stylix.fonts.sizes.popups;
|
|
|
|
application = mkIntOption config.stylix.fonts.sizes.applications;
|
|
|
|
desktop = mkIntOption config.stylix.fonts.sizes.desktop;
|
2024-06-25 04:04:39 +03:00
|
|
|
};
|
2024-06-29 18:55:41 +03:00
|
|
|
};
|
2024-06-25 04:04:39 +03:00
|
|
|
|
2024-06-29 18:55:41 +03:00
|
|
|
opacity = {
|
|
|
|
application = mkFloatOption config.stylix.opacity.applications;
|
|
|
|
desktop = mkFloatOption config.stylix.opacity.desktop;
|
|
|
|
popup = mkFloatOption config.stylix.opacity.popups;
|
|
|
|
terminal = mkFloatOption config.stylix.opacity.terminal;
|
|
|
|
hex = mkStrOption "D9";
|
|
|
|
};
|
2024-06-25 04:04:39 +03:00
|
|
|
|
2024-06-29 18:55:41 +03:00
|
|
|
window = {
|
|
|
|
gap = mkIntOption 8;
|
|
|
|
border = mkIntOption 4;
|
2024-06-25 04:04:39 +03:00
|
|
|
};
|
|
|
|
};
|
|
|
|
}
|