nix/option/Style.nix

121 lines
3.8 KiB
Nix
Raw Permalink Normal View History

2024-11-16 04:43:59 +03:00
# Styling like colors, fonts, cursor etc.
{
__findFile,
config,
inputs,
lib,
pkgs,
...
}:
let
cfg = config.module.style;
stylix = config.lib.stylix or config.home-manager.config.lib.stylix;
2024-11-16 04:43:59 +03:00
mkTypeOption = default: type: lib.mkOption { inherit default type; };
mkFloatOption = default: mkTypeOption default lib.types.float;
mkIntOption = default: mkTypeOption default lib.types.int;
mkPkgOption = default: mkTypeOption default lib.types.package;
mkStrOption = default: mkTypeOption default lib.types.str;
in
{
options.module.style = {
color = {
accent = mkStrOption stylix.colors.base0A;
heading = mkStrOption stylix.colors.base0D;
highlight = mkStrOption stylix.colors.base03;
keyword = mkStrOption stylix.colors.base0E;
link = mkStrOption stylix.colors.base09;
misc = mkStrOption stylix.colors.base0F;
negative = mkStrOption stylix.colors.base08;
neutral = mkStrOption stylix.colors.base0C;
positive = mkStrOption stylix.colors.base0B;
selection = mkStrOption stylix.colors.base02;
bg = {
dark = mkStrOption stylix.colors.base00;
light = mkStrOption stylix.colors.base07;
regular = mkStrOption stylix.colors.base01;
};
fg = {
dark = mkStrOption stylix.colors.base04;
light = mkStrOption stylix.colors.base06;
regular = mkStrOption stylix.colors.base05;
};
2024-11-16 04:43:59 +03:00
accentR = mkStrOption stylix.colors.base0A-rgb-r;
accentG = mkStrOption stylix.colors.base0A-rgb-g;
accentB = mkStrOption stylix.colors.base0A-rgb-b;
2024-11-16 04:43:59 +03:00
accentDecR = mkStrOption stylix.colors.base0A-dec-r;
accentDecG = mkStrOption stylix.colors.base0A-dec-g;
accentDecB = mkStrOption stylix.colors.base0A-dec-b;
2024-11-23 07:09:45 +03:00
bgR = mkStrOption stylix.colors.base00-rgb-r;
bgG = mkStrOption stylix.colors.base00-rgb-g;
bgB = mkStrOption stylix.colors.base00-rgb-b;
2024-11-16 04:43:59 +03:00
border = mkStrOption stylix.colors.base01;
borderR = mkStrOption stylix.colors.base01-rgb-r;
borderG = mkStrOption stylix.colors.base01-rgb-g;
borderB = mkStrOption stylix.colors.base01-rgb-b;
2024-11-16 04:43:59 +03:00
negativeR = mkStrOption stylix.colors.base08-rgb-r;
negativeG = mkStrOption stylix.colors.base08-rgb-g;
negativeB = mkStrOption stylix.colors.base08-rgb-b;
2024-11-16 04:43:59 +03:00
neutralR = mkStrOption stylix.colors.base0C-rgb-r;
neutralG = mkStrOption stylix.colors.base0C-rgb-g;
neutralB = mkStrOption stylix.colors.base0C-rgb-b;
2024-11-16 04:43:59 +03:00
positiveR = mkStrOption stylix.colors.base0B-rgb-r;
positiveG = mkStrOption stylix.colors.base0B-rgb-g;
positiveB = mkStrOption stylix.colors.base0B-rgb-b;
2024-11-16 04:43:59 +03:00
transparent = mkStrOption "ffffff00";
};
2024-11-16 04:43:59 +03:00
cursor = {
2024-12-19 22:40:24 +03:00
name = mkStrOption "phinger-cursors-light";
2024-12-19 09:37:14 +03:00
package = mkPkgOption pkgs.phinger-cursors;
2024-12-19 22:40:24 +03:00
size = mkIntOption 24;
};
2024-11-16 04:43:59 +03:00
font = {
emoji = {
name = mkStrOption "Noto Color Emoji";
package = mkPkgOption pkgs.noto-fonts-emoji;
};
monospace = {
name = mkStrOption "Terminess Nerd Font Mono";
package = mkPkgOption (pkgs.nerdfonts.override { fonts = [ "Terminus" ]; });
};
sansSerif = {
name = mkStrOption "SF Pro Display";
package = mkPkgOption (pkgs.callPackage <package/applefont> { });
};
serif = {
name = mkStrOption "SF Pro Display";
package = mkPkgOption (pkgs.callPackage <package/applefont> { });
};
size = {
application = mkIntOption 12;
desktop = mkIntOption 14;
popup = mkIntOption 12;
terminal = mkIntOption 14;
};
};
2024-11-16 04:43:59 +03:00
opacity = {
application = mkFloatOption 0.85;
desktop = mkFloatOption 0.85;
hex = mkStrOption "D9";
popup = mkFloatOption 0.85;
terminal = mkFloatOption 0.85;
};
2024-11-16 04:43:59 +03:00
window = {
border = mkIntOption 4;
gap = mkIntOption 8;
};
};
2024-11-16 04:43:59 +03:00
}