From 7ffb31da698511030f17ddc94c92c59be1a30b2c Mon Sep 17 00:00:00 2001 From: awwpotato Date: Fri, 23 May 2025 10:23:39 -0700 Subject: [PATCH] treewide: use mkTarget (batch 2) (#1362) Link: https://github.com/nix-community/stylix/pull/1362 Reviewed-by: Flameopathic <64027365+Flameopathic@users.noreply.github.com> Reviewed-by: NAHO <90870942+trueNAHO@users.noreply.github.com> --- modules/bemenu/hm.nix | 42 ++- modules/dunst/hm.nix | 78 ++--- modules/fcitx5/hm.nix | 43 +-- modules/feh/hm.nix | 46 ++- modules/fnott/hm.nix | 83 +++--- modules/fuzzel/hm.nix | 38 +-- modules/fzf/hm.nix | 41 +-- modules/ghostty/hm.nix | 105 +++---- modules/glance/hm.nix | 30 +- modules/glance/nixos.nix | 31 +- modules/glance/rgb-to-hsl.nix | 8 +- modules/hyprpaper/hm.nix | 26 +- modules/k9s/hm.nix | 19 +- modules/kitty/hm.nix | 64 +++-- modules/kmscon/nixos.nix | 33 ++- modules/kubecolor/hm.nix | 151 +++++----- modules/lightdm/nixos.nix | 25 +- modules/mako/hm.nix | 78 ++--- modules/mangohud/hm.nix | 84 +++--- modules/micro/hm.nix | 14 +- modules/nushell/hm.nix | 88 +++--- modules/qutebrowser/hm.nix | 524 +++++++++++++++++----------------- modules/spotify-player/hm.nix | 70 +++-- modules/starship/hm.nix | 128 ++++----- modules/swaync/hm.nix | 55 ++-- modules/sxiv/hm.nix | 36 ++- modules/tmux/hm.nix | 33 ++- modules/tofi/hm.nix | 83 +++--- modules/wob/hm.nix | 30 +- modules/wofi/hm.nix | 86 +++--- modules/wpaperd/hm.nix | 66 ++--- modules/yazi/hm.nix | 267 +++++++++-------- modules/zathura/hm.nix | 88 +++--- 33 files changed, 1355 insertions(+), 1238 deletions(-) diff --git a/modules/bemenu/hm.nix b/modules/bemenu/hm.nix index bd1384ed..cf91e604 100644 --- a/modules/bemenu/hm.nix +++ b/modules/bemenu/hm.nix @@ -1,8 +1,14 @@ -{ config, lib, ... }: { - options.stylix.targets.bemenu = { - enable = config.lib.stylix.mkEnableTarget "bemenu" true; + mkTarget, + lib, + config, + ... +}: +mkTarget { + name = "bemenu"; + humanName = "bemenu"; + extraOptions = { fontSize = lib.mkOption { description = '' Font size used for bemenu. @@ -20,15 +26,26 @@ }; }; - config = - lib.mkIf (config.stylix.enable && config.stylix.targets.bemenu.enable) + configElements = [ + ( + { cfg, fonts }: + { + programs.bemenu.settings = { + # Font name + fn = "${fonts.sansSerif.name} ${ + lib.optionalString (cfg.fontSize != null) (builtins.toString cfg.fontSize) + }"; + }; + } + ) + ( + { colors, opacity }: { programs.bemenu.settings = - with config.lib.stylix.colors.withHashtag; + with colors.withHashtag; let - inherit (config.stylix.targets.bemenu) alternate fontSize; bemenuOpacity = lib.toHexString ( - ((builtins.ceil (config.stylix.opacity.popups * 100)) * 255) / 100 + ((builtins.ceil (opacity.popups * 100)) * 255) / 100 ); in { @@ -48,11 +65,8 @@ ab = "${if alternate then base00 else base01}"; # Alternate bg af = "${if alternate then base04 else base05}"; # Alternate fg - - # Font name - fn = "${config.stylix.fonts.sansSerif.name} ${ - lib.optionalString (fontSize != null) (builtins.toString fontSize) - }"; }; - }; + } + ) + ]; } diff --git a/modules/dunst/hm.nix b/modules/dunst/hm.nix index fbeb50b0..d9a835a9 100644 --- a/modules/dunst/hm.nix +++ b/modules/dunst/hm.nix @@ -1,40 +1,50 @@ -{ config, lib, ... }: -{ - options.stylix.targets.dunst.enable = - config.lib.stylix.mkEnableTarget "Dunst" true; +{ mkTarget, lib, ... }: +mkTarget { + name = "dunst"; + humanName = "Dunst"; - config = lib.mkIf (config.stylix.enable && config.stylix.targets.dunst.enable) { - services.dunst.settings = - with config.lib.stylix.colors.withHashtag; - let - inherit (config.stylix) fonts; - dunstOpacity = lib.toHexString ( - ((builtins.floor (config.stylix.opacity.popups * 100 + 0.5)) * 255) / 100 - ); - in + configElements = [ + ( + { fonts }: { - global = { - separator_color = base02; - font = "${fonts.sansSerif.name} ${toString fonts.sizes.popups}"; - }; + services.dunst.settings.global.font = + "${fonts.sansSerif.name} ${toString fonts.sizes.popups}"; + } + ) + ( + { colors, opacity }: + { + services.dunst.settings = + with colors.withHashtag; + let + dunstOpacity = lib.toHexString ( + ((builtins.floor (opacity.popups * 100 + 0.5)) * 255) / 100 + ); + in + { + global = { + separator_color = base02; + }; - urgency_low = { - background = base01 + dunstOpacity; - foreground = base05; - frame_color = base0B; - }; + urgency_low = { + background = base01 + dunstOpacity; + foreground = base05; + frame_color = base0B; + }; - urgency_normal = { - background = base01 + dunstOpacity; - foreground = base05; - frame_color = base0E; - }; + urgency_normal = { + background = base01 + dunstOpacity; + foreground = base05; + frame_color = base0E; + }; - urgency_critical = { - background = base01 + dunstOpacity; - foreground = base05; - frame_color = base08; - }; - }; - }; + urgency_critical = { + background = base01 + dunstOpacity; + foreground = base05; + frame_color = base08; + }; + }; + } + ) + ]; } diff --git a/modules/fcitx5/hm.nix b/modules/fcitx5/hm.nix index aa73fae4..a31096fd 100644 --- a/modules/fcitx5/hm.nix +++ b/modules/fcitx5/hm.nix @@ -1,40 +1,45 @@ -{ - config, - lib, - ... -}: -{ - options.stylix.targets.fcitx5.enable = - config.lib.stylix.mkEnableTarget "fcitx5" true; +{ mkTarget, ... }: +mkTarget { + name = "fcitx5"; + humanName = "fcitx5"; - config = - lib.mkIf (config.stylix.enable && config.stylix.targets.fcitx5.enable) + configElements = [ + ( + { fonts }: + { + i18n.inputMethod.fcitx5.settings.addons.classicui.globalSection = with fonts; { + Font = "${sansSerif.name} ${toString sizes.popups}"; + MenuFont = "${sansSerif.name} ${toString sizes.popups}"; + TrayFont = "${sansSerif.name} ${toString sizes.popups}"; + }; + } + ) + ( + { colors }: { i18n.inputMethod.fcitx5 = { - settings.addons.classicui.globalSection = with config.stylix.fonts; { + settings.addons.classicui.globalSection = { Theme = "stylix"; UseDarkTheme = false; UseAccentColor = false; - - Font = "${sansSerif.name} ${toString sizes.popups}"; - MenuFont = "${sansSerif.name} ${toString sizes.popups}"; - TrayFont = "${sansSerif.name} ${toString sizes.popups}"; }; themes.stylix = { # Adapted from https://github.com/sanweiya/fcitx5-mellow-themes under the BSD 2 license (compatible with this project's license (MIT)) # Copyright (c) 2024, sanweiya - highlightImage = config.lib.stylix.colors { + highlightImage = colors { template = ./highlight.svg.mustache; extension = ".svg"; }; - panelImage = config.lib.stylix.colors { + panelImage = colors { template = ./panel.svg.mustache; extension = ".svg"; }; theme = import ./template.nix { - colors = config.lib.stylix.colors.withHashtag; + colors = colors.withHashtag; }; }; }; - }; + } + ) + ]; } diff --git a/modules/feh/hm.nix b/modules/feh/hm.nix index 212bad35..5c028991 100644 --- a/modules/feh/hm.nix +++ b/modules/feh/hm.nix @@ -1,36 +1,26 @@ { + mkTarget, + lib, pkgs, config, - lib, ... }: -let - cfg = config.stylix.targets.feh; -in -{ - options.stylix.targets.feh = { - enable = config.lib.stylix.mkEnableTarget "the desktop background using Feh" ( - config.stylix.image != null - ); - }; +mkTarget { + name = "feh"; + humanName = "the desktop background using Feh"; + autoEnable = + with config.xsession.windowManager; + bspwm.enable + || herbstluftwm.enable + || i3.enable + || spectrwm.enable + || xmonad.enable; - config.xsession.initExtra = - lib.mkIf - ( - config.stylix.enable - && cfg.enable - && ( - with config.xsession.windowManager; - bspwm.enable - || herbstluftwm.enable - || i3.enable - || spectrwm.enable - || xmonad.enable - ) - ) - ( + configElements = + { imageScalingMode, image }: + { + xsession.initExtra = let - inherit (config.stylix) imageScalingMode; bg-arg = if imageScalingMode == "fill" then "--bg-fill" @@ -44,6 +34,6 @@ in else "--bg-max"; in - "${lib.getExe pkgs.feh} --no-fehbg ${bg-arg} ${config.stylix.image}" - ); + "${lib.getExe pkgs.feh} --no-fehbg ${bg-arg} ${image}"; + }; } diff --git a/modules/fnott/hm.nix b/modules/fnott/hm.nix index c351b78f..1ff9f338 100644 --- a/modules/fnott/hm.nix +++ b/modules/fnott/hm.nix @@ -1,39 +1,52 @@ -{ lib, config, ... }: -{ - options.stylix.targets.fnott.enable = - config.lib.stylix.mkEnableTarget "Fnott" true; +{ mkTarget, lib, ... }: +mkTarget { + name = "fnott"; + humanName = "Fnott"; - config.services.fnott.settings = - lib.mkIf (config.stylix.enable && config.stylix.targets.fnott.enable) - ( - let - font = "${config.stylix.fonts.sansSerif.name}:size=${toString config.stylix.fonts.sizes.popups}"; - fg = c: "${c}ff"; - bg = - c: - "${c}${ - lib.toHexString ( - ((builtins.floor (config.stylix.opacity.popups * 100 + 0.5)) * 255) / 100 - ) - }"; - in - with config.lib.stylix.colors; - { - main = { - title-font = font; - summary-font = font; - body-font = font; - - title-color = fg base05; - summary-color = fg base05; - body-color = fg base05; - progress-bar-color = fg base02; - background = bg base00; + configElements = [ + ( + { fonts }: + { + services.fnott.settings = + let + font = "${fonts.sansSerif.name}:size=${toString fonts.sizes.popups}"; + in + { + main = { + title-font = font; + summary-font = font; + body-font = font; + }; }; + } + ) + ( + { colors, opacity }: + { + services.fnott.settings = + let + fg = c: "${c}ff"; + bg = + c: + "${c}${ + lib.toHexString (((builtins.floor (opacity.popups * 100 + 0.5)) * 255) / 100) + }"; + in + with colors; + { + main = { + title-color = fg base05; + summary-color = fg base05; + body-color = fg base05; + progress-bar-color = fg base02; + background = bg base00; + }; - low.border-color = fg base0B; - normal.border-color = fg base0E; - critical.border-color = fg base08; - } - ); + low.border-color = fg base0B; + normal.border-color = fg base0E; + critical.border-color = fg base08; + }; + } + ) + ]; } diff --git a/modules/fuzzel/hm.nix b/modules/fuzzel/hm.nix index b141c761..dc84b6ca 100644 --- a/modules/fuzzel/hm.nix +++ b/modules/fuzzel/hm.nix @@ -1,16 +1,24 @@ -{ config, lib, ... }: -let - opacity = lib.toHexString (builtins.ceil (config.stylix.opacity.popups * 255)); -in -{ - options.stylix.targets.fuzzel.enable = - config.lib.stylix.mkEnableTarget "Fuzzel" true; +{ mkTarget, lib, ... }: +mkTarget { + name = "fuzzel"; + humanName = "Fuzzel"; - config.programs.fuzzel.settings = - lib.mkIf (config.stylix.enable && config.stylix.targets.fuzzel.enable) + configElements = [ + ( + { fonts }: { - colors = with config.lib.stylix.colors; { - background = "${base00-hex}${opacity}"; + programs.fuzzel.settings.main.font = + "${fonts.sansSerif.name}:size=${toString fonts.sizes.popups}"; + } + ) + ( + { colors, opacity }: + let + opacity' = lib.toHexString (builtins.ceil (opacity.popups * 255)); + in + { + programs.fuzzel.settings.colors = with colors; { + background = "${base00-hex}${opacity'}"; text = "${base05-hex}ff"; placeholder = "${base03-hex}ff"; prompt = "${base05-hex}ff"; @@ -22,9 +30,7 @@ in counter = "${base06-hex}ff"; border = "${base0D-hex}ff"; }; - - main = { - font = "${config.stylix.fonts.sansSerif.name}:size=${toString config.stylix.fonts.sizes.popups}"; - }; - }; + } + ) + ]; } diff --git a/modules/fzf/hm.nix b/modules/fzf/hm.nix index 28ca4c5c..08df42e2 100644 --- a/modules/fzf/hm.nix +++ b/modules/fzf/hm.nix @@ -1,23 +1,24 @@ -{ config, lib, ... }: -{ - options.stylix.targets.fzf = { - enable = config.lib.stylix.mkEnableTarget "Fzf" true; - }; +{ mkTarget, ... }: +mkTarget { + name = "fzf"; + humanName = "Fzf"; - config = lib.mkIf (config.stylix.enable && config.stylix.targets.fzf.enable) { - programs.fzf.colors = with config.lib.stylix.colors.withHashtag; { - "bg" = base00; - "bg+" = base01; - "fg" = base04; - "fg+" = base06; - "header" = base0D; - "hl" = base0D; - "hl+" = base0D; - "info" = base0A; - "marker" = base0C; - "pointer" = base0C; - "prompt" = base0A; - "spinner" = base0C; + configElements = + { colors }: + { + programs.fzf.colors = with colors.withHashtag; { + "bg" = base00; + "bg+" = base01; + "fg" = base04; + "fg+" = base06; + "header" = base0D; + "hl" = base0D; + "hl+" = base0D; + "info" = base0A; + "marker" = base0C; + "pointer" = base0C; + "prompt" = base0A; + "spinner" = base0C; + }; }; - }; } diff --git a/modules/ghostty/hm.nix b/modules/ghostty/hm.nix index 1b14f22c..f4a1668d 100644 --- a/modules/ghostty/hm.nix +++ b/modules/ghostty/hm.nix @@ -1,58 +1,65 @@ # Documentation is available at: # - https://ghostty.org/docs/config/reference # - `man 5 ghostty` -{ config, lib, ... }: -{ - options.stylix.targets.ghostty.enable = - config.lib.stylix.mkEnableTarget "Ghostty" true; +{ mkTarget, ... }: +mkTarget { + name = "ghostty"; + humanName = "Ghostty"; - config = - lib.mkIf (config.stylix.enable && config.stylix.targets.ghostty.enable) + configElements = [ + ( + { fonts }: + { + programs.ghostty.settings = { + font-family = [ + fonts.monospace.name + fonts.emoji.name + ]; + font-size = fonts.sizes.terminal; + }; + } + ) + ( + { opacity }: + { + programs.ghostty.settings = { + background-opacity = opacity.terminal; + }; + } + ) + ( + { colors }: { programs.ghostty = { - settings = - let - inherit (config.stylix) fonts opacity; - in - { - theme = "stylix"; - font-family = [ - fonts.monospace.name - fonts.emoji.name - ]; - font-size = fonts.sizes.terminal; - background-opacity = opacity.terminal; - }; - themes.stylix = - let - inherit (config.lib.stylix) colors; - in - { - background = colors.base00; - foreground = colors.base05; - cursor-color = colors.base05; - selection-background = colors.base02; - selection-foreground = colors.base05; + settings.theme = "stylix"; + themes.stylix = { + background = colors.base00; + foreground = colors.base05; + cursor-color = colors.base05; + selection-background = colors.base02; + selection-foreground = colors.base05; - palette = with colors.withHashtag; [ - "0=${base00}" - "1=${base08}" - "2=${base0B}" - "3=${base0A}" - "4=${base0D}" - "5=${base0E}" - "6=${base0C}" - "7=${base05}" - "8=${base03}" - "9=${base08}" - "10=${base0B}" - "11=${base0A}" - "12=${base0D}" - "13=${base0E}" - "14=${base0C}" - "15=${base07}" - ]; - }; + palette = with colors.withHashtag; [ + "0=${base00}" + "1=${base08}" + "2=${base0B}" + "3=${base0A}" + "4=${base0D}" + "5=${base0E}" + "6=${base0C}" + "7=${base05}" + "8=${base03}" + "9=${base08}" + "10=${base0B}" + "11=${base0A}" + "12=${base0D}" + "13=${base0E}" + "14=${base0C}" + "15=${base07}" + ]; + }; }; - }; + } + ) + ]; } diff --git a/modules/glance/hm.nix b/modules/glance/hm.nix index ce9cb856..6448d12b 100644 --- a/modules/glance/hm.nix +++ b/modules/glance/hm.nix @@ -1,21 +1,29 @@ -{ config, lib, ... }: -let - rgb-to-hsl = import ./rgb-to-hsl.nix { inherit lib config; }; -in -{ - options.stylix.targets.glance.enable = - config.lib.stylix.mkEnableTarget "Glance" true; +{ mkTarget, lib, ... }: +mkTarget { + name = "glance"; + humanName = "Glance"; - config = - lib.mkIf (config.stylix.enable && config.stylix.targets.glance.enable) + configElements = [ + ( + { polarity }: + { + services.glance.settings.theme.light = polarity == "light"; + } + ) + ( + { colors }: + let + rgb-to-hsl = import ./rgb-to-hsl.nix { inherit lib colors; }; + in { services.glance.settings.theme = { - light = config.stylix.polarity == "light"; contrast-multiplier = 1.0; background-color = rgb-to-hsl "base00"; primary-color = rgb-to-hsl "base05"; positive-color = rgb-to-hsl "base01"; negative-color = rgb-to-hsl "base04"; }; - }; + } + ) + ]; } diff --git a/modules/glance/nixos.nix b/modules/glance/nixos.nix index 31805b21..6448d12b 100644 --- a/modules/glance/nixos.nix +++ b/modules/glance/nixos.nix @@ -1,22 +1,29 @@ -{ config, lib, ... }: +{ mkTarget, lib, ... }: +mkTarget { + name = "glance"; + humanName = "Glance"; -let - rgb-to-hsl = import ./rgb-to-hsl.nix { inherit lib config; }; -in -{ - options.stylix.targets.glance.enable = - config.lib.stylix.mkEnableTarget "Glance" true; - - config = - lib.mkIf (config.stylix.enable && config.stylix.targets.glance.enable) + configElements = [ + ( + { polarity }: + { + services.glance.settings.theme.light = polarity == "light"; + } + ) + ( + { colors }: + let + rgb-to-hsl = import ./rgb-to-hsl.nix { inherit lib colors; }; + in { services.glance.settings.theme = { - light = config.stylix.polarity == "light"; contrast-multiplier = 1.0; background-color = rgb-to-hsl "base00"; primary-color = rgb-to-hsl "base05"; positive-color = rgb-to-hsl "base01"; negative-color = rgb-to-hsl "base04"; }; - }; + } + ) + ]; } diff --git a/modules/glance/rgb-to-hsl.nix b/modules/glance/rgb-to-hsl.nix index 13b678d9..cb44c004 100644 --- a/modules/glance/rgb-to-hsl.nix +++ b/modules/glance/rgb-to-hsl.nix @@ -1,9 +1,9 @@ -{ lib, config, ... }: +{ lib, colors, ... }: color: let - r = ((lib.toInt config.lib.stylix.colors."${color}-rgb-r") * 100.0) / 255; - g = ((lib.toInt config.lib.stylix.colors."${color}-rgb-g") * 100.0) / 255; - b = ((lib.toInt config.lib.stylix.colors."${color}-rgb-b") * 100.0) / 255; + r = ((lib.toInt colors."${color}-rgb-r") * 100.0) / 255; + g = ((lib.toInt colors."${color}-rgb-g") * 100.0) / 255; + b = ((lib.toInt colors."${color}-rgb-b") * 100.0) / 255; max = lib.max r (lib.max g b); min = lib.min r (lib.min g b); delta = max - min; diff --git a/modules/hyprpaper/hm.nix b/modules/hyprpaper/hm.nix index 1bf17a97..f088a3ed 100644 --- a/modules/hyprpaper/hm.nix +++ b/modules/hyprpaper/hm.nix @@ -1,18 +1,14 @@ -{ config, lib, ... }: -let - cfg = config.stylix.targets.hyprpaper; -in -{ - options.stylix.targets.hyprpaper = { - enable = config.lib.stylix.mkEnableTarget "Hyprpaper" ( - config.stylix.image != null - ); - }; +{ mkTarget, ... }: +mkTarget { + name = "hyprpaper"; + humanName = "Hyprpaper"; - config = lib.mkIf (config.stylix.enable && cfg.enable) { - services.hyprpaper.settings = { - preload = [ "${config.stylix.image}" ]; - wallpaper = [ ",${config.stylix.image}" ]; + configElements = + { image }: + { + services.hyprpaper.settings = { + preload = [ "${image}" ]; + wallpaper = [ ",${image}" ]; + }; }; - }; } diff --git a/modules/k9s/hm.nix b/modules/k9s/hm.nix index 7ab695c0..574fb54b 100644 --- a/modules/k9s/hm.nix +++ b/modules/k9s/hm.nix @@ -1,14 +1,12 @@ -{ - config, - lib, - ... -}: -{ - options.stylix.targets.k9s.enable = config.lib.stylix.mkEnableTarget "k9s" true; +{ mkTarget, ... }: +mkTarget { + name = "k9s"; + humanName = "k9s"; - config = lib.mkIf (config.stylix.enable && config.stylix.targets.k9s.enable) { - programs.k9s.skins.skin = { - k9s = with config.lib.stylix.colors.withHashtag; { + configElements = + { colors }: + { + programs.k9s.skins.skin.k9s = with colors.withHashtag; { body = { fgColor = base05; bgColor = "default"; @@ -130,5 +128,4 @@ }; }; }; - }; } diff --git a/modules/kitty/hm.nix b/modules/kitty/hm.nix index 271d2c9c..573d1985 100644 --- a/modules/kitty/hm.nix +++ b/modules/kitty/hm.nix @@ -1,16 +1,9 @@ -{ config, lib, ... }: - -let - cfg = config.stylix.targets.kitty; - theme = config.lib.stylix.colors { - templateRepo = config.stylix.inputs.tinted-kitty; - target = if cfg.variant256Colors then "base16-256-deprecated" else "base16"; - }; -in -{ - options.stylix.targets.kitty = { - enable = config.lib.stylix.mkEnableTarget "Kitty" true; +{ mkTarget, lib, ... }: +mkTarget { + name = "kitty"; + humanName = "Kitty"; + extraOptions = { variant256Colors = lib.mkOption { description = '' Whether to use the [256-color variant](https://github.com/kdrag0n/base16-kitty#256-color-variants) @@ -21,16 +14,39 @@ in }; }; - config = lib.mkIf (config.stylix.enable && cfg.enable) { - programs.kitty = { - font = { - inherit (config.stylix.fonts.monospace) package name; - size = config.stylix.fonts.sizes.terminal; - }; - settings.background_opacity = "${builtins.toString config.stylix.opacity.terminal}"; - extraConfig = '' - include ${theme} - ''; - }; - }; + configElements = [ + ( + { fonts }: + { + programs.kitty.font = { + inherit (fonts.monospace) package name; + size = fonts.sizes.terminal; + }; + } + ) + ( + { opacity }: + { + programs.kitty.settings.background_opacity = toString opacity.terminal; + } + ) + ( + { + cfg, + colors, + inputs, + }: + let + theme = colors { + templateRepo = inputs.tinted-kitty; + target = if cfg.variant256Colors then "base16-256-deprecated" else "base16"; + }; + in + { + programs.kitty.extraConfig = '' + include ${theme} + ''; + } + ) + ]; } diff --git a/modules/kmscon/nixos.nix b/modules/kmscon/nixos.nix index c9ab88c0..83c6f6b2 100644 --- a/modules/kmscon/nixos.nix +++ b/modules/kmscon/nixos.nix @@ -1,24 +1,31 @@ -{ config, lib, ... }: -{ - options.stylix.targets.kmscon.enable = - config.lib.stylix.mkEnableTarget "the kmscon virtual console" true; +{ mkTarget, ... }: +mkTarget { + name = "kmscon"; + humanName = "the kmscon virtual console"; - config.services.kmscon = - lib.mkIf (config.stylix.enable && config.stylix.targets.kmscon.enable) + configElements = [ + ( + { fonts }: { - fonts = [ config.stylix.fonts.monospace ]; - extraConfig = + services.kmscon = { + fonts = [ fonts.monospace ]; + extraConfig = "font-size=${toString fonts.sizes.terminal}"; + }; + } + ) + ( + { colors }: + { + services.kmscon.extraConfig = let formatBase = name: let - getComponent = comp: config.lib.stylix.colors."${name}-rgb-${comp}"; + getComponent = comp: colors."${name}-rgb-${comp}"; in "${getComponent "r"},${getComponent "g"},${getComponent "b"}"; in '' - font-size=${builtins.toString config.stylix.fonts.sizes.terminal} - palette=custom palette-black=${formatBase "base00"} @@ -41,5 +48,7 @@ palette-background=${formatBase "base00"} palette-foreground=${formatBase "base05"} ''; - }; + } + ) + ]; } diff --git a/modules/kubecolor/hm.nix b/modules/kubecolor/hm.nix index 64d878fa..0670526c 100644 --- a/modules/kubecolor/hm.nix +++ b/modules/kubecolor/hm.nix @@ -1,77 +1,82 @@ -{ config, lib, ... }: -let - cfg = config.stylix.targets.kubecolor; -in -{ - options.stylix.targets.kubecolor.enable = - config.lib.stylix.mkEnableTarget "kubecolor" true; +{ mkTarget, ... }: +mkTarget { + name = "kubecolor"; + humanName = "kubecolor"; - config = lib.mkIf (config.stylix.enable && cfg.enable) { - programs.kubecolor.settings = { - preset = - if config.stylix.polarity == "either" then "" else "${config.stylix.polarity}"; - theme = with config.lib.stylix.colors.withHashtag; { - base = { - info = "fg=${base05-hex}"; - primary = "fg=${base0E-hex}"; - secondary = "fg=${base0D-hex}"; - success = "fg=${base0B-hex}:bold"; - warning = "fg=${base0A-hex}:bold"; - danger = "fg=${base08-hex}:bold"; - muted = "fg=${base04-hex}"; - key = "fg=${base07-hex}:bold"; - }; - default = "fg=${base05-hex}"; - data = { - key = "fg=${base07-hex}:bold"; - string = "fg=${base05-hex}"; - true = "fg=${base0B-hex}:bold"; - false = "fg=${base08-hex}:bold"; - number = "fg=${base0E-hex}"; - null = "fg=${base04-hex}"; - quantity = "fg=${base0E-hex}"; - duration = "fg=${base09-hex}"; - durationfresh = "fg=${base0B-hex}"; - ratio = { - zero = "fg=${base04-hex}"; - equal = "fg=${base0B-hex}"; - unequal = "fg=${base0A-hex}"; + configElements = [ + ( + { polarity }: + { + programs.kubecolor.settings.preset = + if polarity == "either" then "" else polarity; + } + ) + ( + { colors }: + { + programs.kubecolor.settings.theme = with colors.withHashtag; { + base = { + info = "fg=${base05-hex}"; + primary = "fg=${base0E-hex}"; + secondary = "fg=${base0D-hex}"; + success = "fg=${base0B-hex}:bold"; + warning = "fg=${base0A-hex}:bold"; + danger = "fg=${base08-hex}:bold"; + muted = "fg=${base04-hex}"; + key = "fg=${base07-hex}:bold"; + }; + default = "fg=${base05-hex}"; + data = { + key = "fg=${base07-hex}:bold"; + string = "fg=${base05-hex}"; + true = "fg=${base0B-hex}:bold"; + false = "fg=${base08-hex}:bold"; + number = "fg=${base0E-hex}"; + null = "fg=${base04-hex}"; + quantity = "fg=${base0E-hex}"; + duration = "fg=${base09-hex}"; + durationfresh = "fg=${base0B-hex}"; + ratio = { + zero = "fg=${base04-hex}"; + equal = "fg=${base0B-hex}"; + unequal = "fg=${base0A-hex}"; + }; + }; + status = { + success = "fg=${base0B-hex}:bold"; + warning = "fg=${base0A-hex}:bold"; + error = "fg=${base08-hex}:bold"; + }; + table = { + header = "fg=${base05-hex}:bold"; + columns = "fg=${base05-hex}"; + }; + stderr = { + default = "fg=${base05-hex}"; + error = "fg=${base08-hex}:bold"; + }; + describe = { + key = "fg=${base07-hex}:bold"; + }; + apply = { + created = "fg=${base0B-hex}"; + configured = "fg=${base0A-hex}"; + unchanged = "fg=${base05-hex}"; + dryrun = "fg=${base0D-hex}"; + fallback = "fg=${base05-hex}"; + }; + explain = { + key = "fg=${base07-hex}:bold"; + required = "fg=${base00-hex}:bold"; + }; + options = { + flag = "fg=${base07-hex}:bold"; + }; + version = { + key = "fg=${base07-hex}:bold"; }; }; - status = { - success = "fg=${base0B-hex}:bold"; - warning = "fg=${base0A-hex}:bold"; - error = "fg=${base08-hex}:bold"; - }; - table = { - header = "fg=${base05-hex}:bold"; - columns = "fg=${base05-hex}"; - }; - stderr = { - default = "fg=${base05-hex}"; - error = "fg=${base08-hex}:bold"; - }; - describe = { - key = "fg=${base07-hex}:bold"; - }; - apply = { - created = "fg=${base0B-hex}"; - configured = "fg=${base0A-hex}"; - unchanged = "fg=${base05-hex}"; - dryrun = "fg=${base0D-hex}"; - fallback = "fg=${base05-hex}"; - }; - explain = { - key = "fg=${base07-hex}:bold"; - required = "fg=${base00-hex}:bold"; - }; - options = { - flag = "fg=${base07-hex}:bold"; - }; - version = { - key = "fg=${base07-hex}:bold"; - }; - }; - }; - }; + } + ) + ]; } diff --git a/modules/lightdm/nixos.nix b/modules/lightdm/nixos.nix index c52e6023..405cfbac 100644 --- a/modules/lightdm/nixos.nix +++ b/modules/lightdm/nixos.nix @@ -1,14 +1,21 @@ -{ config, lib, ... }: -let - cfg = config.stylix.targets.lightdm; -in { - options.stylix.targets.lightdm = { - enable = config.lib.stylix.mkEnableTarget "LightDM" true; + mkTarget, + config, + lib, + ... +}: +mkTarget { + name = "lightdm"; + humanName = "LightDM"; + + extraOptions = { useWallpaper = config.lib.stylix.mkEnableWallpaper "LightDM" true; }; - config.services.xserver.displayManager.lightdm.background = lib.mkIf ( - config.stylix.enable && cfg.enable && cfg.useWallpaper - ) config.stylix.image; + configElements = + { cfg, image }: + { + services.xserver.displayManager.lightdm.background = + lib.mkIf cfg.useWallpaper image; + }; } diff --git a/modules/mako/hm.nix b/modules/mako/hm.nix index 86b2c110..3ca6975e 100644 --- a/modules/mako/hm.nix +++ b/modules/mako/hm.nix @@ -1,44 +1,46 @@ -{ - config, - lib, - options, - ... -}: -{ - options.stylix.targets.mako.enable = - config.lib.stylix.mkEnableTarget "Mako" true; +{ mkTarget, lib, ... }: +mkTarget { + name = "mako"; + humanName = "Mako"; # Referenced https://github.com/stacyharper/base16-mako - config = lib.optionalAttrs (options.services ? mako) ( - lib.mkIf (config.stylix.enable && config.stylix.targets.mako.enable) { - services.mako = - let - makoOpacity = lib.toHexString ( - ((builtins.ceil (config.stylix.opacity.popups * 100)) * 255) / 100 - ); - inherit (config.stylix) fonts; - in - with config.lib.stylix.colors.withHashtag; - { - settings = { - background-color = base00 + makoOpacity; - border-color = base0D; - text-color = base05; - progress-color = "over ${base02}"; - font = "${fonts.sansSerif.name} ${toString fonts.sizes.popups}"; + configElements = [ + ( + { fonts }: + { + services.mako.settings.font = "${fonts.sansSerif.name} ${toString fonts.sizes.popups}"; + } + ) + ( + { colors, opacity }: + { + services.mako = + let + makoOpacity = lib.toHexString ( + ((builtins.ceil (opacity.popups * 100)) * 255) / 100 + ); + in + with colors.withHashtag; + { + settings = { + background-color = base00 + makoOpacity; + border-color = base0D; + text-color = base05; + progress-color = "over ${base02}"; - "urgency=low" = { - background-color = "${base00}${makoOpacity}"; - border-color = base0D; - text-color = base0A; - }; - "urgency=high" = { - background-color = "${base00}${makoOpacity}"; - border-color = base0D; - text-color = base08; + "urgency=low" = { + background-color = "${base00}${makoOpacity}"; + border-color = base0D; + text-color = base0A; + }; + "urgency=high" = { + background-color = "${base00}${makoOpacity}"; + border-color = base0D; + text-color = base08; + }; }; }; - }; - } - ); + } + ) + ]; } diff --git a/modules/mangohud/hm.nix b/modules/mangohud/hm.nix index 0746e365..cad9acc3 100644 --- a/modules/mangohud/hm.nix +++ b/modules/mangohud/hm.nix @@ -1,41 +1,53 @@ -{ config, lib, ... }: -{ - options.stylix.targets.mangohud.enable = - config.lib.stylix.mkEnableTarget "mangohud" true; +{ mkTarget, ... }: +mkTarget { + name = "mangohud"; + humanName = "mangohud"; - config = - lib.mkIf (config.stylix.enable && config.stylix.targets.mangohud.enable) + configElements = [ + ( + { fonts }: { - programs.mangohud.settings = - let - inherit (config.stylix) fonts opacity; - in - with config.lib.stylix.colors; - { - font_size = fonts.sizes.applications; - font_size_text = fonts.sizes.applications; - background_alpha = opacity.popups; - alpha = opacity.applications; - text_color = base05; - text_outline_color = base00; - background_color = base00; - gpu_color = base0B; - cpu_color = base0D; - vram_color = base0C; - media_player_color = base05; - engine_color = base0E; - wine_color = base0E; - frametime_color = base0B; - battery_color = base04; - io_color = base0A; - gpu_load_color = "${base0B}, ${base0A}, ${base08}"; - cpu_load_color = "${base0B}, ${base0A}, ${base08}"; - fps_color = "${base0B}, ${base0A}, ${base08}"; + programs.mangohud.settings = { + font_size = fonts.sizes.applications; + font_size_text = fonts.sizes.applications; - # TODO: Use the point unit: - # https://github.com/nix-community/stylix/issues/251. - font_scale = 1.33333; - }; - }; + # TODO: Use the point unit: + # https://github.com/nix-community/stylix/issues/251. + font_scale = 1.33333; + }; + } + ) + ( + { opacity }: + { + programs.mangohud.settings = { + background_alpha = opacity.popups; + alpha = opacity.applications; + }; + } + ) + ( + { colors }: + { + programs.mangohud.settings = with colors; { + text_color = base05; + text_outline_color = base00; + background_color = base00; + gpu_color = base0B; + cpu_color = base0D; + vram_color = base0C; + media_player_color = base05; + engine_color = base0E; + wine_color = base0E; + frametime_color = base0B; + battery_color = base04; + io_color = base0A; + gpu_load_color = "${base0B}, ${base0A}, ${base08}"; + cpu_load_color = "${base0B}, ${base0A}, ${base08}"; + fps_color = "${base0B}, ${base0A}, ${base08}"; + }; + } + ) + ]; } diff --git a/modules/micro/hm.nix b/modules/micro/hm.nix index fc2cf167..36f26d11 100644 --- a/modules/micro/hm.nix +++ b/modules/micro/hm.nix @@ -1,13 +1,9 @@ -{ - config, - lib, - ... -}: -{ - options.stylix.targets.micro.enable = - config.lib.stylix.mkEnableTarget "micro" true; +{ mkTarget, ... }: +mkTarget { + name = "micro"; + humanName = "micro"; - config = lib.mkIf (config.stylix.enable && config.stylix.targets.micro.enable) { + configElements = { # TODO: Provide a real colorscheme once [1] is resolved. # # [1]: https://github.com/nix-community/stylix/issues/249 diff --git a/modules/nushell/hm.nix b/modules/nushell/hm.nix index d1345cb7..05d6f0a6 100644 --- a/modules/nushell/hm.nix +++ b/modules/nushell/hm.nix @@ -1,47 +1,49 @@ -{ config, lib, ... }: -{ - options.stylix.targets.nushell.enable = - config.lib.stylix.mkEnableTarget "Nushell" true; +{ mkTarget, ... }: +mkTarget { + name = "nushell"; + humanName = "Nushell"; # Adapted from https://www.nushell.sh/book/coloring_and_theming.html#theming - config.programs.nushell.extraConfig = - with config.lib.stylix.colors.withHashtag; - lib.mkIf (config.stylix.enable && config.stylix.targets.nushell.enable) '' - $env.config.color_config = { - separator: "${base03}" - leading_trailing_space_bg: "${base04}" - header: "${base0B}" - date: "${base0E}" - filesize: "${base0D}" - row_index: "${base0C}" - bool: "${base08}" - int: "${base0B}" - duration: "${base08}" - range: "${base08}" - float: "${base08}" - string: "${base04}" - nothing: "${base08}" - binary: "${base08}" - cellpath: "${base08}" - hints: dark_gray + configElements = + { colors }: + { + programs.nushell.extraConfig = with colors.withHashtag; '' + $env.config.color_config = { + separator: "${base03}" + leading_trailing_space_bg: "${base04}" + header: "${base0B}" + date: "${base0E}" + filesize: "${base0D}" + row_index: "${base0C}" + bool: "${base08}" + int: "${base0B}" + duration: "${base08}" + range: "${base08}" + float: "${base08}" + string: "${base04}" + nothing: "${base08}" + binary: "${base08}" + cellpath: "${base08}" + hints: dark_gray - shape_garbage: { fg: "${base07}" bg: "${base08}" } - shape_bool: "${base0D}" - shape_int: { fg: "${base0E}" attr: b } - shape_float: { fg: "${base0E}" attr: b } - shape_range: { fg: "${base0A}" attr: b } - shape_internalcall: { fg: "${base0C}" attr: b } - shape_external: "${base0C}" - shape_externalarg: { fg: "${base0B}" attr: b } - shape_literal: "${base0D}" - shape_operator: "${base0A}" - shape_signature: { fg: "${base0B}" attr: b } - shape_string: "${base0B}" - shape_filepath: "${base0D}" - shape_globpattern: { fg: "${base0D}" attr: b } - shape_variable: "${base0E}" - shape_flag: { fg: "${base0D}" attr: b } - shape_custom: { attr: b } - } - ''; + shape_garbage: { fg: "${base07}" bg: "${base08}" } + shape_bool: "${base0D}" + shape_int: { fg: "${base0E}" attr: b } + shape_float: { fg: "${base0E}" attr: b } + shape_range: { fg: "${base0A}" attr: b } + shape_internalcall: { fg: "${base0C}" attr: b } + shape_external: "${base0C}" + shape_externalarg: { fg: "${base0B}" attr: b } + shape_literal: "${base0D}" + shape_operator: "${base0A}" + shape_signature: { fg: "${base0B}" attr: b } + shape_string: "${base0B}" + shape_filepath: "${base0D}" + shape_globpattern: { fg: "${base0D}" attr: b } + shape_variable: "${base0E}" + shape_flag: { fg: "${base0D}" attr: b } + shape_custom: { attr: b } + } + ''; + }; } diff --git a/modules/qutebrowser/hm.nix b/modules/qutebrowser/hm.nix index 3f73fa5a..484d6e59 100644 --- a/modules/qutebrowser/hm.nix +++ b/modules/qutebrowser/hm.nix @@ -1,257 +1,13 @@ -{ config, lib, ... }: -let - colors = config.lib.stylix.colors.withHashtag; - background = colors.base00; - secondary-background = colors.base01; - selection-background = colors.base03; +{ mkTarget, lib, ... }: +mkTarget { + name = "qutebrowser"; + humanName = "Qutebrowser"; - foreground = colors.base05; - inverted-foreground = colors.base00; - - error = colors.base08; - - info = colors.base0B; - secondary-info = colors.base0C; - - warning = colors.base0E; -in -{ - options.stylix.targets.qutebrowser.enable = - config.lib.stylix.mkEnableTarget "Qutebrowser" true; - - config = - with config.stylix.fonts; - lib.mkIf (config.stylix.enable && config.stylix.targets.qutebrowser.enable) { - programs.qutebrowser.settings = { - colors = { - completion = { - category = { - bg = background; - fg = info; - - border = { - bottom = background; - top = background; - }; - }; - - even.bg = background; - fg = foreground; - - item.selected = { - bg = selection-background; - - border = { - bottom = selection-background; - top = selection-background; - }; - - fg = foreground; - }; - - match.fg = info; - odd.bg = secondary-background; - - scrollbar = { - bg = background; - fg = foreground; - }; - }; - - contextmenu = { - disabled = { - bg = secondary-background; - fg = inverted-foreground; - }; - - menu = { - bg = background; - fg = foreground; - }; - - selected = { - bg = selection-background; - fg = foreground; - }; - }; - - downloads = { - bar.bg = background; - - error = { - bg = error; - fg = inverted-foreground; - }; - - start = { - bg = info; - fg = inverted-foreground; - }; - - stop = { - bg = secondary-info; - fg = inverted-foreground; - }; - }; - - hints = { - bg = secondary-background; - fg = foreground; - match.fg = info; - }; - - keyhint = { - bg = background; - fg = foreground; - suffix.fg = foreground; - }; - - messages = { - error = { - bg = error; - fg = inverted-foreground; - border = error; - }; - - info = { - bg = info; - fg = inverted-foreground; - border = info; - }; - - warning = { - bg = warning; - fg = inverted-foreground; - border = warning; - }; - }; - - prompts = { - bg = background; - border = background; - fg = foreground; - selected.bg = secondary-background; - }; - - statusbar = { - caret = { - bg = selection-background; - fg = foreground; - - selection = { - bg = selection-background; - fg = foreground; - }; - }; - - command = { - bg = background; - fg = foreground; - - private = { - bg = secondary-background; - fg = foreground; - }; - }; - - insert = { - bg = info; - fg = inverted-foreground; - }; - - normal = { - bg = background; - fg = foreground; - }; - - passthrough = { - bg = secondary-info; - fg = inverted-foreground; - }; - - private = { - bg = secondary-background; - fg = foreground; - }; - - progress.bg = info; - - url = { - error.fg = error; - fg = foreground; - hover.fg = foreground; - - success = { - http.fg = secondary-info; - https.fg = info; - }; - - warn.fg = warning; - }; - }; - - tabs = { - bar.bg = background; - - even = { - bg = secondary-background; - fg = foreground; - }; - - indicator = { - inherit error; - start = secondary-info; - stop = info; - }; - - odd = { - bg = background; - fg = foreground; - }; - - pinned = { - even = { - bg = info; - fg = inverted-foreground; - }; - - odd = { - bg = secondary-info; - fg = inverted-foreground; - }; - - selected = { - even = { - bg = selection-background; - fg = foreground; - }; - - odd = { - bg = selection-background; - fg = foreground; - }; - }; - }; - - selected = { - even = { - bg = selection-background; - fg = foreground; - }; - - odd = { - bg = selection-background; - fg = foreground; - }; - }; - }; - - webpage.preferred_color_scheme = lib.mkIf ( - config.stylix.polarity == "dark" - ) "dark"; - }; - - fonts = { + configElements = [ + ( + { fonts }: + { + programs.qutebrowser.settings.fonts = with fonts; { default_family = sansSerif.name; default_size = "${toString sizes.applications}pt"; @@ -270,8 +26,264 @@ in size.default = builtins.floor (sizes.applications * 4 / 3 + 0.5); }; }; + } + ) + ( + { polarity }: + { + programs.qutebrowser.settings.colors.webpage.preferred_color_scheme = lib.mkIf ( + polarity == "dark" + ) "dark"; + } + ) + ( + { colors }: + let + colors' = colors.withHashtag; + background = colors'.base00; + secondary-background = colors'.base01; + selection-background = colors'.base03; - hints.border = background; - }; - }; + foreground = colors'.base05; + inverted-foreground = colors'.base00; + + error = colors'.base08; + + info = colors'.base0B; + secondary-info = colors'.base0C; + + warning = colors'.base0E; + in + { + programs.qutebrowser.settings = { + hints.border = background; + + colors = { + completion = { + category = { + bg = background; + fg = info; + + border = { + bottom = background; + top = background; + }; + }; + + even.bg = background; + fg = foreground; + + item.selected = { + bg = selection-background; + + border = { + bottom = selection-background; + top = selection-background; + }; + + fg = foreground; + }; + + match.fg = info; + odd.bg = secondary-background; + + scrollbar = { + bg = background; + fg = foreground; + }; + }; + + contextmenu = { + disabled = { + bg = secondary-background; + fg = inverted-foreground; + }; + + menu = { + bg = background; + fg = foreground; + }; + + selected = { + bg = selection-background; + fg = foreground; + }; + }; + + downloads = { + bar.bg = background; + + error = { + bg = error; + fg = inverted-foreground; + }; + + start = { + bg = info; + fg = inverted-foreground; + }; + + stop = { + bg = secondary-info; + fg = inverted-foreground; + }; + }; + + hints = { + bg = secondary-background; + fg = foreground; + match.fg = info; + }; + + keyhint = { + bg = background; + fg = foreground; + suffix.fg = foreground; + }; + + messages = { + error = { + bg = error; + fg = inverted-foreground; + border = error; + }; + + info = { + bg = info; + fg = inverted-foreground; + border = info; + }; + + warning = { + bg = warning; + fg = inverted-foreground; + border = warning; + }; + }; + + prompts = { + bg = background; + border = background; + fg = foreground; + selected.bg = secondary-background; + }; + + statusbar = { + caret = { + bg = selection-background; + fg = foreground; + + selection = { + bg = selection-background; + fg = foreground; + }; + }; + + command = { + bg = background; + fg = foreground; + + private = { + bg = secondary-background; + fg = foreground; + }; + }; + + insert = { + bg = info; + fg = inverted-foreground; + }; + + normal = { + bg = background; + fg = foreground; + }; + + passthrough = { + bg = secondary-info; + fg = inverted-foreground; + }; + + private = { + bg = secondary-background; + fg = foreground; + }; + + progress.bg = info; + + url = { + error.fg = error; + fg = foreground; + hover.fg = foreground; + + success = { + http.fg = secondary-info; + https.fg = info; + }; + + warn.fg = warning; + }; + }; + + tabs = { + bar.bg = background; + + even = { + bg = secondary-background; + fg = foreground; + }; + + indicator = { + inherit error; + start = secondary-info; + stop = info; + }; + + odd = { + bg = background; + fg = foreground; + }; + + pinned = { + even = { + bg = info; + fg = inverted-foreground; + }; + + odd = { + bg = secondary-info; + fg = inverted-foreground; + }; + + selected = { + even = { + bg = selection-background; + fg = foreground; + }; + + odd = { + bg = selection-background; + fg = foreground; + }; + }; + }; + + selected = { + even = { + bg = selection-background; + fg = foreground; + }; + + odd = { + bg = selection-background; + fg = foreground; + }; + }; + }; + }; + + }; + } + ) + ]; } diff --git a/modules/spotify-player/hm.nix b/modules/spotify-player/hm.nix index a99eaf1a..6df7c5d8 100644 --- a/modules/spotify-player/hm.nix +++ b/modules/spotify-player/hm.nix @@ -1,42 +1,36 @@ -{ - config, - lib, - ... -}: -{ - options.stylix.targets.spotify-player.enable = - config.lib.stylix.mkEnableTarget "spotify-player" true; +{ mkTarget, lib, ... }: +mkTarget { + name = "spotify-player"; + humanName = "spotify-player"; - config = - lib.mkIf (config.stylix.enable && config.stylix.targets.spotify-player.enable) - { - programs.spotify-player = { - settings.theme = "stylix"; - themes = [ - { - name = "stylix"; - palette = with config.lib.stylix.colors.withHashtag; { - background = base00; - foreground = base05; - black = base00; - red = base08; - green = base0B; - yellow = base0A; - blue = base0D; - magenta = base0E; - cyan = base0C; - white = base05; - bright_black = base03; - bright_red = base08; - bright_green = base0B; - bright_yellow = base0A; - bright_blue = base0D; - bright_magenta = base0E; - bright_cyan = base0C; - bright_white = base07; - }; - } - ]; + configElements = + { colors }: + { + programs.spotify-player = { + settings.theme = "stylix"; + themes = lib.singleton { + name = "stylix"; + palette = with colors.withHashtag; { + background = base00; + foreground = base05; + black = base00; + red = base08; + green = base0B; + yellow = base0A; + blue = base0D; + magenta = base0E; + cyan = base0C; + white = base05; + bright_black = base03; + bright_red = base08; + bright_green = base0B; + bright_yellow = base0A; + bright_blue = base0D; + bright_magenta = base0E; + bright_cyan = base0C; + bright_white = base07; + }; }; }; + }; } diff --git a/modules/starship/hm.nix b/modules/starship/hm.nix index cfa6e9b9..6c387018 100644 --- a/modules/starship/hm.nix +++ b/modules/starship/hm.nix @@ -1,76 +1,72 @@ # Starship configuration documentation: https://starship.rs/config/ -{ - config, - lib, - ... -}: -{ - options.stylix.targets.starship.enable = - config.lib.stylix.mkEnableTarget "Starship" true; +{ mkTarget, ... }: +mkTarget { + name = "starship"; + humanName = "Starship"; - config = - lib.mkIf (config.stylix.enable && config.stylix.targets.starship.enable) - { - programs.starship.settings = { - palette = "base16"; - palettes.base16 = with config.lib.stylix.colors.withHashtag; { - black = base00; - bright-black = base03; - white = base05; - bright-white = base07; + configElements = + { colors }: + { + programs.starship.settings = { + palette = "base16"; + palettes.base16 = with colors.withHashtag; { + black = base00; + bright-black = base03; + white = base05; + bright-white = base07; - # Starship calls magenta purple. - purple = magenta; - bright-purple = bright-magenta; + # Starship calls magenta purple. + purple = magenta; + bright-purple = bright-magenta; - inherit - # Set Starship's standard normal color names. - red - orange - yellow - green - cyan - blue - magenta - brown + inherit + # Set Starship's standard normal color names. + red + orange + yellow + green + cyan + blue + magenta + brown - # Set Starship's standard bright color names. - bright-red - bright-yellow - bright-green - bright-cyan - bright-blue - bright-magenta + # Set Starship's standard bright color names. + bright-red + bright-yellow + bright-green + bright-cyan + bright-blue + bright-magenta - # Add base16 names to the template for custom usage. - base00 - base01 - base02 - base03 - base04 - base05 - base06 - base07 - base08 - base09 - base0A - base0B - base0C - base0D - base0E - base0F + # Add base16 names to the template for custom usage. + base00 + base01 + base02 + base03 + base04 + base05 + base06 + base07 + base08 + base09 + base0A + base0B + base0C + base0D + base0E + base0F - # Add base24 names to the template for custom usage. - base10 - base11 - base12 - base13 - base14 - base15 - base16 - base17 - ; - }; + # Add base24 names to the template for custom usage. + base10 + base11 + base12 + base13 + base14 + base15 + base16 + base17 + ; }; }; + }; } diff --git a/modules/swaync/hm.nix b/modules/swaync/hm.nix index d1d4fb59..f8979f70 100644 --- a/modules/swaync/hm.nix +++ b/modules/swaync/hm.nix @@ -1,33 +1,38 @@ -{ - config, - lib, - ... -}: -{ - options.stylix.targets.swaync = { - enable = config.lib.stylix.mkEnableTarget "SwayNC" true; - }; +{ mkTarget, ... }: +mkTarget { + name = "swaync"; + humanName = "SwayNC"; - config = - lib.mkIf (config.stylix.enable && config.stylix.targets.swaync.enable) + configElements = [ + ( + { fonts }: + { + services.swaync.style = '' + * { + font-family: "${fonts.sansSerif.name}"; + font-size: ${builtins.toString fonts.sizes.desktop}pt; + } + ''; + } + ) + ( + { colors }: { services.swaync.style = - let - inherit (config.stylix) fonts; - in - with config.lib.stylix.colors.withHashtag; + with colors.withHashtag; '' - @define-color base00 ${base00}; @define-color base01 ${base01}; @define-color base02 ${base02}; @define-color base03 ${base03}; - @define-color base04 ${base04}; @define-color base05 ${base05}; @define-color base06 ${base06}; @define-color base07 ${base07}; + @define-color base00 ${base00}; @define-color base01 ${base01}; + @define-color base02 ${base02}; @define-color base03 ${base03}; + @define-color base04 ${base04}; @define-color base05 ${base05}; + @define-color base06 ${base06}; @define-color base07 ${base07}; - @define-color base08 ${base08}; @define-color base09 ${base09}; @define-color base0A ${base0A}; @define-color base0B ${base0B}; - @define-color base0C ${base0C}; @define-color base0D ${base0D}; @define-color base0E ${base0E}; @define-color base0F ${base0F}; - - * { - font-family: "${fonts.sansSerif.name}"; - font-size: ${builtins.toString fonts.sizes.desktop}pt; - } + @define-color base08 ${base08}; @define-color base09 ${base09}; + @define-color base0A ${base0A}; @define-color base0B ${base0B}; + @define-color base0C ${base0C}; @define-color base0D ${base0D}; + @define-color base0E ${base0E}; @define-color base0F ${base0F}; '' + (builtins.readFile ./base.css); - }; + } + ) + ]; } diff --git a/modules/sxiv/hm.nix b/modules/sxiv/hm.nix index 55661385..6fce9add 100644 --- a/modules/sxiv/hm.nix +++ b/modules/sxiv/hm.nix @@ -1,18 +1,24 @@ -{ config, lib, ... }: -{ - options.stylix.targets.sxiv.enable = - config.lib.stylix.mkEnableTarget "Sxiv" true; +{ mkTarget, ... }: +mkTarget { + name = "sxiv"; + humanName = "Sxiv"; - config = lib.mkIf (config.stylix.enable && config.stylix.targets.sxiv.enable) { - xresources.properties = - let - inherit (config.lib.stylix) colors; - inherit (config.stylix) fonts; - in + configElements = [ + ( + { fonts }: { - "Sxiv.foreground" = "#${colors.base01}"; - "Sxiv.background" = "#${colors.base04}"; - "Sxiv.font" = "${fonts.sansSerif.name}-${toString fonts.sizes.applications}"; - }; - }; + xresources.properties."Sxiv.font" = + "${fonts.sansSerif.name}-${toString fonts.sizes.applications}"; + } + ) + ( + { colors }: + { + xresources.properties = { + "Sxiv.foreground" = "#${colors.base01}"; + "Sxiv.background" = "#${colors.base04}"; + }; + } + ) + ]; } diff --git a/modules/tmux/hm.nix b/modules/tmux/hm.nix index bd3631d0..44310c10 100644 --- a/modules/tmux/hm.nix +++ b/modules/tmux/hm.nix @@ -1,19 +1,18 @@ -{ config, lib, ... }: +{ mkTarget, ... }: +mkTarget { + name = "tmux"; + humanName = "Tmux"; -let - theme = config.lib.stylix.colors { - templateRepo = config.stylix.inputs.tinted-tmux; - target = "base16"; - }; - -in -{ - options.stylix.targets.tmux.enable = - config.lib.stylix.mkEnableTarget "Tmux" true; - - config = lib.mkIf (config.stylix.enable && config.stylix.targets.tmux.enable) { - programs.tmux.extraConfig = '' - source-file ${theme} - ''; - }; + configElements = + { colors, inputs }: + { + programs.tmux.extraConfig = '' + source-file ${ + colors { + templateRepo = inputs.tinted-tmux; + target = "base16"; + } + } + ''; + }; } diff --git a/modules/tofi/hm.nix b/modules/tofi/hm.nix index 79c8661b..1922da49 100644 --- a/modules/tofi/hm.nix +++ b/modules/tofi/hm.nix @@ -1,41 +1,48 @@ -{ - config, - lib, - ... -}: -{ - options.stylix.targets.tofi.enable = - config.lib.stylix.mkEnableTarget "Tofi" true; +{ mkTarget, ... }: +mkTarget { + name = "tofi"; + humanName = "Tofi"; - config = lib.mkIf (config.stylix.enable && config.stylix.targets.tofi.enable) { - programs.tofi.settings = - with config.lib.stylix.colors.withHashtag; - let - inherit (config.stylix) fonts; - opacity = lib.toHexString ( - ((builtins.ceil (config.stylix.opacity.popups * 100)) * 255) / 100 - ); - background = base00 + opacity; - foreground = base05; - darkForeground = base04 + opacity; - selection = base03 + opacity; - in + configElements = [ + ( + { fonts }: { - font = fonts.monospace.name; - font-size = toString fonts.sizes.popups; - background-color = background; - outline-color = darkForeground; - border-color = foreground; - text-color = foreground; - prompt-color = base0A; - prompt-background = background; - placeholder-color = selection; - input-background = background; - default-result-background = background; - selection-color = selection; - selection-background = background; - border-width = lib.mkDefault 4; - outline-width = lib.mkDefault 2; - }; - }; + programs.tofi.settings = { + font = fonts.monospace.name; + font-size = toString fonts.sizes.popups; + }; + } + ) + ( + { colors, opacity }: + { + programs.tofi.settings = + with colors.withHashtag; + let + opacity' = lib.toHexString ( + ((builtins.ceil (opacity.popups * 100)) * 255) / 100 + ); + background = base00 + opacity'; + foreground = base05; + darkForeground = base04 + opacity'; + selection = base03 + opacity'; + in + { + background-color = background; + outline-color = darkForeground; + border-color = foreground; + text-color = foreground; + prompt-color = base0A; + prompt-background = background; + placeholder-color = selection; + input-background = background; + default-result-background = background; + selection-color = selection; + selection-background = background; + border-width = lib.mkDefault 4; + outline-width = lib.mkDefault 2; + }; + } + ) + ]; } diff --git a/modules/wob/hm.nix b/modules/wob/hm.nix index ee3bd5e2..6e2b7cef 100644 --- a/modules/wob/hm.nix +++ b/modules/wob/hm.nix @@ -1,18 +1,20 @@ -{ config, lib, ... }: +{ mkTarget, ... }: +mkTarget { + name = "wob"; + humanName = "wob"; -{ - options.stylix.targets.wob.enable = config.lib.stylix.mkEnableTarget "wob" true; - - config = lib.mkIf (config.stylix.enable && config.stylix.targets.wob.enable) { - services.wob.settings = { - "" = with config.lib.stylix.colors; { - border_color = base05; - background_color = base00; - bar_color = base0A; - overflow_bar_color = base08; - overflow_background_color = base00; - overflow_border_color = base05; + configElements = + { colors }: + { + services.wob.settings = { + "" = with colors; { + border_color = base05; + background_color = base00; + bar_color = base0A; + overflow_bar_color = base08; + overflow_background_color = base00; + overflow_border_color = base05; + }; }; }; - }; } diff --git a/modules/wofi/hm.nix b/modules/wofi/hm.nix index 7aa39393..7a4684e3 100644 --- a/modules/wofi/hm.nix +++ b/modules/wofi/hm.nix @@ -1,48 +1,52 @@ -{ - config, - lib, - ... -}: -{ - options.stylix.targets.wofi.enable = - config.lib.stylix.mkEnableTarget "wofi" config.programs.wofi.enable; +{ mkTarget, ... }: +mkTarget { + name = "wofi"; + humanName = "wofi"; - config = lib.mkIf (config.stylix.enable && config.stylix.targets.wofi.enable) { - programs.wofi.style = - let - inherit (config.stylix) fonts; - in - with config.lib.stylix.colors.withHashtag; - '' - window { - font-family: "${fonts.monospace.name}"; - font-size: ${toString fonts.sizes.popups}pt; + configElements = [ + ( + { fonts }: + { + programs.wofi.style = '' + window { + font-family: "${fonts.monospace.name}"; + font-size: ${toString fonts.sizes.popups}pt; + } + ''; + } + ) + ( + { colors }: + { + programs.wofi.style = with colors.withHashtag; '' + window { + background-color: ${base00}; + color: ${base05}; + } - background-color: ${base00}; - color: ${base05}; - } + #entry:nth-child(odd) { + background-color: ${base00}; + } - #entry:nth-child(odd) { - background-color: ${base00}; - } + #entry:nth-child(even) { + background-color: ${base01}; + } - #entry:nth-child(even) { - background-color: ${base01}; - } + #entry:selected { + background-color: ${base02}; + } - #entry:selected { - background-color: ${base02}; - } + #input { + background-color: ${base01}; + color: ${base04}; + border-color: ${base02}; + } - #input { - background-color: ${base01}; - color: ${base04}; - border-color: ${base02}; - } - - #input:focus { - border-color: ${base0A}; - } - ''; - }; + #input:focus { + border-color: ${base0A}; + } + ''; + } + ) + ]; } diff --git a/modules/wpaperd/hm.nix b/modules/wpaperd/hm.nix index 156e0124..5847c371 100644 --- a/modules/wpaperd/hm.nix +++ b/modules/wpaperd/hm.nix @@ -1,38 +1,32 @@ -{ config, lib, ... }: -let - cfg = config.stylix.targets.wpaperd; -in -{ - options.stylix.targets.wpaperd = { - enable = config.lib.stylix.mkEnableTarget "wpaperd" ( - config.stylix.image != null +{ mkTarget, lib, ... }: +mkTarget { + name = "wpaperd"; + humanName = "wpaperd"; + + configElements = + { imageScalingMode, image }: + ( + let + # wpaperd doesn't have any mode close to the described behavior of center + modeMap = { + "stretch" = "stretch"; + # wpaperd's center mode is closest to the described behavior of fill + "fill" = "center"; + "fit" = "fit"; + "tile" = "tile"; + }; + + modeAttrs = + if builtins.hasAttr imageScalingMode modeMap then + { mode = modeMap.${imageScalingMode}; } + else + lib.info "stylix: wpaperd: unsupported image scaling mode: ${imageScalingMode}" + { }; + in + { + services.wpaperd.settings.any = { + path = "${image}"; + } // modeAttrs; + } ); - }; - - config = lib.mkIf (config.stylix.enable && cfg.enable) ( - let - inherit (config.stylix) imageScalingMode; - - # wpaperd doesn't have any mode close to the described behavior of center - modeMap = { - "stretch" = "stretch"; - # wpaperd's center mode is closest to the described behavior of fill - "fill" = "center"; - "fit" = "fit"; - "tile" = "tile"; - }; - - modeAttrs = - if builtins.hasAttr imageScalingMode modeMap then - { mode = modeMap.${imageScalingMode}; } - else - lib.info "stylix: wpaperd: unsupported image scaling mode: ${imageScalingMode}" - { }; - in - { - services.wpaperd.settings.any = { - path = "${config.stylix.image}"; - } // modeAttrs; - } - ); } diff --git a/modules/yazi/hm.nix b/modules/yazi/hm.nix index a41b9661..50c42906 100644 --- a/modules/yazi/hm.nix +++ b/modules/yazi/hm.nix @@ -1,147 +1,144 @@ # Based on the official catppuccin themes https://github.com/yazi-rs/themes -{ - config, - lib, - ... -}: -{ - options.stylix.targets.yazi = { - enable = config.lib.stylix.mkEnableTarget "Yazi" true; - }; +{ mkTarget, ... }: +mkTarget { + name = "yazi"; + humanName = "Yazi"; - config = lib.mkIf (config.stylix.enable && config.stylix.targets.yazi.enable) { - programs.yazi.theme = - with config.lib.stylix.colors.withHashtag; - let - mkFg = fg: { inherit fg; }; - mkBg = bg: { inherit bg; }; - mkBoth = fg: bg: { inherit fg bg; }; - mkSame = c: (mkBoth c c); - in - { - manager = rec { - # Reusing bat themes, since it's suggested in the stying guide - # https://yazi-rs.github.io/docs/configuration/theme#manager - syntect_theme = config.lib.stylix.colors { - template = ../bat/base16-stylix.tmTheme.mustache; - extension = ".tmTheme"; + configElements = + { colors }: + { + programs.yazi.theme = + with colors.withHashtag; + let + mkFg = fg: { inherit fg; }; + mkBg = bg: { inherit bg; }; + mkBoth = fg: bg: { inherit fg bg; }; + mkSame = c: (mkBoth c c); + in + { + manager = rec { + # Reusing bat themes, since it's suggested in the stying guide + # https://yazi-rs.github.io/docs/configuration/theme#manager + syntect_theme = colors { + template = ../bat/base16-stylix.tmTheme.mustache; + extension = ".tmTheme"; + }; + + cwd = mkFg cyan; + hovered = (mkBg base02) // { + bold = true; + }; + preview_hovered = hovered; + find_keyword = (mkFg green) // { + bold = true; + }; + find_position = mkFg magenta; + marker_selected = mkSame yellow; + marker_copied = mkSame green; + marker_cut = mkSame red; + tab_active = mkBoth base00 blue; + tab_inactive = mkBoth base05 base01; + border_style = mkFg base04; + + count_copied = mkBoth base00 green; + count_cut = mkBoth base00 red; + count_selected = mkBoth base00 yellow; }; - cwd = mkFg cyan; - hovered = (mkBg base02) // { - bold = true; + mode = { + normal_main = (mkBoth base00 blue) // { + bold = true; + }; + normal_alt = mkBoth blue base00; + select_main = (mkBoth base00 green) // { + bold = true; + }; + select_alt = mkBoth green base00; + unset_main = (mkBoth base00 brown) // { + bold = true; + }; + unset_alt = mkBoth brown base00; }; - preview_hovered = hovered; - find_keyword = (mkFg green) // { - bold = true; + + status = { + progress_label = mkBoth base05 base00; + progress_normal = mkBoth base05 base00; + progress_error = mkBoth red base00; + perm_type = mkFg blue; + perm_read = mkFg yellow; + perm_write = mkFg red; + perm_exec = mkFg green; + perm_sep = mkFg cyan; }; - find_position = mkFg magenta; - marker_selected = mkSame yellow; - marker_copied = mkSame green; - marker_cut = mkSame red; - tab_active = mkBoth base00 blue; - tab_inactive = mkBoth base05 base01; - border_style = mkFg base04; - count_copied = mkBoth base00 green; - count_cut = mkBoth base00 red; - count_selected = mkBoth base00 yellow; - }; - - mode = { - normal_main = (mkBoth base00 blue) // { - bold = true; + pick = { + border = mkFg blue; + active = mkFg magenta; + inactive = mkFg base05; }; - normal_alt = mkBoth blue base00; - select_main = (mkBoth base00 green) // { - bold = true; + + input = { + border = mkFg blue; + title = mkFg base05; + value = mkFg base05; + selected = mkBg base03; }; - select_alt = mkBoth green base00; - unset_main = (mkBoth base00 brown) // { - bold = true; + + completion = { + border = mkFg blue; + active = mkBoth magenta base03; + inactive = mkFg base05; }; - unset_alt = mkBoth brown base00; + + tasks = { + border = mkFg blue; + title = mkFg base05; + hovered = mkBoth base05 base03; + }; + + which = { + mask = mkBg base02; + cand = mkFg cyan; + rest = mkFg brown; + desc = mkFg base05; + separator_style = mkFg base04; + }; + + help = { + on = mkFg magenta; + run = mkFg cyan; + desc = mkFg base05; + hovered = mkBoth base05 base03; + footer = mkFg base05; + }; + + # https://github.com/sxyazi/yazi/blob/main/yazi-config/preset/theme.toml + filetype.rules = + let + mkRule = mime: fg: { inherit mime fg; }; + in + [ + (mkRule "image/*" cyan) + (mkRule "video/*" yellow) + (mkRule "audio/*" yellow) + + (mkRule "application/zip" magenta) + (mkRule "application/gzip" magenta) + (mkRule "application/tar" magenta) + (mkRule "application/bzip" magenta) + (mkRule "application/bzip2" magenta) + (mkRule "application/7z-compressed" magenta) + (mkRule "application/rar" magenta) + (mkRule "application/xz" magenta) + + (mkRule "application/doc" green) + (mkRule "application/pdf" green) + (mkRule "application/rtf" green) + (mkRule "application/vnd.*" green) + + ((mkRule "inode/directory" blue) // { bold = true; }) + (mkRule "*" base05) + ]; }; - - status = { - progress_label = mkBoth base05 base00; - progress_normal = mkBoth base05 base00; - progress_error = mkBoth red base00; - perm_type = mkFg blue; - perm_read = mkFg yellow; - perm_write = mkFg red; - perm_exec = mkFg green; - perm_sep = mkFg cyan; - }; - - pick = { - border = mkFg blue; - active = mkFg magenta; - inactive = mkFg base05; - }; - - input = { - border = mkFg blue; - title = mkFg base05; - value = mkFg base05; - selected = mkBg base03; - }; - - completion = { - border = mkFg blue; - active = mkBoth magenta base03; - inactive = mkFg base05; - }; - - tasks = { - border = mkFg blue; - title = mkFg base05; - hovered = mkBoth base05 base03; - }; - - which = { - mask = mkBg base02; - cand = mkFg cyan; - rest = mkFg brown; - desc = mkFg base05; - separator_style = mkFg base04; - }; - - help = { - on = mkFg magenta; - run = mkFg cyan; - desc = mkFg base05; - hovered = mkBoth base05 base03; - footer = mkFg base05; - }; - - # https://github.com/sxyazi/yazi/blob/main/yazi-config/preset/theme.toml - filetype.rules = - let - mkRule = mime: fg: { inherit mime fg; }; - in - [ - (mkRule "image/*" cyan) - (mkRule "video/*" yellow) - (mkRule "audio/*" yellow) - - (mkRule "application/zip" magenta) - (mkRule "application/gzip" magenta) - (mkRule "application/tar" magenta) - (mkRule "application/bzip" magenta) - (mkRule "application/bzip2" magenta) - (mkRule "application/7z-compressed" magenta) - (mkRule "application/rar" magenta) - (mkRule "application/xz" magenta) - - (mkRule "application/doc" green) - (mkRule "application/pdf" green) - (mkRule "application/rtf" green) - (mkRule "application/vnd.*" green) - - ((mkRule "inode/directory" blue) // { bold = true; }) - (mkRule "*" base05) - ]; - }; - }; + }; } diff --git a/modules/zathura/hm.nix b/modules/zathura/hm.nix index 168825ec..b1aa3cb2 100644 --- a/modules/zathura/hm.nix +++ b/modules/zathura/hm.nix @@ -1,47 +1,45 @@ -{ config, lib, ... }: +{ mkTarget, ... }: +mkTarget { + name = "zathura"; + humanName = "Zathura"; -{ - options.stylix.targets.zathura.enable = - config.lib.stylix.mkEnableTarget "Zathura" true; - - config = - lib.mkIf (config.stylix.enable && config.stylix.targets.zathura.enable) - { - programs.zathura.options = - let - highlightTransparency = 0.5; - getColorCh = - colorName: channel: config.lib.stylix.colors."${colorName}-rgb-${channel}"; - rgb = - color: - ''rgb(${getColorCh color "r"}, ${getColorCh color "g"}, ${getColorCh color "b"})''; - rgba = - color: alpha: - ''rgba(${getColorCh color "r"}, ${getColorCh color "g"}, ${getColorCh color "b"}, ${builtins.toString alpha})''; - in - { - # Taken from here: - # https://github.com/doenerkebap/base16-zathura - default-bg = rgba "base00" config.stylix.opacity.applications; - default-fg = rgb "base01"; - statusbar-fg = rgb "base04"; - statusbar-bg = rgb "base02"; - inputbar-bg = rgb "base00"; - inputbar-fg = rgb "base07"; - notification-bg = rgb "base00"; - notification-fg = rgb "base07"; - notification-error-bg = rgb "base00"; - notification-error-fg = rgb "base08"; - notification-warning-bg = rgb "base00"; - notification-warning-fg = rgb "base08"; - highlight-color = rgba "base0A" highlightTransparency; - highlight-active-color = rgba "base0D" highlightTransparency; - completion-bg = rgb "base01"; - completion-fg = rgb "base0D"; - completion-highlight-fg = rgb "base07"; - completion-highlight-bg = rgb "base0D"; - recolor-lightcolor = rgb "base00"; - recolor-darkcolor = rgb "base06"; - }; - }; + configElements = + { colors, opacity }: + { + programs.zathura.options = + let + highlightTransparency = 0.5; + getColorCh = colorName: channel: colors."${colorName}-rgb-${channel}"; + rgb = + color: + ''rgb(${getColorCh color "r"}, ${getColorCh color "g"}, ${getColorCh color "b"})''; + rgba = + color: alpha: + ''rgba(${getColorCh color "r"}, ${getColorCh color "g"}, ${getColorCh color "b"}, ${builtins.toString alpha})''; + in + { + # Taken from here: + # https://github.com/doenerkebap/base16-zathura + default-bg = rgba "base00" opacity.applications; + default-fg = rgb "base01"; + statusbar-fg = rgb "base04"; + statusbar-bg = rgb "base02"; + inputbar-bg = rgb "base00"; + inputbar-fg = rgb "base07"; + notification-bg = rgb "base00"; + notification-fg = rgb "base07"; + notification-error-bg = rgb "base00"; + notification-error-fg = rgb "base08"; + notification-warning-bg = rgb "base00"; + notification-warning-fg = rgb "base08"; + highlight-color = rgba "base0A" highlightTransparency; + highlight-active-color = rgba "base0D" highlightTransparency; + completion-bg = rgb "base01"; + completion-fg = rgb "base0D"; + completion-highlight-fg = rgb "base07"; + completion-highlight-bg = rgb "base0D"; + recolor-lightcolor = rgb "base00"; + recolor-darkcolor = rgb "base06"; + }; + }; }