diff options
Diffstat (limited to 'modules/user/aesthetics/targets')
| -rw-r--r-- | modules/user/aesthetics/targets/foot.nix | 55 | ||||
| -rw-r--r-- | modules/user/aesthetics/targets/gtk.nix | 119 | ||||
| -rw-r--r-- | modules/user/aesthetics/targets/helix.nix | 28 | ||||
| -rw-r--r-- | modules/user/aesthetics/targets/mako.nix | 23 | ||||
| -rw-r--r-- | modules/user/aesthetics/targets/qutebrowser.nix | 213 | ||||
| -rw-r--r-- | modules/user/aesthetics/targets/vesktop.nix | 65 | ||||
| -rw-r--r-- | modules/user/aesthetics/targets/zellij.nix | 28 |
7 files changed, 531 insertions, 0 deletions
diff --git a/modules/user/aesthetics/targets/foot.nix b/modules/user/aesthetics/targets/foot.nix new file mode 100644 index 0000000..c6c2283 --- /dev/null +++ b/modules/user/aesthetics/targets/foot.nix @@ -0,0 +1,55 @@ +{ config, lib, ... }: let + cfg = config.aesthetics.targets.foot; + aes = config.aesthetics; +in { + options.aesthetics.targets.foot.enable = lib.mkOption { + type = lib.types.bool; + default = (aes.enableAllTargets && aes.hasGui); + description = "Whether to enable the aesthetics foot target."; + }; + config = lib.mkIf (cfg.enable && config.programs.foot.enable) { + programs.foot.settings = { + main.font = "${aes.font.name}:size=${aes.font.size.small}"; + tweak.font-monospace-warn = false; + colors = with aes.scheme; { + background = base00; + foreground = base05; + + # normal + regular0 = base00; + regular1 = base08; + regular2 = base0B; + regular3 = base0A; + regular4 = base0D; + regular5 = base0E; + regular6 = base0C; + regular7 = base05; + + # bright + bright0 = base03; + bright1 = base09; + bright2 = base01; + bright3 = base02; + bright4 = base04; + bright5 = base06; + bright6 = base0F; + bright7 = base07; + + # extended + "16" = base09; + "17" = base0F; + "18" = base01; + "19" = base02; + "20" = base04; + "21" = base06; + + # misc + selection-background = base05; + selection-foreground = base00; + urls = base04; + jump-labels = "${base00} ${base0A}"; + scrollback-indicator = "${base00} ${base04}"; + }; + }; + }; +} diff --git a/modules/user/aesthetics/targets/gtk.nix b/modules/user/aesthetics/targets/gtk.nix new file mode 100644 index 0000000..54377af --- /dev/null +++ b/modules/user/aesthetics/targets/gtk.nix @@ -0,0 +1,119 @@ +{ + config, + pkgs, + lib, + ... +}: let + cfg = config.aesthetics.targets.gtk; + aes = config.aesthetics; + + gtkCSS = with aes.scheme; '' + @define-color accent_color #${base0D}; + @define-color accent_bg_color #${base0D}; + @define-color accent_fg_color #${base00}; + @define-color destructive_color #${base08}; + @define-color destructive_bg_color #${base08}; + @define-color destructive_fg_color #${base00}; + @define-color success_color #${base0B}; + @define-color success_bg_color #${base0B}; + @define-color success_fg_color #${base00}; + @define-color warning_color #${base0E}; + @define-color warning_bg_color #${base0E}; + @define-color warning_fg_color #${base00}; + @define-color error_color #${base08}; + @define-color error_bg_color #${base08}; + @define-color error_fg_color #${base00}; + @define-color window_bg_color #${base00}; + @define-color window_fg_color #${base05}; + @define-color view_bg_color #${base00}; + @define-color view_fg_color #${base05}; + @define-color headerbar_bg_color #${base01}; + @define-color headerbar_fg_color #${base05}; + @define-color headerbar_border_color #${base01} + @define-color headerbar_backdrop_color @window_bg_color; + @define-color headerbar_shade_color rgba(0, 0, 0, 0.07); + @define-color headerbar_darker_shade_color rgba(0, 0, 0, 0.07); + @define-color sidebar_bg_color #${base01}; + @define-color sidebar_fg_color #${base05}; + @define-color sidebar_backdrop_color @window_bg_color; + @define-color sidebar_shade_color rgba(0, 0, 0, 0.07); + @define-color secondary_sidebar_bg_color @sidebar_bg_color; + @define-color secondary_sidebar_fg_color @sidebar_fg_color; + @define-color secondary_sidebar_backdrop_color @sidebar_backdrop_color; + @define-color secondary_sidebar_shade_color @sidebar_shade_color; + @define-color card_bg_color #${base01}; + @define-color card_fg_color #${base05}; + @define-color card_shade_color rgba(0, 0, 0, 0.07); + @define-color dialog_bg_color #${base01}; + @define-color dialog_fg_color #${base05}; + @define-color popover_bg_color #${base01}; + @define-color popover_fg_color #${base05}; + @define-color popover_shade_color rgba(0, 0, 0, 0.07); + @define-color shade_color rgba(0, 0, 0, 0.07); + @define-color scrollbar_outline_color #${base02}; + @define-color blue_1 #${base0D}; + @define-color blue_2 #${base0D}; + @define-color blue_3 #${base0D}; + @define-color blue_4 #${base0D}; + @define-color blue_5 #${base0D}; + @define-color green_1 #${base0B}; + @define-color green_2 #${base0B}; + @define-color green_3 #${base0B}; + @define-color green_4 #${base0B}; + @define-color green_5 #${base0B}; + @define-color yellow_1 #${base0A}; + @define-color yellow_2 #${base0A}; + @define-color yellow_3 #${base0A}; + @define-color yellow_4 #${base0A}; + @define-color yellow_5 #${base0A}; + @define-color orange_1 #${base09}; + @define-color orange_2 #${base09}; + @define-color orange_3 #${base09}; + @define-color orange_4 #${base09}; + @define-color orange_5 #${base09}; + @define-color red_1 #${base08}; + @define-color red_2 #${base08}; + @define-color red_3 #${base08}; + @define-color red_4 #${base08}; + @define-color red_5 #${base08}; + @define-color purple_1 #${base0E}; + @define-color purple_2 #${base0E}; + @define-color purple_3 #${base0E}; + @define-color purple_4 #${base0E}; + @define-color purple_5 #${base0E}; + @define-color brown_1 #${base0F}; + @define-color brown_2 #${base0F}; + @define-color brown_3 #${base0F}; + @define-color brown_4 #${base0F}; + @define-color brown_5 #${base0F}; + @define-color light_1 #${base01}; + @define-color light_2 #${base01}; + @define-color light_3 #${base01}; + @define-color light_4 #${base01}; + @define-color light_5 #${base01}; + @define-color dark_1 #${base01}; + @define-color dark_2 #${base01}; + @define-color dark_3 #${base01}; + @define-color dark_4 #${base01}; + @define-color dark_5 #${base01}; + ''; +in { + options.aesthetics.targets.gtk.enable = lib.mkOption { + type = lib.types.bool; + default = (aes.enableAllTargets && aes.hasGui); + description = "Whether to enable the aesthetics GTK target."; + }; + config = lib.mkIf cfg.enable { + gtk = { + enable = true; + theme = { + package = pkgs.adw-gtk3; + name = "adw-gtk3"; + }; + }; + xdg.configFile = { + "gtk-3.0/gtk.css".text = gtkCSS; + "gtk-4.0/gtk.css".text = gtkCSS; + }; + }; +} diff --git a/modules/user/aesthetics/targets/helix.nix b/modules/user/aesthetics/targets/helix.nix new file mode 100644 index 0000000..dde557e --- /dev/null +++ b/modules/user/aesthetics/targets/helix.nix @@ -0,0 +1,28 @@ +{ config, lib, ... }: let + cfg = config.aesthetics.targets.helix; + aes = config.aesthetics; +in { + options.aesthetics.targets.helix = { + enable = lib.mkOption { + type = lib.types.bool; + default = aes.enableAllTargets; + description = "Whether to enable the aesthetics helix target."; + }; + theme = lib.mkOption { + type = lib.types.str; + default = "default"; + description = "The name of the theme to use for helix."; + }; + }; + config = lib.mkIf (cfg.enable && config.programs.helix.enable) { + programs.helix.settings.theme = "custom-default"; + home.file."helix-theme" = { + target = ".config/helix/themes/custom-default.toml"; + text = /*toml*/ '' + inherits = "${cfg.theme}" + "ui.background" = { } + "ui.statusline" = { bg = "" } + ''; + }; + }; +} diff --git a/modules/user/aesthetics/targets/mako.nix b/modules/user/aesthetics/targets/mako.nix new file mode 100644 index 0000000..2ade32e --- /dev/null +++ b/modules/user/aesthetics/targets/mako.nix @@ -0,0 +1,23 @@ +{ + config, + lib, + ... +}: let + cfg = config.aesthetics.targets.mako; + aes = config.aesthetics; +in { + options.aesthetics.targets.mako.enable = lib.mkOption { + type = lib.types.bool; + default = aes.enableAllTargets && aes.hasGui; + description = "Whether to enable the aesthetics mako target."; + }; + config = lib.mkIf (cfg.enable && config.services.mako.enable) { + services.mako.settings = with aes.scheme; { + background-color = "#${base00}"; + border-color = "#${base0C}"; + text-color = "#${base05}"; + progress-color = "over #${base02}"; + font = "${aes.font.name} ${aes.font.size.small}"; + }; + }; +} diff --git a/modules/user/aesthetics/targets/qutebrowser.nix b/modules/user/aesthetics/targets/qutebrowser.nix new file mode 100644 index 0000000..ef7f17d --- /dev/null +++ b/modules/user/aesthetics/targets/qutebrowser.nix @@ -0,0 +1,213 @@ +{ + config, + lib, + ... +}: let + cfg = config.aesthetics.targets.qutebrowser; + aes = config.aesthetics; +in { + options.aesthetics.targets.qutebrowser.enable = lib.mkOption { + type = lib.types.bool; + default = aes.enableAllTargets && aes.hasGui; + description = "Whether to enable the aesthetics qutebrowser target."; + }; + config = lib.mkIf (cfg.enable && config.programs.qutebrowser.enable) { + programs.qutebrowser.settings = { + fonts = { + default_family = aes.font.name; + default_size = "${aes.font.size.small}pt"; + }; + colors = with aes.scheme; let + background = "#${base00}"; + secondary-background = "#${base01}"; + selection-background = "#${base03}"; + foreground = "#${base05}"; + inverted-foreground = "#${base00}"; + error = "#${base08}"; + info = "#${base0B}"; + secondary-info = "#${base0C}"; + warning = "#${base0E}"; + in { + 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 = 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/user/aesthetics/targets/vesktop.nix b/modules/user/aesthetics/targets/vesktop.nix new file mode 100644 index 0000000..968df1a --- /dev/null +++ b/modules/user/aesthetics/targets/vesktop.nix @@ -0,0 +1,65 @@ +{ config, lib, ... }: let + cfg = config.aesthetics.targets.vesktop; + aes = config.aesthetics; +in { + options.aesthetics.targets.vesktop.enable = lib.mkOption { + type = lib.types.bool; + default = (aes.enableAllTargets && aes.hasGui); + description = "Whether to enable the aesthetics vesktop target."; + }; + config = lib.mkIf cfg.enable { + xdg.configFile."vesktop/themes/stylix.theme.css".text = with aes.scheme; '' + :root { + --base00: #${base00}; /* Black */ + --base01: #${base01}; /* Bright Black */ + --base02: #${base02}; /* Grey */ + --base03: #${base03}; /* Brighter Grey */ + --base04: #${base04}; /* Bright Grey */ + --base05: #${base05}; /* White */ + --base06: #${base06}; /* Brighter White */ + --base07: #${base07}; /* Bright White */ + --base08: #${base08}; /* Red */ + --base09: #${base09}; /* Orange */ + --base0A: #${base0A}; /* Yellow */ + --base0B: #${base0B}; /* Green */ + --base0C: #${base0C}; /* Cyan */ + --base0D: #${base0D}; /* Blue */ + --base0E: #${base0E}; /* Purple */ + --base0F: #${base0F}; /* Magenta */ + + --primary-630: var(--base00); /* Autocomplete background */ + --primary-660: var(--base00); /* Search input background */ + } + + .theme-light, .theme-dark { + --search-popout-option-fade: none; /* Disable fade for search popout */ + --bg-overlay-2: var(--base00); /* These 2 are needed for proper threads coloring */ + --home-background: var(--base00); + --bg-overlay-chat : var(--base00); /* Recolor forum channels */ + --background-primary: var(--base00); + --background-secondary: var(--base01); + --background-secondary-alt: var(--base01); + --channeltextarea-background: var(--base01); + --background-tertiary: var(--base00); + --background-accent: var(--base0E); + --background-floating: var(--base01); + --background-modifier-hover: #{{base00-hex}}4c; /* 30% of base00 */ + --background-modifier-selected: var(--base00); + --text-normal: var(--base05); + --text-secondary: var(--base03); + --text-muted: var(--base04); + --text-link: var(--base0C); + --interactive-normal: var(--base05); + --interactive-hover: var(--base05); + --interactive-active: var(--base07); + --interactive-muted: var(--base03); + --channels-default: var(--base04); + --channel-icon: var(--base04); + --header-primary: var(--base06); + --header-secondary: var(--base04); + --scrollbar-thin-track: transparent; + --scrollbar-auto-track: transparent; + } + ''; + }; +} diff --git a/modules/user/aesthetics/targets/zellij.nix b/modules/user/aesthetics/targets/zellij.nix new file mode 100644 index 0000000..cefd8ab --- /dev/null +++ b/modules/user/aesthetics/targets/zellij.nix @@ -0,0 +1,28 @@ +{ config, lib, ... }: let + cfg = config.aesthetics.targets.zellij; + aes = config.aesthetics; +in { + options.aesthetics.targets.zellij.enable = lib.mkOption { + type = lib.types.bool; + default = aes.enableAllTargets; + description = "Whether to enable the aesthetics zellij target."; + }; + config = lib.mkIf (cfg.enable && config.programs.zellij.enable) { + programs.zellij.settings = { + theme = "base16"; + themes.base16 = with aes.scheme; { + bg = "#${base03}"; + fg = "#${base05}"; + red = "#${base08}"; + green = "#${base0B}"; + blue = "#${base0D}"; + yellow = "#${base0A}"; + magenta = "#${base0E}"; + orange = "#${base09}"; + cyan = "#${base0C}"; + black = "#${base00}"; + white = "#${base07}"; + }; + }; + }; +} |
