diff --git a/shared/nixosModules/style/default.nix b/shared/nixosModules/style/default.nix
index e2c1fe1..cbeae11 100644
--- a/shared/nixosModules/style/default.nix
+++ b/shared/nixosModules/style/default.nix
@@ -2,26 +2,24 @@
inputs,
config,
lib,
- lib',
...
}: let
inherit (lib) mkIf;
- inherit (lib.strings) removePrefix;
-
- inherit (lib') generateGtkColors;
cfg = config.local.style;
in {
- imports = [
- ./gtk.nix
- ./options.nix
- inputs.niri.nixosModules.niri
- inputs.hyprland.nixosModules.default
- ];
- config = let
- scheme = inputs.basix.schemeData.base16.${cfg.schemeName};
- in
- mkIf cfg.enable
+ imports =
+ [
+ inputs.niri.nixosModules.niri
+ inputs.hyprland.nixosModules.default
+
+ ./options.nix
+ ]
+ ++ lib.filesystem.listFilesRecursive ./modules;
+
+ config =
+ mkIf
+ cfg.enable
{
home-manager.users.${config.local.systemVars.username} = {
home.pointerCursor = {
@@ -29,602 +27,6 @@ in {
x11.enable = true;
gtk.enable = true;
};
-
- services.swaync.style =
- generateGtkColors lib scheme.palette;
-
- wayland.windowManager.hyprland.settings = {
- env = [
- "HYPRCURSOR_THEME,phinger-cursors-light"
- "HYPRCURSOR_SIZE,32"
- "XCURSOR_SIZE,32"
- ];
- general = {
- border_size = 4;
- "col.active_border" = "rgb(${removePrefix "#" scheme.palette.base0E})";
- };
- decoration = {
- rounding = 10;
- blur.enabled = true;
- };
- };
-
- programs = {
- hyprlock = {
- settings = {
- background = [
- {
- path = "screenshot";
- blur_passes = 3;
- blur_size = 8;
- }
- ];
-
- general = {
- disable_loading_bar = true;
- hide_cursor = true;
- };
-
- label = [
- {
- monitor = "";
- text = "Layout: $LAYOUT";
- font_size = 25;
- color = scheme.palette.base05;
-
- position = "30, -30";
- halign = "left";
- valign = "top";
- }
- {
- monitor = "";
- text = "$TIME";
- font_size = 90;
- color = scheme.palette.base05;
-
- position = "-30, 0";
- halign = "right";
- valign = "top";
- }
- {
- monitor = "";
- text = "cmd[update:43200000] date +\"%A, %d %B %Y\"";
- font_size = 25;
- color = scheme.palette.base05;
-
- position = "-30, -150";
- halign = "right";
- valign = "top";
- }
- ];
-
- image = {
- monitor = "";
- path = "${cfg.avatar}"; # Replace with your avatar path
- size = 100;
- border_color = scheme.palette.base0D;
-
- position = "0, 75";
- halign = "center";
- valign = "center";
- };
-
- input-field = [
- {
- monitor = "";
-
- size = "300, 60";
- outline_thickness = 4;
- dots_size = 0.2;
- dots_spacing = 0.2;
- dots_center = true;
-
- outer_color = scheme.palette.base0D;
- inner_color = scheme.palette.base02;
- font_color = scheme.palette.base05;
-
- fade_on_empty = false;
- placeholder_text = " Logged in as $USER";
-
- hide_input = false;
- check_color = scheme.palette.base0D;
- fail_color = scheme.palette.base08;
-
- fail_text = "$FAIL ($ATTEMPTS)";
- capslock_color = scheme.palette.base0E;
-
- position = "0, -47";
- halign = "center";
- valign = "center";
- }
- ];
- };
- };
- niri = {
- settings = {
- layout.focus-ring.active.color = scheme.palette.base0D;
- cursor = {
- inherit (cfg.cursorTheme) size;
- theme = cfg.cursorTheme.name;
- };
- };
- };
-
- foot.settings.colors = let
- # because someone thought this was a great idea: https://github.com/tinted-theming/schemes/commit/61058a8d2e2bd4482b53d57a68feb56cdb991f0b
- palette = builtins.mapAttrs (_: color: removePrefix "#" color) scheme.palette;
- in {
- background = palette.base00;
- foreground = palette.base05;
-
- regular0 = palette.base00;
- regular1 = palette.base08;
- regular2 = palette.base0B;
- regular3 = palette.base0A;
- regular4 = palette.base0D;
- regular5 = palette.base0E;
- regular6 = palette.base0C;
- regular7 = palette.base05;
-
- bright0 = palette.base02;
- bright1 = palette.base08;
- bright2 = palette.base0B;
- bright3 = palette.base0A;
- bright4 = palette.base0D;
- bright5 = palette.base0E;
- bright6 = palette.base0C;
- bright7 = palette.base07;
-
- "16" = palette.base09;
- "17" = palette.base0F;
- "18" = palette.base01;
- "19" = palette.base02;
- "20" = palette.base04;
- "21" = palette.base06;
- };
-
- waybar.style =
- generateGtkColors lib scheme.palette;
-
- fuzzel.settings = {
- main = {
- font = "sans-serif:size=16";
- };
- colors = {
- background = "${scheme.palette.base01}f2";
- text = "${scheme.palette.base05}ff";
- match = "${scheme.palette.base0E}ff";
- selection = "${scheme.palette.base03}ff";
- selection-text = "${scheme.palette.base06}ff";
- selection-match = "${scheme.palette.base0E}ff";
- border = "${scheme.palette.base0E}ff";
- };
- };
-
- swaylock.settings = {
- inside-color = scheme.palette.base01;
- line-color = scheme.palette.base01;
- ring-color = scheme.palette.base05;
- text-color = scheme.palette.base05;
-
- inside-clear-color = scheme.palette.base0A;
- line-clear-color = scheme.palette.base0A;
- ring-clear-color = scheme.palette.base00;
- text-clear-color = scheme.palette.base00;
-
- inside-caps-lock-color = scheme.palette.base03;
- line-caps-lock-color = scheme.palette.base03;
- ring-caps-lock-color = scheme.palette.base00;
- text-caps-lock-color = scheme.palette.base00;
-
- inside-ver-color = scheme.palette.base0D;
- line-ver-color = scheme.palette.base0D;
- ring-ver-color = scheme.palette.base00;
- text-ver-color = scheme.palette.base00;
-
- inside-wrong-color = scheme.palette.base08;
- line-wrong-color = scheme.palette.base08;
- ring-wrong-color = scheme.palette.base00;
- text-wrong-color = scheme.palette.base00;
-
- caps-lock-bs-hl-color = scheme.palette.base08;
- caps-lock-key-hl-color = scheme.palette.base0D;
- bs-hl-color = scheme.palette.base08;
- key-hl-color = scheme.palette.base0D;
-
- separator-color = "#00000000"; # transparent
- layout-bg-color = "#00000050"; # semi-transparent black
- };
-
- zathura.options = {
- default-fg = scheme.palette.base01;
- default-bg = scheme.palette.base00;
-
- completion-bg = scheme.palette.base01;
- completion-fg = scheme.palette.base0D;
- completion-highlight-bg = scheme.palette.base0D;
- completion-highlight-fg = scheme.palette.base07;
-
- statusbar-fg = scheme.palette.base04;
- statusbar-bg = scheme.palette.base02;
-
- notification-bg = scheme.palette.base00;
- notification-fg = scheme.palette.base07;
- notification-error-bg = scheme.palette.base00;
- notification-error-fg = scheme.palette.base08;
- notification-warning-bg = scheme.palette.base00;
- notification-warning-fg = scheme.palette.base0A;
-
- inputbar-fg = scheme.palette.base07;
- inputbar-bg = scheme.palette.base00;
-
- recolor = false;
- recolor-keephue = false;
- recolor-lightcolor = scheme.palette.base00;
- recolor-darkcolor = scheme.palette.base06;
-
- highlight-color = scheme.palette.base0A;
- highlight-active-color = scheme.palette.base0D;
- };
-
- gnome-terminal.profile = {
- "4621184a-b921-42cf-80a0-7784516606f2".colors = {
- backgroundColor = "#${scheme.palette.base00}";
- foregroundColor = "#${scheme.palette.base05}" "#${scheme.palette.base05}";
- palette = builtins.attrValues (builtins.mapAttrs (_: color: "#${color}") scheme.palette);
- };
- };
-
- fish.interactiveShellInit = ''
- set fish_cursor_default block blink
- set fish_cursor_insert line blink
- set fish_cursor_replace_one underscore blink
- set fish_cursor_visual block
-
- set -x fish_color_autosuggestion brblack
- set -x fish_color_cancel -r
- set -x fish_color_command brgreen
- set -x fish_color_comment brmagenta
- set -x fish_color_cwd green
- set -x fish_color_cwd_root red
- set -x fish_color_end brmagenta
- set -x fish_color_error brred
- set -x fish_color_escape brcyan
- set -x fish_color_history_current --bold
- set -x fish_color_host normal
- set -x fish_color_host_remote yellow
- set -x fish_color_match --background=brblue
- set -x fish_color_normal normal
- set -x fish_color_operator cyan
- set -x fish_color_param brblue
- set -x fish_color_quote yellow
- set -x fish_color_redirection bryellow
- set -x fish_color_search_match 'bryellow' '--background=brblack'
- set -x fish_color_selection 'white' '--bold' '--background=brblack'
- set -x fish_color_status red
- set -x fish_color_user brgreen
- set -x fish_color_valid_path --underline
- set -x fish_pager_color_completion normal
- set -x fish_pager_color_description yellow
- set -x fish_pager_color_prefix 'white' '--bold' '--underline'
- set -x fish_pager_color_progress 'brwhite' '--background=cyan'
- '';
-
- starship.settings = {
- directory = {
- style = "bold yellow";
- };
- character = {
- format = "$symbol ";
- success_symbol = "[➜](bold green)";
- error_symbol = "[✗](bold red)";
- vicmd_symbol = "[](bold green)";
- };
- cmd_duration = {
- style = "yellow";
- format = "[ $duration]($style)";
- };
- };
-
- nvf.settings.vim.theme = {
- enable = true;
- name = "base16";
- base16-colors = scheme.palette;
- };
- };
- xdg.configFile."equibop/themes/midnight-base16.css".text = with scheme.palette; ''
- /**
- * @name Midnight-base16
- * @description A dark, rounded discord theme. Updated to use base16 colors.
- * @author refact0r
- * @version 1.6.2
- * @invite nz87hXyvcy
- * @website https://github.com/refact0r/midnight-discord
- * @source https://github.com/refact0r/midnight-discord/blob/master/midnight.theme.css
- * @authorId 508863359777505290
- * @authorLink https://www.refact0r.dev
- */
-
- /* IMPORTANT: make sure to enable dark mode in discord settings for the theme to apply properly!!! */
-
- @import url('https://refact0r.github.io/midnight-discord/midnight.css');
-
- /* customize things here */
- :root {
- /* font, change to 'gg sans' for default discord font*/
- --font: 'gg sans';
-
- /* top left corner text */
- --corner-text: '${scheme.name}';
-
- /* color of status indicators and window controls */
- --online-indicator: ${base0B}; /* change to #23a55a for default green */
- --dnd-indicator: ${base08}; /* change to #f13f43 for default red */
- --idle-indicator: ${base0A}; /* change to #f0b232 for default yellow */
- --streaming-indicator: ${base0E}; /* change to #593695 for default purple */
-
- /* accent colors */
- --accent-1: ${base0D}; /* links */
- --accent-2: ${base0E}; /* general unread/mention elements, some icons when active */
- --accent-3: ${base0E}; /* accent buttons */
- --accent-4: ${base03}; /* accent buttons when hovered */
- --accent-5: ${base07}; /* accent buttons when clicked */
- --mention: ${base00}1a; /* mentions & mention messages */
- --mention-hover: ${base00}0d; /* mentions & mention messages when hovered */
-
- /* text colors */
- --text-0: var(--bg-4); /* text on colored elements */
- --text-1: ${base06}; /* other normally white text */
- --text-2: ${base06}; /* headings and important text */
- --text-3: ${base05}; /* normal text */
- --text-4: ${base05}; /* icon buttons and channels */
- --text-5: ${base04}; /* muted channels/chats and timestamps */
-
- /* background and dark colors */
- --bg-1: ${base0E}; /* dark buttons when clicked */
- --bg-2: ${base02}; /* dark buttons */
- --bg-3: ${base01}; /* spacing, secondary elements */
- --bg-4: ${base00}; /* main background color */
- --hover: ${base03}1a; /* channels and buttons when hovered */
- --active: ${base03}33; /* channels and buttons when clicked or selected */
- --message-hover: #0000001a; /* messages when hovered */
-
- /* amount of spacing and padding */
- --spacing: 12px;
-
- /* animations */
- /* ALL ANIMATIONS CAN BE DISABLED WITH REDUCED MOTION IN DISCORD SETTINGS */
- --list-item-transition: 0.2s ease; /* channels/members/settings hover transition */
- --unread-bar-transition: 0.2s ease; /* unread bar moving into view transition */
- --moon-spin-transition: 0.4s ease; /* moon icon spin */
- --icon-spin-transition: 1s ease; /* round icon button spin (settings, emoji, etc.) */
-
- /* corner roundness (border-radius) */
- --roundness-xl: 22px; /* roundness of big panel outer corners */
- --roundness-l: 20px; /* popout panels */
- --roundness-m: 16px; /* smaller panels, images, embeds */
- --roundness-s: 12px; /* members, settings inputs */
- --roundness-xs: 10px; /* channels, buttons */
- --roundness-xxs: 8px; /* searchbar, small elements */
-
- /* direct messages moon icon */
- /* change to block to show, none to hide */
- --discord-icon: none; /* discord icon */
- --moon-icon: block; /* moon icon */
- --moon-icon-url: url('https://upload.wikimedia.org/wikipedia/commons/c/c4/Font_Awesome_5_solid_moon.svg'); /* custom icon url */
- --moon-icon-size: auto;
-
- /* filter uncolorable elements to fit theme */
- /* (just set to none, they're too much work to configure) */
- --login-bg-filter: saturate(0.3) hue-rotate(-15deg) brightness(0.4); /* login background artwork */
- --green-to-accent-3-filter: hue-rotate(56deg) saturate(1.43); /* add friend page explore icon */
- --blurple-to-accent-3-filter: hue-rotate(304deg) saturate(0.84) brightness(1.2); /* add friend page school icon */
- }
-
- /* Selected chat/friend text */
- .selected_f5eb4b,
- .selected_f6f816 .link_d8bfb3 {
- color: var(--text-0) !important;
- background: var(--accent-3) !important;
- }
-
- .selected_f6f816 .link_d8bfb3 * {
- color: var(--text-0) !important;
- fill: var(--text-0) !important;
- }
- '';
-
- # based on https://github.com/rose-pine/tidal. adapted to work with base16 colors.
- xdg.configFile."tidal-hifi/themes/base16.css".text = with scheme.palette; ''
- :root {
- --glass-white-1: ${base05};
- --glass-white-1-hover: ${base06};
- --glass-white-2: ${base07};
- --glass-white-2-hover: ${base08};
- --glass-white-3: ${base07};
- --glass-white-4: ${base04};
- --glass-white-5: ${base04};
- --glass-white-6: ${base05};
- --snow-white: ${base07};
- --snow-white-hover: ${base08};
- --gray-4: ${base00};
- --gray-5: ${base02};
- --gray-6: ${base03};
- --gray-7: ${base04};
- --cyan-blue: ${base0D};
- --cyan-blue-hover: ${base0C};
- --glass-cyan-1: ${base04};
- --glass-cyan-2: ${base05};
- --glass-cyan-3: ${base06};
- --master-gold: ${base0E};
- --master-gold-hover: ${base08};
- --glass-master-gold: ${base05};
- --glass-master-gold-2: ${base06};
- --raspberry-pink: ${base08};
- --raspberry-pink-lighter: ${base09};
- --black: ${base00};
- --midnight-black: ${base00};
- --controls-overlay: ${base03};
- --duration-overlay: ${base02};
- --background-dark: ${base00};
- --hoverLighten: brightness(130%);
- --hoverDarken: brightness(70%);
- --hoverTransition: filter 0.15s ease;
- --scrollbar-track: ${base03};
- --scrollbar-thumb: ${base00};
- --lighten-25: ${base01};
- --red-alert: ${base08};
- --user-profile-linear-gradient: linear-gradient(160deg,${base0D} 1.22%,${base0C} 40.51%,${base00} 79.07%);
- --wave-border-radius--none: 0px;
- --wave-border-radius--extra-small: 4px;
- --wave-border-radius--small: 8px;
- --wave-border-radius--regular: 12px;
- --wave-border-radius--full: 1000px;
- --wave-color-material-dark: ${base00}80;
- --wave-color-material-light: ${base04}33;
- --wave-color-opacity-accent-dark-ultra-thick: ${base0C}cc;
- --wave-color-opacity-accent-darkest-ultra-thick: ${base01};
- --wave-color-opacity-accent-fill-regular: ${base0C}66;
- --wave-color-opacity-accent-fill-thin: ${base0C}33;
- --wave-color-opacity-accent-fill-ultra-thick: ${base0C}cc;
- --wave-color-opacity-accent-fill-ultra-thin: ${base0C}1a;
- --wave-color-opacity-base-bright-thick: ${base00}99;
- --wave-color-opacity-base-bright-thin: ${base00}33;
- --wave-color-opacity-base-bright-transparent: ${base00};
- --wave-color-opacity-base-bright-ultra-thick: ${base00}cc;
- --wave-color-opacity-base-brighter-ultra-thick: ${base01}cc;
- --wave-color-opacity-base-brightest-regular: ${base02}66;
- --wave-color-opacity-base-brightest-thin: ${base02}33;
- --wave-color-opacity-base-brightest-ultra-thin: ${base02}1a;
- --wave-color-opacity-base-fill-regular: ${base00}66;
- --wave-color-opacity-base-fill-thick: ${base00}99;
- --wave-color-opacity-base-fill-thin: ${base00}33;
- --wave-color-opacity-base-fill-transparent: #000;
- --wave-color-opacity-base-fill-ultra-thick: ${base00}cc;
- --wave-color-opacity-base-fill-ultra-thin: ${base00}1a;
- --wave-color-opacity-contrast-fill-regular: ${base07}66;
- --wave-color-opacity-contrast-fill-thick: ${base07}99;
- --wave-color-opacity-contrast-fill-thin: ${base07}33;
- --wave-color-opacity-contrast-fill-transparent: #fff;
- --wave-color-opacity-contrast-fill-ultra-thick: ${base07}cc;
- --wave-color-opacity-contrast-fill-ultra-thin: ${base07}1a;
- --wave-color-opacity-rainbow-blue-thin: ${base0D}33;
- --wave-color-opacity-rainbow-yellow-fill-regular: ${base0E}66;
- --wave-color-opacity-rainbow-yellow-fill-thin: ${base0E}33;
- --wave-color-opacity-rainbow-yellow-fill-ultra-thick: ${base0E}cc;
- --wave-color-opacity-rainbow-yellow-fill-ultra-thin: ${base0E}1a;
- --wave-color-opacity-special-fill-regular: ${base0E}66;
- --wave-color-opacity-special-fill-thin: ${base0E}33;
- --wave-color-opacity-special-fill-ultra-thick: ${base0E}cc;
- --wave-color-opacity-special-fill-ultra-thin: ${base0E}1a;
- --wave-color-services-facebook: ${base0D};
- --wave-color-services-instagram-red: ${base08};
- --wave-color-services-mtn: ${base0E};
- --wave-color-services-musix-orange: ${base09};
- --wave-color-services-musix-pink: ${base0E};
- --wave-color-services-play: ${base0C};
- --wave-color-services-plus: ${base0B};
- --wave-color-services-snapchat: ${base0A};
- --wave-color-services-sprint: ${base0A};
- --wave-color-services-t-mobile: ${base08};
- --wave-color-services-tik-tok-blue: ${base0D};
- --wave-color-services-tik-tok-red: ${base08};
- --wave-color-services-twitter: ${base0D};
- --wave-color-services-viacom-1: ${base0D};
- --wave-color-services-viacom-2: ${base0E};
- --wave-color-services-viacom-3: ${base08};
- --wave-color-services-viacom-4: ${base09};
- --wave-color-services-viacom-5: ${base0E};
- --wave-color-services-vivo: ${base0E};
- --wave-color-services-vodafone: ${base08};
- --wave-color-services-waze: ${base0D};
- --wave-color-solid-accent-bright: ${base0D};
- --wave-color-solid-accent-brighter: ${base0D};
- --wave-color-solid-accent-dark: ${base0C};
- --wave-color-solid-accent-darker: ${base01};
- --wave-color-solid-accent-darkest: ${base00};
- --wave-color-solid-accent-fill: ${base0D};
- --wave-color-solid-base-bright: ${base00};
- --wave-color-solid-base-brighter: ${base01};
- --wave-color-solid-base-brightest: ${base02};
- --wave-color-solid-base-fill: ${base00};
- --wave-color-solid-contrast-dark: ${base07};
- --wave-color-solid-contrast-darker: ${base06};
- --wave-color-solid-contrast-darkest: ${base05};
- --wave-color-solid-contrast-fill: ${base07};
- --wave-color-solid-rainbow-blue-fill: ${base0D};
- --wave-color-solid-rainbow-green-brighter: ${base0D};
- --wave-color-solid-rainbow-green-dark: ${base0C};
- --wave-color-solid-rainbow-green-darker: ${base0C};
- --wave-color-solid-rainbow-green-darkest: ${base01};
- --wave-color-solid-rainbow-green-fill: ${base0D};
- --wave-color-solid-rainbow-orange-fill: ${base09};
- --wave-color-solid-rainbow-purple-fill: ${base0E};
- --wave-color-solid-rainbow-red-bright: ${base08};
- --wave-color-solid-rainbow-red-brighter: ${base08};
- --wave-color-solid-rainbow-red-dark: ${base09};
- --wave-color-solid-rainbow-red-darker: ${base01};
- --wave-color-solid-rainbow-red-darkest: ${base00};
- --wave-color-solid-rainbow-red-fill: ${base08};
- --wave-color-solid-rainbow-yellow-bright: ${base0A};
- --wave-color-solid-rainbow-yellow-brighter: ${base06};
- --wave-color-solid-rainbow-yellow-dark: ${base09};
- --wave-color-solid-rainbow-yellow-darker: ${base01};
- --wave-color-solid-rainbow-yellow-darkest: ${base00};
- --wave-color-solid-rainbow-yellow-fill: ${base0A};
- --wave-color-solid-special-bright: ${base09};
- --wave-color-solid-special-brighter: ${base06};
- --wave-color-solid-special-dark: ${base09};
- --wave-color-solid-special-darker: ${base09};
- --wave-color-solid-special-darkest: ${base00};
- --wave-color-solid-special-fill: ${base0E};
- --wave-color-solid-warning-bright: ${base08};
- --wave-color-solid-warning-brighter: ${base09};
- --wave-color-solid-warning-dark: ${base09};
- --wave-color-solid-warning-darker: ${base01};
- --wave-color-solid-warning-darkest: ${base00};
- --wave-color-solid-warning-fill: ${base08};
- --wave-color-text-disabled: ${base02};
- --wave-color-text-link: ${base0D};
- --wave-color-text-main: ${base07};
- --wave-color-text-placeholder: ${base02};
- --wave-color-text-secondary: ${base06};
- --wave-color-text-tertiary: ${base05};
- --wave-font-weight--bold: 700;
- --wave-font-weight--demi: 600;
- --wave-font-weight--medium: 500;
- --wave-opacity--ultra-thin: .05;
- --wave-opacity--thin: .1;
- --wave-opacity--regular: .4;
- --wave-opacity--thick: .6;
- --wave-opacity--ultra-thick: .8;
- --wave-spacing--extra-extra-large: 64px;
- --wave-spacing--extra-large: 40px;
- --wave-spacing--large: 24px;
- --wave-spacing--medium: 20px;
- --wave-spacing--regular: 16px;
- --wave-spacing--small: 12px;
- --wave-spacing--extra-small: 8px;
- --wave-spacing--extra-extra-small: 4px;
- }
-
- .wave-text-caption-demi, .tidal-ui__v-stack {
- color: var(--wave-color-solid-accent-bright) !important;
- }
-
- .tidal-ui__icon {
- fill: var(--wave-color-solid-rainbow-purple-fill) !important;
- stroke: var(--wave-color-solid-rainbow-purple-fill) !important;
- }
- '';
-
- gtk = rec {
- gtk3.extraConfig = {
- gtk-application-prefer-dark-theme = scheme.variant == "dark";
- };
- gtk4.extraConfig = gtk3.extraConfig;
- };
- dconf.settings."org/gnome/desktop/interface".color-scheme = "prefer-${scheme.variant}";
};
};
}
diff --git a/shared/nixosModules/style/gtk.nix b/shared/nixosModules/style/gtk.nix
deleted file mode 100644
index c281763..0000000
--- a/shared/nixosModules/style/gtk.nix
+++ /dev/null
@@ -1,15 +0,0 @@
-{config, ...}: let
- cfg = config.local.style.gtk;
-in {
- home-manager.users.${config.local.systemVars.username} = {
- gtk = {
- enable = true;
- iconTheme = {
- inherit (cfg.iconTheme) name package;
- };
- theme = {
- inherit (cfg.theme) name package;
- };
- };
- };
-}
diff --git a/shared/nixosModules/style/modules/discord.nix b/shared/nixosModules/style/modules/discord.nix
new file mode 100644
index 0000000..93e1a7d
--- /dev/null
+++ b/shared/nixosModules/style/modules/discord.nix
@@ -0,0 +1,114 @@
+{
+ lib,
+ config,
+ ...
+}: let
+ cfg = config.local.style;
+ inherit (cfg) scheme;
+in {
+ config.home-manager.sharedModules = lib.mkIf cfg.enable [
+ {
+ xdg.configFile."equibop/themes/midnight-base16.css".text = with scheme.palette; ''
+ /**
+ * @name Midnight-base16
+ * @description A dark, rounded discord theme. Updated to use base16 colors.
+ * @author refact0r
+ * @version 1.6.2
+ * @invite nz87hXyvcy
+ * @website https://github.com/refact0r/midnight-discord
+ * @source https://github.com/refact0r/midnight-discord/blob/master/midnight.theme.css
+ * @authorId 508863359777505290
+ * @authorLink https://www.refact0r.dev
+ */
+
+ /* IMPORTANT: make sure to enable dark mode in discord settings for the theme to apply properly!!! */
+
+ @import url('https://refact0r.github.io/midnight-discord/midnight.css');
+
+ /* customize things here */
+ :root {
+ /* font, change to 'gg sans' for default discord font*/
+ --font: 'gg sans';
+
+ /* top left corner text */
+ --corner-text: '${scheme.name}';
+
+ /* color of status indicators and window controls */
+ --online-indicator: ${base0B}; /* change to #23a55a for default green */
+ --dnd-indicator: ${base08}; /* change to #f13f43 for default red */
+ --idle-indicator: ${base0A}; /* change to #f0b232 for default yellow */
+ --streaming-indicator: ${base0E}; /* change to #593695 for default purple */
+
+ /* accent colors */
+ --accent-1: ${base0D}; /* links */
+ --accent-2: ${base0E}; /* general unread/mention elements, some icons when active */
+ --accent-3: ${base0E}; /* accent buttons */
+ --accent-4: ${base03}; /* accent buttons when hovered */
+ --accent-5: ${base07}; /* accent buttons when clicked */
+ --mention: ${base00}1a; /* mentions & mention messages */
+ --mention-hover: ${base00}0d; /* mentions & mention messages when hovered */
+
+ /* text colors */
+ --text-0: var(--bg-4); /* text on colored elements */
+ --text-1: ${base06}; /* other normally white text */
+ --text-2: ${base06}; /* headings and important text */
+ --text-3: ${base05}; /* normal text */
+ --text-4: ${base05}; /* icon buttons and channels */
+ --text-5: ${base04}; /* muted channels/chats and timestamps */
+
+ /* background and dark colors */
+ --bg-1: ${base0E}; /* dark buttons when clicked */
+ --bg-2: ${base02}; /* dark buttons */
+ --bg-3: ${base01}; /* spacing, secondary elements */
+ --bg-4: ${base00}; /* main background color */
+ --hover: ${base03}1a; /* channels and buttons when hovered */
+ --active: ${base03}33; /* channels and buttons when clicked or selected */
+ --message-hover: #0000001a; /* messages when hovered */
+
+ /* amount of spacing and padding */
+ --spacing: 12px;
+
+ /* animations */
+ /* ALL ANIMATIONS CAN BE DISABLED WITH REDUCED MOTION IN DISCORD SETTINGS */
+ --list-item-transition: 0.2s ease; /* channels/members/settings hover transition */
+ --unread-bar-transition: 0.2s ease; /* unread bar moving into view transition */
+ --moon-spin-transition: 0.4s ease; /* moon icon spin */
+ --icon-spin-transition: 1s ease; /* round icon button spin (settings, emoji, etc.) */
+
+ /* corner roundness (border-radius) */
+ --roundness-xl: 22px; /* roundness of big panel outer corners */
+ --roundness-l: 20px; /* popout panels */
+ --roundness-m: 16px; /* smaller panels, images, embeds */
+ --roundness-s: 12px; /* members, settings inputs */
+ --roundness-xs: 10px; /* channels, buttons */
+ --roundness-xxs: 8px; /* searchbar, small elements */
+
+ /* direct messages moon icon */
+ /* change to block to show, none to hide */
+ --discord-icon: none; /* discord icon */
+ --moon-icon: block; /* moon icon */
+ --moon-icon-url: url('https://upload.wikimedia.org/wikipedia/commons/c/c4/Font_Awesome_5_solid_moon.svg'); /* custom icon url */
+ --moon-icon-size: auto;
+
+ /* filter uncolorable elements to fit theme */
+ /* (just set to none, they're too much work to configure) */
+ --login-bg-filter: saturate(0.3) hue-rotate(-15deg) brightness(0.4); /* login background artwork */
+ --green-to-accent-3-filter: hue-rotate(56deg) saturate(1.43); /* add friend page explore icon */
+ --blurple-to-accent-3-filter: hue-rotate(304deg) saturate(0.84) brightness(1.2); /* add friend page school icon */
+ }
+
+ /* Selected chat/friend text */
+ .selected_f5eb4b,
+ .selected_f6f816 .link_d8bfb3 {
+ color: var(--text-0) !important;
+ background: var(--accent-3) !important;
+ }
+
+ .selected_f6f816 .link_d8bfb3 * {
+ color: var(--text-0) !important;
+ fill: var(--text-0) !important;
+ }
+ '';
+ }
+ ];
+}
diff --git a/shared/nixosModules/style/modules/fish.nix b/shared/nixosModules/style/modules/fish.nix
new file mode 100644
index 0000000..24fe0de
--- /dev/null
+++ b/shared/nixosModules/style/modules/fish.nix
@@ -0,0 +1,46 @@
+{
+ lib,
+ config,
+ ...
+}: let
+ cfg = config.local.style;
+in {
+ config.home-manager.sharedModules = lib.mkIf cfg.enable [
+ {
+ programs.fish.interactiveShellInit = ''
+ set fish_cursor_default block blink
+ set fish_cursor_insert line blink
+ set fish_cursor_replace_one underscore blink
+ set fish_cursor_visual block
+
+ set -x fish_color_autosuggestion brblack
+ set -x fish_color_cancel -r
+ set -x fish_color_command brgreen
+ set -x fish_color_comment brmagenta
+ set -x fish_color_cwd green
+ set -x fish_color_cwd_root red
+ set -x fish_color_end brmagenta
+ set -x fish_color_error brred
+ set -x fish_color_escape brcyan
+ set -x fish_color_history_current --bold
+ set -x fish_color_host normal
+ set -x fish_color_host_remote yellow
+ set -x fish_color_match --background=brblue
+ set -x fish_color_normal normal
+ set -x fish_color_operator cyan
+ set -x fish_color_param brblue
+ set -x fish_color_quote yellow
+ set -x fish_color_redirection bryellow
+ set -x fish_color_search_match 'bryellow' '--background=brblack'
+ set -x fish_color_selection 'white' '--bold' '--background=brblack'
+ set -x fish_color_status red
+ set -x fish_color_user brgreen
+ set -x fish_color_valid_path --underline
+ set -x fish_pager_color_completion normal
+ set -x fish_pager_color_description yellow
+ set -x fish_pager_color_prefix 'white' '--bold' '--underline'
+ set -x fish_pager_color_progress 'brwhite' '--background=cyan'
+ '';
+ }
+ ];
+}
diff --git a/shared/nixosModules/style/modules/foot.nix b/shared/nixosModules/style/modules/foot.nix
new file mode 100644
index 0000000..d7ab1a7
--- /dev/null
+++ b/shared/nixosModules/style/modules/foot.nix
@@ -0,0 +1,44 @@
+{
+ lib,
+ config,
+ ...
+}: let
+ cfg = config.local.style;
+in {
+ config.home-manager.sharedModules = lib.mkIf cfg.enable [
+ {
+ programs.foot.settings.colors = let
+ # because someone thought this was a great idea: https://github.com/tinted-theming/schemes/commit/61058a8d2e2bd4482b53d57a68feb56cdb991f0b
+ palette = builtins.mapAttrs (_: color: lib.removePrefix "#" color) cfg.scheme.palette;
+ in {
+ background = palette.base00;
+ foreground = palette.base05;
+
+ regular0 = palette.base00;
+ regular1 = palette.base08;
+ regular2 = palette.base0B;
+ regular3 = palette.base0A;
+ regular4 = palette.base0D;
+ regular5 = palette.base0E;
+ regular6 = palette.base0C;
+ regular7 = palette.base05;
+
+ bright0 = palette.base02;
+ bright1 = palette.base08;
+ bright2 = palette.base0B;
+ bright3 = palette.base0A;
+ bright4 = palette.base0D;
+ bright5 = palette.base0E;
+ bright6 = palette.base0C;
+ bright7 = palette.base07;
+
+ "16" = palette.base09;
+ "17" = palette.base0F;
+ "18" = palette.base01;
+ "19" = palette.base02;
+ "20" = palette.base04;
+ "21" = palette.base06;
+ };
+ }
+ ];
+}
diff --git a/shared/nixosModules/style/modules/fuzzel.nix b/shared/nixosModules/style/modules/fuzzel.nix
new file mode 100644
index 0000000..8c2b8d7
--- /dev/null
+++ b/shared/nixosModules/style/modules/fuzzel.nix
@@ -0,0 +1,27 @@
+{
+ lib,
+ config,
+ ...
+}: let
+ cfg = config.local.style;
+ inherit (cfg) scheme;
+in {
+ config.home-manager.sharedModules = lib.mkIf cfg.enable [
+ {
+ programs.fuzzel.settings = {
+ main = {
+ font = "sans-serif:size=16";
+ };
+ colors = {
+ background = "${scheme.palette.base01}f2";
+ text = "${scheme.palette.base05}ff";
+ match = "${scheme.palette.base0E}ff";
+ selection = "${scheme.palette.base03}ff";
+ selection-text = "${scheme.palette.base06}ff";
+ selection-match = "${scheme.palette.base0E}ff";
+ border = "${scheme.palette.base0E}ff";
+ };
+ };
+ }
+ ];
+}
diff --git a/shared/nixosModules/style/modules/gtk.nix b/shared/nixosModules/style/modules/gtk.nix
new file mode 100644
index 0000000..2bce480
--- /dev/null
+++ b/shared/nixosModules/style/modules/gtk.nix
@@ -0,0 +1,30 @@
+{
+ lib,
+ config,
+ scheme,
+ ...
+}: let
+ cfg = config.local.style;
+ inherit (cfg) scheme;
+in {
+ home-manager.sharedModules = lib.mkIf cfg.enable [
+ {
+ gtk = rec {
+ enable = true;
+ iconTheme = {
+ inherit (cfg.gtk.iconTheme) name package;
+ };
+ theme = {
+ inherit (cfg.gtk.theme) name package;
+ };
+
+ gtk3.extraConfig = {
+ gtk-application-prefer-dark-theme = scheme.variant == "dark";
+ };
+ gtk4.extraConfig = gtk3.extraConfig;
+ };
+
+ dconf.settings."org/gnome/desktop/interface".color-scheme = "prefer-${scheme.variant}";
+ }
+ ];
+}
diff --git a/shared/nixosModules/style/modules/hyprland.nix b/shared/nixosModules/style/modules/hyprland.nix
new file mode 100644
index 0000000..d0a21bd
--- /dev/null
+++ b/shared/nixosModules/style/modules/hyprland.nix
@@ -0,0 +1,27 @@
+{
+ lib,
+ config,
+ ...
+}: let
+ cfg = config.local.style;
+in {
+ config.home-manager.sharedModules = lib.mkIf cfg.enable [
+ {
+ wayland.windowManager.hyprland.settings = {
+ env = [
+ "HYPRCURSOR_THEME,phinger-cursors-light"
+ "HYPRCURSOR_SIZE,32"
+ "XCURSOR_SIZE,32"
+ ];
+ general = {
+ border_size = 4;
+ "col.active_border" = "rgb(${lib.removePrefix "#" cfg.scheme.palette.base0E})";
+ };
+ decoration = {
+ rounding = 10;
+ blur.enabled = true;
+ };
+ };
+ }
+ ];
+}
diff --git a/shared/nixosModules/style/modules/hyprlock.nix b/shared/nixosModules/style/modules/hyprlock.nix
new file mode 100644
index 0000000..8564424
--- /dev/null
+++ b/shared/nixosModules/style/modules/hyprlock.nix
@@ -0,0 +1,103 @@
+{
+ lib,
+ config,
+ ...
+}: let
+ cfg = config.local.style;
+ inherit (cfg) scheme;
+in {
+ config.home-manager.sharedModules = lib.mkIf cfg.enable [
+ {
+ programs.hyprlock = {
+ settings = {
+ background = [
+ {
+ path = "screenshot";
+ blur_passes = 3;
+ blur_size = 8;
+ }
+ ];
+
+ general = {
+ disable_loading_bar = true;
+ hide_cursor = true;
+ };
+
+ label = [
+ {
+ monitor = "";
+ text = "Layout: $LAYOUT";
+ font_size = 25;
+ color = scheme.palette.base05;
+
+ position = "30, -30";
+ halign = "left";
+ valign = "top";
+ }
+ {
+ monitor = "";
+ text = "$TIME";
+ font_size = 90;
+ color = scheme.palette.base05;
+
+ position = "-30, 0";
+ halign = "right";
+ valign = "top";
+ }
+ {
+ monitor = "";
+ text = "cmd[update:43200000] date +\"%A, %d %B %Y\"";
+ font_size = 25;
+ color = scheme.palette.base05;
+
+ position = "-30, -150";
+ halign = "right";
+ valign = "top";
+ }
+ ];
+
+ image = {
+ monitor = "";
+ path = "${cfg.avatar}"; # Replace with your avatar path
+ size = 100;
+ border_color = scheme.palette.base0D;
+
+ position = "0, 75";
+ halign = "center";
+ valign = "center";
+ };
+
+ input-field = [
+ {
+ monitor = "";
+
+ size = "300, 60";
+ outline_thickness = 4;
+ dots_size = 0.2;
+ dots_spacing = 0.2;
+ dots_center = true;
+
+ outer_color = scheme.palette.base0D;
+ inner_color = scheme.palette.base02;
+ font_color = scheme.palette.base05;
+
+ fade_on_empty = false;
+ placeholder_text = " Logged in as $USER";
+
+ hide_input = false;
+ check_color = scheme.palette.base0D;
+ fail_color = scheme.palette.base08;
+
+ fail_text = "$FAIL ($ATTEMPTS)";
+ capslock_color = scheme.palette.base0E;
+
+ position = "0, -47";
+ halign = "center";
+ valign = "center";
+ }
+ ];
+ };
+ };
+ }
+ ];
+}
diff --git a/shared/nixosModules/style/modules/niri.nix b/shared/nixosModules/style/modules/niri.nix
new file mode 100644
index 0000000..a25b136
--- /dev/null
+++ b/shared/nixosModules/style/modules/niri.nix
@@ -0,0 +1,21 @@
+{
+ lib,
+ config,
+ ...
+}: let
+ cfg = config.local.style;
+in {
+ config.home-manager.sharedModules = lib.mkIf cfg.enable [
+ {
+ programs.niri = {
+ settings = {
+ layout.focus-ring.active.color = cfg.scheme.palette.base0D;
+ cursor = {
+ inherit (cfg.cursorTheme) size;
+ theme = cfg.cursorTheme.name;
+ };
+ };
+ };
+ }
+ ];
+}
diff --git a/shared/nixosModules/style/modules/nvf.nix b/shared/nixosModules/style/modules/nvf.nix
new file mode 100644
index 0000000..93be707
--- /dev/null
+++ b/shared/nixosModules/style/modules/nvf.nix
@@ -0,0 +1,17 @@
+{
+ lib,
+ config,
+ ...
+}: let
+ cfg = config.local.style;
+in {
+ config.home-manager.sharedModules = lib.mkIf cfg.enable [
+ {
+ programs.nvf.settings.vim.theme = {
+ enable = true;
+ name = "base16";
+ base16-colors = cfg.scheme.palette;
+ };
+ }
+ ];
+}
diff --git a/shared/nixosModules/style/modules/starship.nix b/shared/nixosModules/style/modules/starship.nix
new file mode 100644
index 0000000..b0d0007
--- /dev/null
+++ b/shared/nixosModules/style/modules/starship.nix
@@ -0,0 +1,27 @@
+{
+ lib,
+ config,
+ ...
+}: let
+ cfg = config.local.style;
+in {
+ config.home-manager.sharedModules = lib.mkIf cfg.enable [
+ {
+ programs.starship.settings = {
+ directory = {
+ style = "bold yellow";
+ };
+ character = {
+ format = "$symbol ";
+ success_symbol = "[➜](bold green)";
+ error_symbol = "[✗](bold red)";
+ vicmd_symbol = "[](bold green)";
+ };
+ cmd_duration = {
+ style = "yellow";
+ format = "[ $duration]($style)";
+ };
+ };
+ }
+ ];
+}
diff --git a/shared/nixosModules/style/modules/swaylock.nix b/shared/nixosModules/style/modules/swaylock.nix
new file mode 100644
index 0000000..ec1d416
--- /dev/null
+++ b/shared/nixosModules/style/modules/swaylock.nix
@@ -0,0 +1,47 @@
+{
+ lib,
+ config,
+ ...
+}: let
+ cfg = config.local.style;
+ inherit (cfg) scheme;
+in {
+ config.home-manager.sharedModules = lib.mkIf cfg.enable [
+ {
+ programs.swaylock.settings = {
+ inside-color = scheme.palette.base01;
+ line-color = scheme.palette.base01;
+ ring-color = scheme.palette.base05;
+ text-color = scheme.palette.base05;
+
+ inside-clear-color = scheme.palette.base0A;
+ line-clear-color = scheme.palette.base0A;
+ ring-clear-color = scheme.palette.base00;
+ text-clear-color = scheme.palette.base00;
+
+ inside-caps-lock-color = scheme.palette.base03;
+ line-caps-lock-color = scheme.palette.base03;
+ ring-caps-lock-color = scheme.palette.base00;
+ text-caps-lock-color = scheme.palette.base00;
+
+ inside-ver-color = scheme.palette.base0D;
+ line-ver-color = scheme.palette.base0D;
+ ring-ver-color = scheme.palette.base00;
+ text-ver-color = scheme.palette.base00;
+
+ inside-wrong-color = scheme.palette.base08;
+ line-wrong-color = scheme.palette.base08;
+ ring-wrong-color = scheme.palette.base00;
+ text-wrong-color = scheme.palette.base00;
+
+ caps-lock-bs-hl-color = scheme.palette.base08;
+ caps-lock-key-hl-color = scheme.palette.base0D;
+ bs-hl-color = scheme.palette.base08;
+ key-hl-color = scheme.palette.base0D;
+
+ separator-color = "#00000000"; # transparent
+ layout-bg-color = "#00000050"; # semi-transparent black
+ };
+ }
+ ];
+}
diff --git a/shared/nixosModules/style/modules/swaync.nix b/shared/nixosModules/style/modules/swaync.nix
new file mode 100644
index 0000000..b4e517c
--- /dev/null
+++ b/shared/nixosModules/style/modules/swaync.nix
@@ -0,0 +1,14 @@
+{
+ config,
+ lib,
+ lib',
+ ...
+}: let
+ cfg = config.local.style;
+in {
+ config.home-manager.sharedModules = lib.mkIf cfg.enable [
+ {
+ services.swaync.style = lib'.generateGtkColors lib cfg.scheme.palette;
+ }
+ ];
+}
diff --git a/shared/nixosModules/style/modules/tidal-hifi.nix b/shared/nixosModules/style/modules/tidal-hifi.nix
new file mode 100644
index 0000000..4bd0b30
--- /dev/null
+++ b/shared/nixosModules/style/modules/tidal-hifi.nix
@@ -0,0 +1,195 @@
+{
+ lib,
+ config,
+ ...
+}: let
+ cfg = config.local.style;
+in {
+ config.home-manager.sharedModules = lib.mkIf cfg.enable [
+ {
+ # based on https://github.com/rose-pine/tidal. adapted to work with base16 colors.
+ xdg.configFile."tidal-hifi/themes/base16.css".text = with cfg.scheme.palette; ''
+ :root {
+ --glass-white-1: ${base05};
+ --glass-white-1-hover: ${base06};
+ --glass-white-2: ${base07};
+ --glass-white-2-hover: ${base08};
+ --glass-white-3: ${base07};
+ --glass-white-4: ${base04};
+ --glass-white-5: ${base04};
+ --glass-white-6: ${base05};
+ --snow-white: ${base07};
+ --snow-white-hover: ${base08};
+ --gray-4: ${base00};
+ --gray-5: ${base02};
+ --gray-6: ${base03};
+ --gray-7: ${base04};
+ --cyan-blue: ${base0D};
+ --cyan-blue-hover: ${base0C};
+ --glass-cyan-1: ${base04};
+ --glass-cyan-2: ${base05};
+ --glass-cyan-3: ${base06};
+ --master-gold: ${base0E};
+ --master-gold-hover: ${base08};
+ --glass-master-gold: ${base05};
+ --glass-master-gold-2: ${base06};
+ --raspberry-pink: ${base08};
+ --raspberry-pink-lighter: ${base09};
+ --black: ${base00};
+ --midnight-black: ${base00};
+ --controls-overlay: ${base03};
+ --duration-overlay: ${base02};
+ --background-dark: ${base00};
+ --hoverLighten: brightness(130%);
+ --hoverDarken: brightness(70%);
+ --hoverTransition: filter 0.15s ease;
+ --scrollbar-track: ${base03};
+ --scrollbar-thumb: ${base00};
+ --lighten-25: ${base01};
+ --red-alert: ${base08};
+ --user-profile-linear-gradient: linear-gradient(160deg,${base0D} 1.22%,${base0C} 40.51%,${base00} 79.07%);
+ --wave-border-radius--none: 0px;
+ --wave-border-radius--extra-small: 4px;
+ --wave-border-radius--small: 8px;
+ --wave-border-radius--regular: 12px;
+ --wave-border-radius--full: 1000px;
+ --wave-color-material-dark: ${base00}80;
+ --wave-color-material-light: ${base04}33;
+ --wave-color-opacity-accent-dark-ultra-thick: ${base0C}cc;
+ --wave-color-opacity-accent-darkest-ultra-thick: ${base01};
+ --wave-color-opacity-accent-fill-regular: ${base0C}66;
+ --wave-color-opacity-accent-fill-thin: ${base0C}33;
+ --wave-color-opacity-accent-fill-ultra-thick: ${base0C}cc;
+ --wave-color-opacity-accent-fill-ultra-thin: ${base0C}1a;
+ --wave-color-opacity-base-bright-thick: ${base00}99;
+ --wave-color-opacity-base-bright-thin: ${base00}33;
+ --wave-color-opacity-base-bright-transparent: ${base00};
+ --wave-color-opacity-base-bright-ultra-thick: ${base00}cc;
+ --wave-color-opacity-base-brighter-ultra-thick: ${base01}cc;
+ --wave-color-opacity-base-brightest-regular: ${base02}66;
+ --wave-color-opacity-base-brightest-thin: ${base02}33;
+ --wave-color-opacity-base-brightest-ultra-thin: ${base02}1a;
+ --wave-color-opacity-base-fill-regular: ${base00}66;
+ --wave-color-opacity-base-fill-thick: ${base00}99;
+ --wave-color-opacity-base-fill-thin: ${base00}33;
+ --wave-color-opacity-base-fill-transparent: #000;
+ --wave-color-opacity-base-fill-ultra-thick: ${base00}cc;
+ --wave-color-opacity-base-fill-ultra-thin: ${base00}1a;
+ --wave-color-opacity-contrast-fill-regular: ${base07}66;
+ --wave-color-opacity-contrast-fill-thick: ${base07}99;
+ --wave-color-opacity-contrast-fill-thin: ${base07}33;
+ --wave-color-opacity-contrast-fill-transparent: #fff;
+ --wave-color-opacity-contrast-fill-ultra-thick: ${base07}cc;
+ --wave-color-opacity-contrast-fill-ultra-thin: ${base07}1a;
+ --wave-color-opacity-rainbow-blue-thin: ${base0D}33;
+ --wave-color-opacity-rainbow-yellow-fill-regular: ${base0E}66;
+ --wave-color-opacity-rainbow-yellow-fill-thin: ${base0E}33;
+ --wave-color-opacity-rainbow-yellow-fill-ultra-thick: ${base0E}cc;
+ --wave-color-opacity-rainbow-yellow-fill-ultra-thin: ${base0E}1a;
+ --wave-color-opacity-special-fill-regular: ${base0E}66;
+ --wave-color-opacity-special-fill-thin: ${base0E}33;
+ --wave-color-opacity-special-fill-ultra-thick: ${base0E}cc;
+ --wave-color-opacity-special-fill-ultra-thin: ${base0E}1a;
+ --wave-color-services-facebook: ${base0D};
+ --wave-color-services-instagram-red: ${base08};
+ --wave-color-services-mtn: ${base0E};
+ --wave-color-services-musix-orange: ${base09};
+ --wave-color-services-musix-pink: ${base0E};
+ --wave-color-services-play: ${base0C};
+ --wave-color-services-plus: ${base0B};
+ --wave-color-services-snapchat: ${base0A};
+ --wave-color-services-sprint: ${base0A};
+ --wave-color-services-t-mobile: ${base08};
+ --wave-color-services-tik-tok-blue: ${base0D};
+ --wave-color-services-tik-tok-red: ${base08};
+ --wave-color-services-twitter: ${base0D};
+ --wave-color-services-viacom-1: ${base0D};
+ --wave-color-services-viacom-2: ${base0E};
+ --wave-color-services-viacom-3: ${base08};
+ --wave-color-services-viacom-4: ${base09};
+ --wave-color-services-viacom-5: ${base0E};
+ --wave-color-services-vivo: ${base0E};
+ --wave-color-services-vodafone: ${base08};
+ --wave-color-services-waze: ${base0D};
+ --wave-color-solid-accent-bright: ${base0D};
+ --wave-color-solid-accent-brighter: ${base0D};
+ --wave-color-solid-accent-dark: ${base0C};
+ --wave-color-solid-accent-darker: ${base01};
+ --wave-color-solid-accent-darkest: ${base00};
+ --wave-color-solid-accent-fill: ${base0D};
+ --wave-color-solid-base-bright: ${base00};
+ --wave-color-solid-base-brighter: ${base01};
+ --wave-color-solid-base-brightest: ${base02};
+ --wave-color-solid-base-fill: ${base00};
+ --wave-color-solid-contrast-dark: ${base07};
+ --wave-color-solid-contrast-darker: ${base06};
+ --wave-color-solid-contrast-darkest: ${base05};
+ --wave-color-solid-contrast-fill: ${base07};
+ --wave-color-solid-rainbow-blue-fill: ${base0D};
+ --wave-color-solid-rainbow-green-brighter: ${base0D};
+ --wave-color-solid-rainbow-green-dark: ${base0C};
+ --wave-color-solid-rainbow-green-darker: ${base0C};
+ --wave-color-solid-rainbow-green-darkest: ${base01};
+ --wave-color-solid-rainbow-green-fill: ${base0D};
+ --wave-color-solid-rainbow-orange-fill: ${base09};
+ --wave-color-solid-rainbow-purple-fill: ${base0E};
+ --wave-color-solid-rainbow-red-bright: ${base08};
+ --wave-color-solid-rainbow-red-brighter: ${base08};
+ --wave-color-solid-rainbow-red-dark: ${base09};
+ --wave-color-solid-rainbow-red-darker: ${base01};
+ --wave-color-solid-rainbow-red-darkest: ${base00};
+ --wave-color-solid-rainbow-red-fill: ${base08};
+ --wave-color-solid-rainbow-yellow-bright: ${base0A};
+ --wave-color-solid-rainbow-yellow-brighter: ${base06};
+ --wave-color-solid-rainbow-yellow-dark: ${base09};
+ --wave-color-solid-rainbow-yellow-darker: ${base01};
+ --wave-color-solid-rainbow-yellow-darkest: ${base00};
+ --wave-color-solid-rainbow-yellow-fill: ${base0A};
+ --wave-color-solid-special-bright: ${base09};
+ --wave-color-solid-special-brighter: ${base06};
+ --wave-color-solid-special-dark: ${base09};
+ --wave-color-solid-special-darker: ${base09};
+ --wave-color-solid-special-darkest: ${base00};
+ --wave-color-solid-special-fill: ${base0E};
+ --wave-color-solid-warning-bright: ${base08};
+ --wave-color-solid-warning-brighter: ${base09};
+ --wave-color-solid-warning-dark: ${base09};
+ --wave-color-solid-warning-darker: ${base01};
+ --wave-color-solid-warning-darkest: ${base00};
+ --wave-color-solid-warning-fill: ${base08};
+ --wave-color-text-disabled: ${base02};
+ --wave-color-text-link: ${base0D};
+ --wave-color-text-main: ${base07};
+ --wave-color-text-placeholder: ${base02};
+ --wave-color-text-secondary: ${base06};
+ --wave-color-text-tertiary: ${base05};
+ --wave-font-weight--bold: 700;
+ --wave-font-weight--demi: 600;
+ --wave-font-weight--medium: 500;
+ --wave-opacity--ultra-thin: .05;
+ --wave-opacity--thin: .1;
+ --wave-opacity--regular: .4;
+ --wave-opacity--thick: .6;
+ --wave-opacity--ultra-thick: .8;
+ --wave-spacing--extra-extra-large: 64px;
+ --wave-spacing--extra-large: 40px;
+ --wave-spacing--large: 24px;
+ --wave-spacing--medium: 20px;
+ --wave-spacing--regular: 16px;
+ --wave-spacing--small: 12px;
+ --wave-spacing--extra-small: 8px;
+ --wave-spacing--extra-extra-small: 4px;
+ }
+
+ .wave-text-caption-demi, .tidal-ui__v-stack {
+ color: var(--wave-color-solid-accent-bright) !important;
+ }
+
+ .tidal-ui__icon {
+ fill: var(--wave-color-solid-rainbow-purple-fill) !important;
+ stroke: var(--wave-color-solid-rainbow-purple-fill) !important;
+ }
+ '';
+ }
+ ];
+}
diff --git a/shared/nixosModules/style/modules/waybar.nix b/shared/nixosModules/style/modules/waybar.nix
new file mode 100644
index 0000000..a9a5e8f
--- /dev/null
+++ b/shared/nixosModules/style/modules/waybar.nix
@@ -0,0 +1,15 @@
+{
+ lib,
+ lib',
+ config,
+ ...
+}: let
+ cfg = config.local.style;
+in {
+ config.home-manager.sharedModules = lib.mkIf cfg.enable [
+ {
+ programs.waybar.style =
+ lib'.generateGtkColors lib cfg.scheme.palette;
+ }
+ ];
+}
diff --git a/shared/nixosModules/style/modules/zathura.nix b/shared/nixosModules/style/modules/zathura.nix
new file mode 100644
index 0000000..070d67a
--- /dev/null
+++ b/shared/nixosModules/style/modules/zathura.nix
@@ -0,0 +1,43 @@
+{
+ lib,
+ config,
+ ...
+}: let
+ cfg = config.local.style;
+ inherit (cfg) scheme;
+in {
+ config.home-manager.sharedModules = lib.mkIf cfg.enable [
+ {
+ programs.zathura.options = {
+ default-fg = scheme.palette.base01;
+ default-bg = scheme.palette.base00;
+
+ completion-bg = scheme.palette.base01;
+ completion-fg = scheme.palette.base0D;
+ completion-highlight-bg = scheme.palette.base0D;
+ completion-highlight-fg = scheme.palette.base07;
+
+ statusbar-fg = scheme.palette.base04;
+ statusbar-bg = scheme.palette.base02;
+
+ notification-bg = scheme.palette.base00;
+ notification-fg = scheme.palette.base07;
+ notification-error-bg = scheme.palette.base00;
+ notification-error-fg = scheme.palette.base08;
+ notification-warning-bg = scheme.palette.base00;
+ notification-warning-fg = scheme.palette.base0A;
+
+ inputbar-fg = scheme.palette.base07;
+ inputbar-bg = scheme.palette.base00;
+
+ recolor = false;
+ recolor-keephue = false;
+ recolor-lightcolor = scheme.palette.base00;
+ recolor-darkcolor = scheme.palette.base06;
+
+ highlight-color = scheme.palette.base0A;
+ highlight-active-color = scheme.palette.base0D;
+ };
+ }
+ ];
+}
diff --git a/shared/nixosModules/style/options.nix b/shared/nixosModules/style/options.nix
index 88538df..5160be3 100644
--- a/shared/nixosModules/style/options.nix
+++ b/shared/nixosModules/style/options.nix
@@ -7,7 +7,7 @@
...
}: let
inherit (lib) attrNames mkEnableOption mkOption pathExists;
- inherit (lib.types) bool enum package path str;
+ inherit (lib.types) attrs bool enum package path str;
cfg = config.local.style;
in {
@@ -22,6 +22,13 @@ in {
default = "catppuccin-mocha";
};
+ scheme = mkOption {
+ description = ''
+ Computed scheme from `config.local.style.schemeName`.
+ '';
+ type = attrs;
+ readOnly = true;
+ };
wallpaper = mkOption {
description = ''
Location of the wallpaper that will be used throughout the system.
@@ -125,5 +132,7 @@ in {
'';
}
];
+
+ local.style.scheme = inputs.basix.schemeData.base16.${cfg.schemeName};
};
}