theme stuff

This commit is contained in:
mjallen18
2025-12-01 16:21:12 -06:00
parent 47e2b0caf8
commit a0870e42ca
30 changed files with 313 additions and 1088 deletions

View File

@@ -1,9 +1,11 @@
{ {
lib, lib,
pkgs, pkgs,
namespace,
... ...
}: }:
let let
inherit (lib.${namespace}) enabled disabled;
shellAliases = { shellAliases = {
update-switch = "darwin-rebuild switch --flake ~/nix-config"; update-switch = "darwin-rebuild switch --flake ~/nix-config";
update-flake = "nix flake update ~/nix-config"; update-flake = "nix flake update ~/nix-config";
@@ -135,9 +137,9 @@ in
}; };
dock = { dock = {
animateOpeningApplications = true; animateOpeningApplications = true;
automaticallyHideAndShowTheDock.enabled = false; automaticallyHideAndShowTheDock = enabled;
doubleClickAWindowsTitleBarTo = "Minimize"; doubleClickAWindowsTitleBarTo = "Minimize";
magnification.enabled = false; magnification = disabled;
minimizeWindowsIntoApplicationIcon = true; minimizeWindowsIntoApplicationIcon = true;
minimizeWindowsUsing = "Genie Effect"; minimizeWindowsUsing = "Genie Effect";
positionOnScreen = "Bottom"; positionOnScreen = "Bottom";
@@ -254,11 +256,11 @@ in
}; };
# Manage bug in compilations - who uses manpages in 2024 anyways? :P # Manage bug in compilations - who uses manpages in 2024 anyways? :P
manual.manpages.enable = false; manual.manpages = enabled;
# Override defaults that arent supported # Override defaults that arent supported
programs = { programs = {
mangohud.enable = lib.mkForce false; mangohud = lib.mkForce disabled;
nh = { nh = {
flake = lib.mkForce "/Users/mattjallen/nix-config"; flake = lib.mkForce "/Users/mattjallen/nix-config";
@@ -266,8 +268,8 @@ in
}; };
services = { services = {
pass-secret-service.enable = lib.mkForce false; pass-secret-service = lib.mkForce disabled;
nextcloud-client.enable = lib.mkForce false; nextcloud-client = lib.mkForce disabled;
kdeconnect = { kdeconnect = {
enable = false; enable = false;
indicator = false; indicator = false;

View File

@@ -1,11 +1,11 @@
{ {
lib,
pkgs, pkgs,
namespace, namespace,
config,
... ...
}: }:
let let
theme = config.mjallen.theme.palette; inherit (lib.${namespace}) enabled disabled;
shellAliases = { shellAliases = {
update-boot = "sudo nixos-rebuild boot --max-jobs 10 --build-host admin@10.0.1.3"; update-boot = "sudo nixos-rebuild boot --max-jobs 10 --build-host admin@10.0.1.3";
update-switch = "sudo nixos-rebuild switch --max-jobs 10 --build-host admin@10.0.1.3"; update-switch = "sudo nixos-rebuild switch --max-jobs 10 --build-host admin@10.0.1.3";
@@ -75,15 +75,15 @@ in
}; };
}; };
programs = { programs = {
btop.enable = true; btop = enabled;
kitty = { kitty = {
enable = true; enable = true;
}; };
mako = { mako = {
enable = true; enable = true;
}; };
nwg-dock.enable = true; nwg-dock = enabled;
nwg-drawer.enable = true; nwg-drawer = enabled;
nwg-panel = { nwg-panel = {
enable = true; enable = true;
defaultApps = { defaultApps = {
@@ -96,8 +96,8 @@ in
layer = "bottom"; layer = "bottom";
temperature = { temperature = {
cpu.enable = true; cpu = enabled;
gpu.enable = true; gpu = enabled;
}; };
extraModules = { extraModules = {
@@ -113,21 +113,20 @@ in
extraModulesStyle = '' extraModulesStyle = ''
#custom-lights { #custom-lights {
color: ${theme.frost.nord8}; color: @base0C;
background-color: ${theme.polarNight.nord0}; opacity: 0.85;
${theme.defaultOpacity} background-color: @base00;
${theme.borderLeft}
} }
#custom-lights:hover { #custom-lights:hover {
background: ${theme.polarNight.nord3}; background: @base03;
} }
''; '';
windowOffset = 75; windowOffset = 75;
}; };
wlogout.enable = true; wlogout = enabled;
wofi.enable = true; wofi = enabled;
}; };
}; };
@@ -142,7 +141,7 @@ in
]; ];
programs = { programs = {
password-store.enable = true; password-store = enabled;
zsh.shellAliases = shellAliases; zsh.shellAliases = shellAliases;
}; };

View File

@@ -1,4 +1,7 @@
{ lib, namespace, ... }: { lib, namespace, ... }:
let
inherit (lib.${namespace}) enabled disabled;
in
{ {
home.username = "matt"; home.username = "matt";
@@ -53,11 +56,11 @@
}; };
programs = { programs = {
mangohud.enable = lib.mkForce true; mangohud = lib.mkForce enabled;
}; };
services = { services = {
nextcloud-client.enable = lib.mkForce false; nextcloud-client = lib.mkForce disabled;
kdeconnect = { kdeconnect = {
enable = false; enable = false;
indicator = false; indicator = false;

View File

@@ -1,8 +1,11 @@
{ {
config, config,
lib,
namespace,
... ...
}: }:
let let
inherit (lib.${namespace}) enabled disabled;
shellAliases = { shellAliases = {
update-boot = "sudo nixos-rebuild boot --max-jobs 10 --build-host admin@10.0.1.3"; update-boot = "sudo nixos-rebuild boot --max-jobs 10 --build-host admin@10.0.1.3";
update-switch = "sudo nixos-rebuild switch --max-jobs 10 --build-host admin@10.0.1.3"; update-switch = "sudo nixos-rebuild switch --max-jobs 10 --build-host admin@10.0.1.3";
@@ -59,7 +62,7 @@ in
}; };
services = { services = {
nextcloud-client.enable = false; nextcloud-client = lib.mkForce disabled;
kdeconnect = { kdeconnect = {
enable = false; enable = false;
indicator = false; indicator = false;

View File

@@ -1,5 +1,6 @@
{ pkgs, namespace, ... }: { lib, pkgs, namespace, ... }:
let let
inherit (lib.${namespace}) enabled disabled;
shellAliases = { shellAliases = {
update-boot = "sudo nixos-rebuild boot --max-jobs 10 --build-host admin@10.0.1.3"; update-boot = "sudo nixos-rebuild boot --max-jobs 10 --build-host admin@10.0.1.3";
update-switch = "sudo nixos-rebuild switch --max-jobs 10"; update-switch = "sudo nixos-rebuild switch --max-jobs 10";
@@ -10,7 +11,7 @@ in
{ {
home.username = "deck"; home.username = "deck";
${namespace}.desktop.gnome.enable = true; ${namespace}.desktop.gnome = enabled;
sops = { sops = {
age.keyFile = "/home/deck/.config/sops/age/keys.txt"; age.keyFile = "/home/deck/.config/sops/age/keys.txt";
@@ -40,7 +41,7 @@ in
}; };
emulators = { emulators = {
ryujinx.enable = true; ryujinx = enabled;
dolphin-gamecube = { dolphin-gamecube = {
enable = true; enable = true;
@@ -58,8 +59,8 @@ in
extraArgs = "-b -e \"\${filePath}\""; extraArgs = "-b -e \"\${filePath}\"";
}; };
pcsx2.enable = true; pcsx2 = enabled;
mgba.enable = true; mgba = enabled;
"Non-SRM Shortcuts" = { "Non-SRM Shortcuts" = {
enable = true; enable = true;

View File

@@ -104,12 +104,8 @@ in
}; };
}; };
btop = enabled; btop = enabled;
kitty = { kitty = enabled;
enable = true; mako = enabled;
};
mako = {
enable = true;
};
nwg-dock = enabled; nwg-dock = enabled;
nwg-drawer = enabled; nwg-drawer = enabled;
nwg-panel = { nwg-panel = {
@@ -125,8 +121,8 @@ in
network.interface = "wlp9s0"; network.interface = "wlp9s0";
temperature = { temperature = {
cpu.enable = true; cpu = enabled;
gpu.enable = true; gpu = enabled;
}; };
extraModules = { extraModules = {
@@ -142,14 +138,14 @@ in
extraModulesStyle = '' extraModulesStyle = ''
#custom-lights { #custom-lights {
color: ${theme.frost.nord8}; color: @base0C;
background-color: ${theme.polarNight.nord0}; background-color: @base00;
${theme.defaultOpacity} opacity: 0.85;
border-left: 5px solid ${theme.frost.nord8}; border-left: 5px solid @base0C;
} }
#custom-lights:hover { #custom-lights:hover {
background: ${theme.polarNight.nord3}; background: @base03;
} }
''; '';
}; };

View File

@@ -1,191 +0,0 @@
{ config, lib, ... }:
with lib;
let
cfg = config.mjallen.theme;
mkPalettePath = name: lib.snowfall.fs.get-file "modules/home/desktop/theme/palettes/${name}.nix";
cap =
s:
let
len = builtins.stringLength s;
in
(lib.toUpper (builtins.substring 0 1 s)) + (builtins.substring 1 (len - 1) s);
in
{
options.mjallen.theme = {
name = mkOption {
type = types.enum [
"nord"
"dracula"
"everforest"
];
default = "nord";
description = "Global theme palette name.";
};
# This is the palette file other modules should import.
# It exports a normalized schema with colors, tokens, and compat maps.
paletteFile = mkOption {
type = types.path;
default = mkPalettePath "nord";
description = "Path to a palette nix file exporting a normalized schema (and compat maps).";
};
# Exposed tokens (derived from paletteFile)
tokens = mkOption {
type = types.attrs;
default = { };
description = "Derived tokens from the selected palette (set automatically).";
};
# Expose the imported palette (actual colors + compat groups)
palette = mkOption {
type = types.attrs;
default = { };
description = "Imported palette attrset from the selected paletteFile (set automatically).";
};
gtk = {
enable = mkOption {
type = types.bool;
default = true;
description = "Manage GTK theme using global theme settings.";
};
# e.g. Colloid-Dark-Compact-*
color = mkOption {
type = types.enum [
"dark"
"light"
];
default = "dark";
description = "GTK color variant.";
};
size = mkOption {
type = types.enum [
"standard"
"compact"
];
default = "compact";
description = "GTK size variant.";
};
accent = mkOption {
type = types.enum [
"default"
"purple"
"pink"
"red"
"orange"
"yellow"
"green"
"teal"
"grey"
"all"
];
default = "all";
description = "GTK accent (Colloid themeVariants).";
};
tweak = mkOption {
type = types.enum [
"normal"
"rimless"
"float"
"black"
];
default = "normal";
description = "GTK tweak (Colloid tweaks).";
};
themeName = mkOption {
type = types.nullOr types.str;
default = null;
description = "Explicit GTK theme name override. If null, computed from color/size/accent.";
};
};
icons = {
# Colloid icon scheme usually supports several named schemes. Default follows palette name.
scheme = mkOption {
type = types.enum [
"default"
"nord"
"dracula"
"gruvbox"
"everforest"
"catppuccin"
];
default = cfg.name;
description = "Icon scheme to use (Colloid schemeVariants).";
};
variant = mkOption {
type = types.enum [
"default"
"purple"
"pink"
"red"
"orange"
"yellow"
"green"
"teal"
"grey"
"all"
];
default = "all";
description = "Icon variant (Colloid colorVariants).";
};
themeName = mkOption {
type = types.nullOr types.str;
default = null;
description = "Explicit icon theme name override. If null, computed from scheme/variant.";
};
};
};
# Wire derived defaults that depend on other options.
config = {
# Keep paletteFile following the chosen name unless user overrides it explicitly.
mjallen.theme.paletteFile = mkDefault (mkPalettePath cfg.name);
# Pull tokens directly from the palette file for convenience
mjallen.theme.tokens = mkDefault (
let
pal = import cfg.paletteFile;
in
pal.tokens or { }
);
# Expose the imported palette for convenience
mjallen.theme.palette = mkDefault (import cfg.paletteFile);
# Default per-program palette path (can still be overridden per program)
mjallen.programs.waybar.theme.file = mkDefault cfg.paletteFile;
mjallen.programs.kitty.theme.file = mkDefault cfg.paletteFile;
mjallen.programs.mako.theme.file = mkDefault cfg.paletteFile;
mjallen.programs.wofi.theme.file = mkDefault cfg.paletteFile;
mjallen.programs.btop.theme.file = mkDefault cfg.paletteFile;
mjallen.programs.nwg-dock.theme.file = mkDefault cfg.paletteFile;
mjallen.programs.nwg-drawer.theme.file = mkDefault cfg.paletteFile;
mjallen.programs.wlogout.theme.file = mkDefault cfg.paletteFile;
# Computed GTK/Icon theme names if not overridden
_module.args.mjallenThemeComputed = {
gtkTheme =
if cfg.gtk.themeName != null then
cfg.gtk.themeName
else
"Colloid-${cap cfg.gtk.color}-${cap cfg.gtk.size}";
iconTheme =
if cfg.icons.themeName != null then
cfg.icons.themeName
else
"Colloid-${cap cfg.icons.scheme}-${cap cfg.gtk.color}";
};
};
}

View File

@@ -1,62 +0,0 @@
{
# Nord colors
# Opacity Hex alpha
# 100% FF
# 75% BF
# 50% 80
# 25% 40
# 10% 1A
# 0% 00
polarNight = {
nord0 = "#2e3440";
nord1 = "#3b4252";
nord2 = "#434c5e";
nord3 = "#4c566a";
};
snowStorm = {
nord4 = "#d8dee9";
nord5 = "#e5e9f0";
nord6 = "#eceff4";
};
frost = {
nord7 = "#8fbcbb";
nord8 = "#88c0d0";
nord9 = "#81a1c1";
nord10 = "#5e81ac";
};
aurora = {
nord11 = "#bf616a";
nord12 = "#d08770";
nord13 = "#ebcb8b";
nord14 = "#a3be8c";
nord15 = "#b48ead";
};
defaultOpacity = "opacity: 0.85;";
defaultBorderRadius = "border-radius: 1rem;";
defaultCenterOptions = ''
padding-top: 0.2rem;
padding-bottom: 0.2rem;
padding-left: 0.5rem;
padding-right: 0.5rem;
margin: 3px 0;
'';
borderRight = ''
padding-top: 0.2rem;
padding-bottom: 0.2rem;
padding-left: 0.5rem;
padding-right: 0.5rem;
margin: 3px 0;
border-radius: 0rem 1rem 1rem 0rem;
margin-right: 0.5rem;
'';
borderLeft = ''
padding-top: 0.2rem;
padding-bottom: 0.2rem;
padding-left: 0.5rem;
padding-right: 0.5rem;
margin: 3px 0;
border-radius: 1rem 0rem 0rem 1rem;
margin-left: 0.5rem;
'';
}

View File

@@ -1,90 +0,0 @@
rec {
# Normalized semantic colors (theme-agnostic) - Dracula
colors = {
bg = "#282a36";
bgAlt = "#343746";
surface = "#343746";
surfaceAlt = "#44475a";
border = "#44475a";
text = "#f8f8f2";
textMuted = "#e2e2dc";
primary = "#6272a4"; # dark blue
info = "#8be9fd"; # cyan
accent = "#bd93f9"; # purple
success = "#50fa7b"; # green
warning = "#f1fa8c"; # yellow
danger = "#ff5555"; # red
};
# Shared styling tokens for CSS consumers
tokens = {
opacity = "opacity: 0.90;";
borderRadius = "border-radius: 0.8rem;";
centerOptions = ''
padding-top: 0.25rem;
padding-bottom: 0.25rem;
padding-left: 0.5rem;
padding-right: 0.5rem;
margin: 3px 0;
'';
borderRight = ''
padding-top: 0.25rem;
padding-bottom: 0.25rem;
padding-left: 0.5rem;
padding-right: 0.5rem;
margin: 3px 0;
border-radius: 0rem 0.8rem 0.8rem 0rem;
margin-right: 0.5rem;
'';
borderLeft = ''
padding-top: 0.25rem;
padding-bottom: 0.25rem;
padding-left: 0.5rem;
padding-right: 0.5rem;
margin: 3px 0;
border-radius: 0.8rem 0rem 0rem 0.8rem;
margin-left: 0.5rem;
'';
};
# Legacy token aliases for back-compat
defaultOpacity = tokens.opacity;
defaultBorderRadius = tokens.borderRadius;
defaultCenterOptions = tokens.centerOptions;
borderRight = tokens.borderRight;
borderLeft = tokens.borderLeft;
# Back-compat: Nord-shaped groups for existing modules (approximate mappings)
polarNight = {
nord0 = "#282a36";
nord1 = "#343746";
nord2 = "#3b3e4a";
nord3 = "#44475a";
};
snowStorm = {
nord4 = "#e2e2dc";
nord5 = "#f1f1ea";
nord6 = "#f8f8f2";
};
frost = {
nord7 = "#50fa7b"; # using green as one of the frost group
nord8 = "#8be9fd"; # cyan
nord9 = "#6272a4"; # blue
nord10 = "#bd93f9"; # purple (as highlight)
};
aurora = {
nord11 = "#ff5555"; # red
nord12 = "#ffb86c"; # orange
nord13 = "#f1fa8c"; # yellow
nord14 = "#50fa7b"; # green
nord15 = "#bd93f9"; # magenta/purple
};
}

View File

@@ -1,90 +0,0 @@
rec {
# Normalized semantic colors (Everforest - Dark)
colors = {
bg = "#2b3339";
bgAlt = "#323c41";
surface = "#323c41";
surfaceAlt = "#3a444a";
border = "#414b51";
text = "#d3c6aa";
textMuted = "#9da9a0";
primary = "#7fbbb3"; # blue/aqua
info = "#83c092"; # teal
accent = "#d699b6"; # magenta
success = "#a7c080"; # green
warning = "#dbbc7f"; # yellow
danger = "#e67e80"; # red
};
# Shared styling tokens for CSS consumers
tokens = {
opacity = "opacity: 0.85;";
borderRadius = "border-radius: 1rem;";
centerOptions = ''
padding-top: 0.2rem;
padding-bottom: 0.2rem;
padding-left: 0.5rem;
padding-right: 0.5rem;
margin: 3px 0;
'';
borderRight = ''
padding-top: 0.2rem;
padding-bottom: 0.2rem;
padding-left: 0.5rem;
padding-right: 0.5rem;
margin: 3px 0;
border-radius: 0rem 1rem 1rem 0rem;
margin-right: 0.5rem;
'';
borderLeft = ''
padding-top: 0.2rem;
padding-bottom: 0.2rem;
padding-left: 0.5rem;
padding-right: 0.5rem;
margin: 3px 0;
border-radius: 1rem 0rem 0rem 1rem;
margin-left: 0.5rem;
'';
};
# Legacy token aliases for back-compat
defaultOpacity = tokens.opacity;
defaultBorderRadius = tokens.borderRadius;
defaultCenterOptions = tokens.centerOptions;
borderRight = tokens.borderRight;
borderLeft = tokens.borderLeft;
# Back-compat: Nord-shaped groups for existing modules (approximate mappings)
polarNight = {
nord0 = "#2b3339";
nord1 = "#323c41";
nord2 = "#3a444a";
nord3 = "#414b51";
};
snowStorm = {
nord4 = "#c6d0b5";
nord5 = "#e0dcc7";
nord6 = "#d3c6aa";
};
frost = {
nord7 = "#a7c080"; # green
nord8 = "#83c092"; # teal
nord9 = "#7fbbb3"; # aqua/blue
nord10 = "#7fbbb3"; # reuse
};
aurora = {
nord11 = "#e67e80"; # red
nord12 = "#e69875"; # orange
nord13 = "#dbbc7f"; # yellow
nord14 = "#a7c080"; # green
nord15 = "#d699b6"; # magenta
};
}

View File

@@ -1,90 +0,0 @@
rec {
# Normalized semantic colors (theme-agnostic)
colors = {
bg = "#2e3440";
bgAlt = "#3b4252";
surface = "#3b4252";
surfaceAlt = "#434c5e";
border = "#4c566a";
text = "#eceff4";
textMuted = "#e5e9f0";
primary = "#5e81ac"; # blue
info = "#88c0d0"; # cyan/teal
accent = "#b48ead"; # purple
success = "#a3be8c"; # green
warning = "#ebcb8b"; # yellow
danger = "#bf616a"; # red
};
# Shared styling tokens for CSS consumers
tokens = {
opacity = "opacity: 0.85;";
borderRadius = "border-radius: 1rem;";
centerOptions = ''
padding-top: 0.2rem;
padding-bottom: 0.2rem;
padding-left: 0.5rem;
padding-right: 0.5rem;
margin: 3px 0;
'';
borderRight = ''
padding-top: 0.2rem;
padding-bottom: 0.2rem;
padding-left: 0.5rem;
padding-right: 0.5rem;
margin: 3px 0;
border-radius: 0rem 1rem 1rem 0rem;
margin-right: 0.5rem;
'';
borderLeft = ''
padding-top: 0.2rem;
padding-bottom: 0.2rem;
padding-left: 0.5rem;
padding-right: 0.5rem;
margin: 3px 0;
border-radius: 1rem 0rem 0rem 1rem;
margin-left: 0.5rem;
'';
};
# Legacy token aliases for back-compat
defaultOpacity = tokens.opacity;
defaultBorderRadius = tokens.borderRadius;
defaultCenterOptions = tokens.centerOptions;
borderRight = tokens.borderRight;
borderLeft = tokens.borderLeft;
# Back-compat: Nord-shaped groups for existing modules
polarNight = {
nord0 = "#2e3440";
nord1 = "#3b4252";
nord2 = "#434c5e";
nord3 = "#4c566a";
};
snowStorm = {
nord4 = "#d8dee9";
nord5 = "#e5e9f0";
nord6 = "#eceff4";
};
frost = {
nord7 = "#8fbcbb";
nord8 = "#88c0d0";
nord9 = "#81a1c1";
nord10 = "#5e81ac";
};
aurora = {
nord11 = "#bf616a";
nord12 = "#d08770";
nord13 = "#ebcb8b";
nord14 = "#a3be8c";
nord15 = "#b48ead";
};
}

View File

@@ -2,9 +2,13 @@
config, config,
lib, lib,
pkgs, pkgs,
namespace,
hasDestopEnvironment ? true, hasDestopEnvironment ? true,
... ...
}: }:
let
inherit (lib.${namespace}) enabled disabled;
in
{ {
home = { home = {
enableNixpkgsReleaseCheck = lib.mkDefault false; enableNixpkgsReleaseCheck = lib.mkDefault false;
@@ -51,15 +55,15 @@
}; };
programs = { programs = {
nix-index-database.comma.enable = true; nix-index-database.comma = enabled;
btop.enable = lib.mkDefault true; btop = lib.mkDefault enabled;
fastfetch.enable = lib.mkDefault true; fastfetch = lib.mkDefault enabled;
home-manager.enable = lib.mkDefault true; home-manager = lib.mkDefault enabled;
java = { java = {
enable = lib.mkDefault true; enable = lib.mkDefault true;
}; };
mangohud.enable = lib.mkDefault hasDestopEnvironment; mangohud.enable = lib.mkDefault hasDestopEnvironment;
password-store.enable = true; password-store = enabled;
nh = { nh = {
enable = true; enable = true;
flake = "/etc/nixos"; flake = "/etc/nixos";
@@ -122,7 +126,7 @@
services = { services = {
nextcloud-client.enable = lib.mkDefault hasDestopEnvironment; nextcloud-client.enable = lib.mkDefault hasDestopEnvironment;
pass-secret-service.enable = lib.mkDefault true; pass-secret-service = lib.mkDefault enabled;
kdeconnect = { kdeconnect = {
enable = lib.mkDefault hasDestopEnvironment; enable = lib.mkDefault hasDestopEnvironment;
indicator = lib.mkDefault true; indicator = lib.mkDefault true;

View File

@@ -2,7 +2,6 @@
with lib; with lib;
let let
cfg = config.mjallen.programs.btop; cfg = config.mjallen.programs.btop;
palette = import cfg.theme.file;
in in
{ {
imports = [ ./options.nix ]; imports = [ ./options.nix ];
@@ -75,52 +74,6 @@ in
selected_battery = "Auto"; selected_battery = "Auto";
log_level = "WARNING"; log_level = "WARNING";
}; };
themes = {
global = ''
theme[main_bg]="${palette.colors.bg}"
theme[main_fg]="${palette.colors.text}"
theme[title]="${palette.colors.text}"
theme[hi_fg]="${palette.colors.info}"
theme[selected_bg]="${palette.colors.bgAlt}"
theme[selected_fg]="${palette.colors.info}"
theme[inactive_fg]="${palette.colors.surfaceAlt}"
theme[graph_text]="${palette.colors.text}"
theme[meter_bg]="${palette.colors.bgAlt}"
theme[proc_misc]="${palette.colors.text}"
theme[cpu_box]="${palette.colors.accent}"
theme[mem_box]="${palette.colors.success}"
theme[net_box]="${palette.colors.warning}"
theme[proc_box]="${palette.colors.danger}"
theme[div_line]="${palette.colors.bgAlt}"
theme[temp_start]="${palette.colors.success}"
theme[temp_mid]="${palette.colors.warning}"
theme[temp_end]="${palette.colors.danger}"
theme[cpu_start]="${palette.colors.accent}"
theme[cpu_mid]="${palette.colors.warning}"
theme[cpu_end]="${palette.colors.danger}"
theme[free_start]="${palette.colors.success}"
theme[free_mid]="${palette.colors.warning}"
theme[free_end]="${palette.colors.warning}"
theme[cached_start]="${palette.colors.success}"
theme[cached_mid]="${palette.colors.warning}"
theme[cached_end]="${palette.colors.warning}"
theme[available_start]="${palette.colors.text}"
theme[available_mid]="${palette.colors.danger}"
theme[available_end]="${palette.colors.danger}"
theme[used_start]="${palette.colors.success}"
theme[used_mid]="${palette.colors.warning}"
theme[used_end]="${palette.colors.danger}"
theme[download_start]="${palette.colors.info}"
theme[download_mid]="${palette.colors.info}"
theme[download_end]="${palette.colors.warning}"
theme[upload_start]="${palette.colors.info}"
theme[upload_mid]="${palette.colors.info}"
theme[upload_end]="${palette.colors.warning}"
theme[process_start]="${palette.colors.accent}"
theme[process_mid]="${palette.colors.warning}"
theme[process_end]="${palette.colors.danger}"
'';
};
}; };
}; };
} }

View File

@@ -3,19 +3,5 @@ with lib;
{ {
options.mjallen.programs.btop = { options.mjallen.programs.btop = {
enable = mkEnableOption "enable btop"; enable = mkEnableOption "enable btop";
theme = mkOption {
type = types.submodule {
options = {
file = mkOption {
type = types.path;
default = lib.snowfall.fs.get-file "modules/home/desktop/theme/palettes/nord.nix";
description = "Nix file exporting a palette attrset.";
};
};
};
default = { };
description = "btop theme palette configuration.";
};
}; };
} }

View File

@@ -2,7 +2,6 @@
config, config,
lib, lib,
pkgs, pkgs,
mjallenThemeComputed,
... ...
}: }:
with lib; with lib;
@@ -10,12 +9,12 @@ let
cfg = config.mjallen.programs.hyprland; cfg = config.mjallen.programs.hyprland;
# Pull from global theme options # Pull from global theme options
themeSize = config.mjallen.theme.gtk.size; # "standard" | "compact" themeSize = "standard"; # "standard" | "compact"
themeAccent = config.mjallen.theme.gtk.accent; # "default" | ... | "all" themeAccent = "default"; # "default" | ... | "all"
themeTweak = config.mjallen.theme.gtk.tweak; # "normal" | "rimless" | "float" | "black" themeTweak = "normal"; # "normal" | "rimless" | "float" | "black"
themeColor = config.mjallen.theme.gtk.color; # "light" | "dark" themeColor = "dark"; # "light" | "dark"
iconThemeVariant = config.mjallen.theme.icons.variant; # "default" | ... | "all" iconThemeVariant = "default"; # "default" | ... | "all"
iconScheme = config.mjallen.theme.icons.scheme; # "default" | "nord" | "dracula" | ... iconScheme = "nord"; # "default" | "nord" | "dracula" | ...
# Cursor # Cursor
cursorTheme = "macOS"; cursorTheme = "macOS";
@@ -23,7 +22,7 @@ let
cursorSize = 24; cursorSize = 24;
# GTK # GTK
gtkTheme = mjallenThemeComputed.gtkTheme; gtkTheme = "Colloid-dark-standard";
gtkThemePkg = pkgs.colloid-gtk-theme.override { gtkThemePkg = pkgs.colloid-gtk-theme.override {
sizeVariants = [ themeSize ]; sizeVariants = [ themeSize ];
colorVariants = [ themeColor ]; colorVariants = [ themeColor ];
@@ -32,7 +31,7 @@ let
}; };
# Icons # Icons
iconTheme = mjallenThemeComputed.iconTheme; iconTheme = "Colloid-nord-dark";
iconThemePkg = pkgs.colloid-icon-theme.override { iconThemePkg = pkgs.colloid-icon-theme.override {
schemeVariants = [ iconScheme ]; schemeVariants = [ iconScheme ];
colorVariants = [ iconThemeVariant ]; colorVariants = [ iconThemeVariant ];

View File

@@ -2,7 +2,6 @@
with lib; with lib;
let let
cfg = config.mjallen.programs.kitty; cfg = config.mjallen.programs.kitty;
palette = import cfg.theme.file;
in in
{ {
imports = [ ./options.nix ]; imports = [ ./options.nix ];
@@ -28,78 +27,78 @@ in
confirm_os_window_close = "0"; confirm_os_window_close = "0";
background_opacity = mkForce "0.85"; background_opacity = mkForce "0.85";
# The basic colors # # The basic colors
foreground = palette.colors.text; # foreground = config.lib.stylix.colors.base06;
background = palette.colors.bg; # background = config.lib.stylix.colors.base00;
selection_foreground = palette.colors.bg; # selection_foreground = config.lib.stylix.colors.base00;
selection_background = palette.colors.accent; # selection_background = config.lib.stylix.colors.base0E;
# Cursor colors # # Cursor colors
cursor = palette.colors.accent; # cursor = config.lib.stylix.colors.base0E;
cursor_text_color = palette.colors.bg; # cursor_text_color = config.lib.stylix.colors.base00;
# URL underline color when hovering with mouse # # URL underline color when hovering with mouse
url_color = palette.colors.accent; # url_color = config.lib.stylix.colors.base0E;
# Kitty window border colors # # Kitty window border colors
active_border_color = palette.colors.primary; # active_border_color = config.lib.stylix.colors.base0F;
inactive_border_color = palette.colors.bgAlt; # inactive_border_color = config.lib.stylix.colors.base01;
bell_border_color = palette.colors.warning; # bell_border_color = config.lib.stylix.colors.base0A;
# OS Window titlebar colors # # OS Window titlebar colors
wayland_titlebar_color = palette.colors.bg; # wayland_titlebar_color = config.lib.stylix.colors.base00;
macos_titlebar_color = palette.colors.bg; # macos_titlebar_color = config.lib.stylix.colors.base00;
# Tab bar colors # # Tab bar colors
active_tab_foreground = palette.colors.border; # active_tab_foreground = config.lib.stylix.colors.base03;
active_tab_background = palette.colors.accent; # active_tab_background = config.lib.stylix.colors.base0E;
inactive_tab_foreground = palette.colors.text; # inactive_tab_foreground = config.lib.stylix.colors.base06;
inactive_tab_background = palette.colors.bgAlt; # inactive_tab_background = config.lib.stylix.colors.base01;
tab_bar_background = palette.colors.border; # tab_bar_background = config.lib.stylix.colors.base03;
# Colors for marks (marked text in the terminal) # # Colors for marks (marked text in the terminal)
mark1_foreground = palette.colors.bg; # mark1_foreground = config.lib.stylix.colors.base00;
mark1_background = palette.colors.primary; # mark1_background = config.lib.stylix.colors.base0F;
mark2_foreground = palette.colors.bg; # mark2_foreground = config.lib.stylix.colors.base00;
mark2_background = palette.colors.accent; # mark2_background = config.lib.stylix.colors.base0E;
mark3_foreground = palette.colors.bg; # mark3_foreground = config.lib.stylix.colors.base00;
mark3_background = palette.colors.info; # mark3_background = config.lib.stylix.colors.base0C;
# The 16 terminal colors # # The 16 terminal colors
# black # # black
color0 = palette.colors.bg; # color0 = config.lib.stylix.colors.base00;
# Autosuggestion # # Autosuggestion
color8 = palette.colors.primary; # color8 = config.lib.stylix.colors.base0F;
# red # # red
color1 = palette.colors.danger; # color1 = config.lib.stylix.colors.base08;
color9 = palette.colors.danger; # color9 = config.lib.stylix.colors.base08;
# green # # green
color2 = palette.colors.success; # color2 = config.lib.stylix.colors.base0B;
color10 = palette.colors.success; # color10 = config.lib.stylix.colors.base0B;
# yellow # # yellow
color3 = palette.colors.warning; # color3 = config.lib.stylix.colors.base0A;
color11 = palette.colors.warning; # color11 = config.lib.stylix.colors.base0A;
# blue # # blue
color4 = palette.colors.primary; # color4 = config.lib.stylix.colors.base0F;
color12 = palette.colors.primary; # color12 = config.lib.stylix.colors.base0F;
# magenta # # magenta
color5 = palette.colors.accent; # color5 = config.lib.stylix.colors.base0E;
color13 = palette.colors.accent; # color13 = config.lib.stylix.colors.base0E;
# cyan # # cyan
color6 = palette.colors.info; # color6 = config.lib.stylix.colors.base0C;
color14 = palette.colors.info; # color14 = config.lib.stylix.colors.base0C;
# white # # white
color7 = palette.colors.textMuted; # color7 = config.lib.stylix.colors.base05;
color15 = palette.colors.text; # color15 = config.lib.stylix.colors.base06;
}; };
}; };
}; };

View File

@@ -20,20 +20,5 @@ in
default = 12; default = 12;
}; };
}; };
theme = mkOption {
type = types.submodule {
options = {
file = mkOption {
type = types.path;
# Fallback default; global theme module sets this via mkDefault
default = lib.snowfall.fs.get-file "modules/home/desktop/theme/palettes/nord.nix";
description = "Nix file exporting a palette attrset.";
};
};
};
default = { };
description = "Kitty theme palette configuration.";
};
}; };
} }

View File

@@ -2,7 +2,6 @@
with lib; with lib;
let let
cfg = config.mjallen.programs.mako; cfg = config.mjallen.programs.mako;
palette = import cfg.theme.file;
in in
{ {
imports = [ ./options.nix ]; imports = [ ./options.nix ];
@@ -22,10 +21,10 @@ in
max-icon-size = 64; max-icon-size = 64;
default-timeout = 5000; default-timeout = 5000;
background-color = mkDefault palette.colors.bg; # background-color = mkDefault config.lib.stylix.colors.base00;
text-color = mkDefault palette.colors.text; # text-color = mkDefault config.lib.stylix.colors.base06;
border-color = mkDefault palette.colors.primary; # border-color = mkDefault config.lib.stylix.colors.base0F;
progress-color = mkDefault "over ${palette.colors.info}"; # progress-color = mkDefault "over ${config.lib.stylix.colors.base0C}";
}; };
}; };
}; };

View File

@@ -8,19 +8,5 @@ with lib;
type = types.str; type = types.str;
default = "DejaVu Sans"; default = "DejaVu Sans";
}; };
theme = mkOption {
type = types.submodule {
options = {
file = mkOption {
type = types.path;
default = lib.snowfall.fs.get-file "modules/home/desktop/theme/palettes/nord.nix";
description = "Nix file exporting a palette attrset.";
};
};
};
default = { };
description = "Mako theme palette configuration.";
};
}; };
} }

View File

@@ -18,11 +18,11 @@ in
home.file = { home.file = {
".config/nwg-dock-hyprland/drawer.css".text = '' ".config/nwg-dock-hyprland/drawer.css".text = ''
window { window {
background: ${palette.colors.bg}; background: ${config.lib.stylix.colors.base00};
border-radius: 10px; border-radius: 10px;
border-style: none; border-style: none;
border-width: 1px; border-width: 1px;
border-color: ${palette.colors.accent}b0 border-color: ${config.lib.stylix.colors.base0E}b0
} }
#box { #box {
@@ -33,14 +33,14 @@ in
active { active {
/* This is to underline the button representing the currently active window */ /* This is to underline the button representing the currently active window */
border-bottom: solid 1px; border-bottom: solid 1px;
border-color: ${palette.colors.success}1a border-color: ${config.lib.stylix.colors.base0B}1a
} }
button, image { button, image {
background: none; background: none;
border-style: none; border-style: none;
box-shadow: none; box-shadow: none;
color: ${palette.colors.primary} color: ${config.lib.stylix.colors.base0F}
} }
button { button {
@@ -52,7 +52,7 @@ in
} }
button:hover { button:hover {
background-color: ${palette.colors.bg}1a; background-color: ${config.lib.stylix.colors.base00}1a;
border-radius: 2px; border-radius: 2px;
} }

View File

@@ -3,19 +3,5 @@ with lib;
{ {
options.mjallen.programs.nwg-dock = { options.mjallen.programs.nwg-dock = {
enable = mkEnableOption "enable nwg-dock"; enable = mkEnableOption "enable nwg-dock";
theme = mkOption {
type = types.submodule {
options = {
file = mkOption {
type = types.path;
default = lib.snowfall.fs.get-file "modules/home/desktop/theme/palettes/nord.nix";
description = "Nix file exporting a palette attrset.";
};
};
};
default = { };
description = "nwg-dock theme palette configuration.";
};
}; };
} }

View File

@@ -18,13 +18,13 @@ in
home.file = { home.file = {
".config/nwg-drawer/drawer.css".text = '' ".config/nwg-drawer/drawer.css".text = ''
window { window {
background-color: ${palette.colors.bg}bf; background-color: ${config.lib.stylix.colors.base00}bf;
color: ${palette.colors.textMuted}00 color: ${config.lib.stylix.colors.base05}00
} }
/* search entry */ /* search entry */
entry { entry {
background-color: ${palette.colors.bgAlt}0f background-color: ${config.lib.stylix.colors.base01}0f
} }
button, image { button, image {
@@ -33,7 +33,7 @@ in
} }
button:hover { button:hover {
background-color: ${palette.colors.primary}1a background-color: ${config.lib.stylix.colors.base0F}1a
} }
/* in case you wanted to give category buttons a different look */ /* in case you wanted to give category buttons a different look */
@@ -43,12 +43,12 @@ in
#pinned-box { #pinned-box {
padding-bottom: 5px; padding-bottom: 5px;
border-bottom: 1px dotted ${palette.colors.border} border-bottom: 1px dotted ${config.lib.stylix.colors.base03}
} }
#files-box { #files-box {
padding: 5px; padding: 5px;
border: 1px dotted ${palette.colors.border}; border: 1px dotted ${config.lib.stylix.colors.base03};
border-radius: 15px border-radius: 15px
} }
''; '';

View File

@@ -3,19 +3,5 @@ with lib;
{ {
options.mjallen.programs.nwg-drawer = { options.mjallen.programs.nwg-drawer = {
enable = mkEnableOption "enable nwg-drawer"; enable = mkEnableOption "enable nwg-drawer";
theme = mkOption {
type = types.submodule {
options = {
file = mkOption {
type = types.path;
default = lib.snowfall.fs.get-file "modules/home/desktop/theme/palettes/nord.nix";
description = "Nix file exporting a palette attrset.";
};
};
};
default = { };
description = "nwg-drawer theme palette configuration.";
};
}; };
} }

View File

@@ -2,324 +2,233 @@
with lib; with lib;
let let
cfg = config.mjallen.programs.waybar; cfg = config.mjallen.programs.waybar;
palette = import cfg.theme.file;
defaultOpacity = palette.tokens.opacity or "opacity: 0.85;";
defaultBorderRadius = palette.tokens.borderRadius or "border-radius: 1rem;";
defaultCenterOptions =
palette.tokens.centerOptions or ''
padding-top: 0.2rem;
padding-bottom: 0.2rem;
padding-left: 0.5rem;
padding-right: 0.5rem;
margin: 3px 0;
'';
borderRight =
palette.tokens.borderRight or ''
padding-top: 0.2rem;
padding-bottom: 0.2rem;
padding-left: 0.5rem;
padding-right: 0.5rem;
margin: 3px 0;
border-radius: 0rem 1rem 1rem 0rem;
margin-right: 0.5rem;
'';
borderLeft = ''
padding-top: 0.2rem;
padding-bottom: 0.2rem;
padding-left: 0.5rem;
padding-right: 0.5rem;
margin: 3px 0;
border-radius: 1rem 0rem 0rem 1rem;
margin-left: 0.5rem;
'';
baseStyle = baseStyle =
if cfg.style.file != null then if cfg.style.file != null then
builtins.readFile cfg.style.file builtins.readFile cfg.style.file
else else
'' ''
.blink_me { /* =============================================================================
animation: blinker 1s linear infinite; ANIMATIONS & GLOBAL OVERRIDES
} ============================================================================= */
@keyframes blinker { @keyframes blinker {
50% { 50% { color: @base08; }
color: @base08;
}
} }
/* Override Stylix font settings */
* { * {
font-family: font-family: "Jetbrains Mono Nerd Font", monospace;
Jetbrains Mono Nerd Font,
monospace;
font-size: 14px; font-size: 14px;
min-height: 0; min-height: 0;
} }
/* =============================================================================
MAIN BAR & TOOLTIPS
============================================================================= */
window#waybar {
background: transparent;
}
#waybar { #waybar {
background: transparent; background: transparent;
color: ${palette.colors.text}; color: @base06;
margin: 5px 5px; margin: 5px 5px;
} }
#workspaces {
background-color: ${palette.colors.bg};
${defaultBorderRadius}
${defaultOpacity}
${defaultCenterOptions}
margin-left: 0.6rem;
}
#workspaces button {
color: ${palette.colors.primary};
${defaultBorderRadius}
padding: 0.4rem;
}
#workspaces button.active {
color: ${palette.colors.info};
${defaultBorderRadius}
}
#workspaces button:hover {
color: ${palette.colors.info};
${defaultBorderRadius}
}
#workspaces button.focused {
color: ${palette.colors.text};
background: ${palette.colors.warning};
${defaultBorderRadius}
}
#workspaces button.urgent {
color: ${palette.colors.bg};
background: ${palette.colors.text};
${defaultBorderRadius}
}
#tooltip { #tooltip {
background: ${palette.colors.bg}; background: @base00;
border-color: ${palette.colors.bg}; border-color: @base00;
${defaultBorderRadius} border-radius: 1rem;
border-width: 1rem; border-width: 2px; /* Reduced from 1rem which is usually too thick */
border-style: solid; border-style: solid;
} }
#window { /* Right-click menu styling */
color: ${palette.colors.accent};
background-color: ${palette.colors.bg};
${defaultOpacity}
${defaultBorderRadius}
${defaultCenterOptions}
margin-left: 4rem;
margin-right: ${toString cfg.windowOffset}rem;
}
/* make window module transparent when no windows present */
#window.empty {
background-color: transparent;
}
#custom-power {
color: ${palette.colors.primary};
background-color: ${palette.colors.bg};
${defaultOpacity}
${defaultCenterOptions}
border-radius: 0;
}
menu { menu {
border-radius: 15px; border-radius: 15px;
background: ${palette.colors.bg}; background: @base00;
color: ${palette.colors.text}; color: @base06;
} }
menuitem { menuitem {
border-radius: 15px; border-radius: 15px;
} }
#custom-weather { /* =============================================================================
color: ${palette.colors.primary}; WORKSPACES
background-color: ${palette.colors.bg}; ============================================================================= */
${defaultOpacity} #workspaces {
${defaultCenterOptions} background-color: @base00;
border-radius: 0; border-radius: 1rem;
opacity: 0.85;
padding: 0.2rem 0.5rem;
margin: 3px 0 3px 0.6rem;
} }
#workspaces button {
color: @base0F;
border-radius: 1rem;
padding: 0.4rem;
/* Border handled by stylix, but we add specific colors below */
}
#workspaces button.active,
#workspaces button:hover {
color: @base0C;
border-radius: 1rem;
}
#workspaces button.focused {
color: @base06;
background: @base0A;
border-radius: 1rem;
}
#workspaces button.urgent {
color: @base00;
background: @base06;
border-radius: 1rem;
}
/* =============================================================================
WINDOW TITLE
============================================================================= */
#window {
color: @base0E;
background-color: @base00;
opacity: 0.85;
border-radius: 1rem;
padding: 0.2rem 0.5rem;
margin: 3px 0;
margin-left: 4rem;
margin-right: 75rem; /* This is very large, likely a centering hack */
}
#window.empty {
background-color: transparent;
}
/* =============================================================================
SHARED MODULE STYLES
============================================================================= */
/* This block applies the standard "Nord Background" style to all modules
to avoid repeating code for every single ID. */
#custom-power,
#custom-weather,
#custom-notifications,
#battery,
#clock,
#idle_inhibitor,
#network,
#bluetooth,
#wireplumber,
#keyboard-state,
#temperature,
#custom-left-end,
#custom-right-end,
#custom-lights,
#tray {
background-color: @base00;
opacity: 0.85;
padding: 0.2rem 0.5rem;
margin: 3px 0;
border-radius: 0; /* Default to square, rounded manually below */
}
/* Common Hover Effect */
#idle_inhibitor:hover,
#network:hover,
#bluetooth:hover,
#wireplumber:hover,
#temperature:hover,
#custom-lights:hover {
background: @base02;
}
/* =============================================================================
MODULE SPECIFIC COLORS
============================================================================= */
#custom-power,
#custom-weather,
#custom-notifications { #custom-notifications {
color: ${palette.colors.primary}; color: @base0F;
background-color: ${palette.colors.bg};
${defaultOpacity}
${defaultCenterOptions}
border-radius: 0;
}
#custom-notifications.notify {
color: ${palette.colors.danger};
} }
#custom-notifications.notify { color: @base08; }
#custom-notifications.alert { #custom-notifications.alert {
animation-name: blinker; animation: blinker 3s linear infinite;
animation-duration: 3s;
animation-timing-function: linear;
animation-iteration-count: infinite;
} }
#battery { #battery {
color: ${palette.colors.accent}; color: @base0E;
background-color: ${palette.colors.bg};
${defaultOpacity}
${defaultCenterOptions}
border-radius: 0;
min-width: 3rem; min-width: 3rem;
} }
#clock { #clock { color: @base0F; }
color: ${palette.colors.primary};
background-color: ${palette.colors.bg};
${defaultOpacity}
${defaultCenterOptions}
border-radius: 0;
}
/* ------------- */
#idle_inhibitor { #idle_inhibitor {
color: ${palette.colors.primary}; color: @base0F;
background-color: ${palette.colors.bg};
${defaultOpacity}
${defaultCenterOptions}
border-radius: 0;
padding-right: 1rem; padding-right: 1rem;
} }
#idle_inhibitor:hover {
background: ${palette.colors.surfaceAlt};
}
#network { #network {
color: ${palette.colors.accent}; color: @base0E;
background-color: ${palette.colors.bg};
${defaultOpacity}
${defaultCenterOptions}
border-radius: 0;
padding-right: 15px; padding-right: 15px;
} }
#network:hover { #bluetooth { color: @base0F; }
background: ${palette.colors.surfaceAlt};
}
#bluetooth { /* --- Audio source/sink --- */
color: ${palette.colors.primary}; #wireplumber.source,
background-color: ${palette.colors.bg}; #wireplumber.sink {
${defaultOpacity} color: @base0C;
${defaultCenterOptions}
border-radius: 0;
}
#bluetooth:hover {
background: ${palette.colors.surfaceAlt};
}
#wireplumber.source {
color: ${palette.colors.info};
background-color: ${palette.colors.bg};
${defaultOpacity}
${defaultCenterOptions}
border-radius: 0;
} }
#wireplumber.source.muted { #wireplumber.source.muted {
animation-name: blinker; animation: blinker 2s linear infinite;
animation-duration: 2s;
animation-timing-function: linear;
animation-iteration-count: infinite;
padding-right: 1rem; padding-right: 1rem;
} }
#wireplumber.source:hover {
background: ${palette.colors.surfaceAlt};
}
#wireplumber.sink {
color: ${palette.colors.info};
background-color: ${palette.colors.bg};
${defaultOpacity}
${defaultCenterOptions}
border-radius: 0;
}
#wireplumber.sink.muted { #wireplumber.sink.muted {
animation-name: blinker; animation: blinker 5s linear infinite;
animation-duration: 5s;
animation-timing-function: linear;
animation-iteration-count: infinite;
} }
#wireplumber.sink:hover { /* --- Keyboard --- */
background: ${palette.colors.surfaceAlt}; #keyboard-state.numlock { color: @base0C; }
} #keyboard-state.capslock { color: @base0F; }
#keyboard-state.numlock {
color: ${palette.colors.info};
background-color: ${palette.colors.bg};
${defaultOpacity}
${defaultCenterOptions}
border-radius: 0;
}
#keyboard-state.capslock {
color: ${palette.colors.primary};
background-color: ${palette.colors.bg};
${defaultOpacity}
${defaultCenterOptions}
border-radius: 0;
}
/* --- Temperature --- */
#temperature,
#temperature.gpu { #temperature.gpu {
color: ${palette.colors.primary}; color: @base0F;
background-color: ${palette.colors.bg};
${defaultOpacity}
${defaultCenterOptions}
border-radius: 0;
} }
#temperature.gpu:hover { /* --- Tray --- */
background: ${palette.colors.surfaceAlt};
}
#temperature {
color: ${palette.colors.primary};
background-color: ${palette.colors.bg};
${defaultOpacity}
${defaultCenterOptions}
border-radius: 0
}
/* ------------- */
#tray { #tray {
background-color: ${palette.colors.bg}; border-radius: 1rem;
${defaultOpacity}
${defaultCenterOptions}
${defaultBorderRadius}
margin-right: 0.6rem; margin-right: 0.6rem;
} }
/* ------------- */ /* =============================================================================
DECORATIVE END CAPS & EXTRAS
============================================================================= */
#custom-left-end { #custom-left-end {
background-color: ${palette.colors.bg}; border-radius: 1rem 0 0 1rem;
${defaultOpacity} margin-left: 0.5rem;
${borderLeft}
} }
#custom-right-end { #custom-right-end {
background-color: ${palette.colors.bg}; border-radius: 0 1rem 1rem 0;
${defaultOpacity} margin-right: 0.5rem;
${borderRight} }
#custom-lights {
color: @base0C;
/* Re-declaring background here to ensure specific override logic if needed */
background-color: @base00;
border-radius: 1rem 0 0 1rem;
margin-left: 0.5rem;
} }
''; '';
in in
@@ -596,10 +505,10 @@ in
calendar = { calendar = {
mode = "month"; mode = "month";
format = { format = {
months = "<span color='${palette.colors.primary}'><b>{}</b></span>"; months = "<span color='@base0F'><b>{}</b></span>";
days = "<span color='${palette.colors.primary}'><b>{}</b></span>"; days = "<span color='@base0F'><b>{}</b></span>";
weekdays = "<span color='${palette.colors.info}'><b>{}</b></span>"; weekdays = "<span color='@base0C'><b>{}</b></span>";
today = "<span color='${palette.colors.success}'><b><u>{}</u></b></span>"; today = "<span color='${config.lib.stylix.colors.base0B}'><b><u>{}</u></b></span>";
}; };
}; };
}; };

View File

@@ -41,21 +41,6 @@ in
description = "Right margin offset for the hyprland/window module (in rem)."; description = "Right margin offset for the hyprland/window module (in rem).";
}; };
# Theme
theme = mkOption {
type = submodule {
options = {
file = mkOption {
type = path;
default = lib.snowfall.fs.get-file "modules/home/desktop/theme/palettes/nord.nix";
description = "Nix file exporting a palette attrset (e.g., Nord).";
};
};
};
default = { };
description = "Theme configuration.";
};
# Layout # Layout
layout = mkOption { layout = mkOption {
type = submodule { type = submodule {

View File

@@ -53,13 +53,13 @@ in
} }
window { window {
background-color: ${palette.colors.bg}f0 background-color: ${config.lib.stylix.colors.base00}f0
} }
button { button {
margin: 8px; margin: 8px;
color: ${palette.colors.info}; color: ${config.lib.stylix.colors.base0C};
background-color: ${palette.colors.bgAlt}; background-color: ${config.lib.stylix.colors.base01};
border-style: solid; border-style: solid;
border-width: 2px; border-width: 2px;
background-repeat: no-repeat; background-repeat: no-repeat;
@@ -70,8 +70,8 @@ in
button:active, button:active,
button:focus, button:focus,
button:hover { button:hover {
color: ${palette.colors.info}; color: ${config.lib.stylix.colors.base0C};
background-color: ${palette.colors.surfaceAlt}; background-color: ${config.lib.stylix.colors.base02Alt};
outline-style: none; outline-style: none;
} }

View File

@@ -3,24 +3,5 @@ with lib;
{ {
options.mjallen.programs.wlogout = { options.mjallen.programs.wlogout = {
enable = mkEnableOption "enable wlogout"; enable = mkEnableOption "enable wlogout";
fontName = mkOption {
type = types.str;
default = "Deja Vu Sans";
};
theme = mkOption {
type = types.submodule {
options = {
file = mkOption {
type = types.path;
default = lib.snowfall.fs.get-file "modules/home/desktop/theme/palettes/nord.nix";
description = "Nix file exporting a palette attrset.";
};
};
};
default = { };
description = "wlogout theme palette configuration.";
};
}; };
} }

View File

@@ -20,9 +20,9 @@ in
window { window {
margin: 0px; margin: 0px;
padding: 10px; padding: 10px;
border: 0.16em solid ${palette.colors.accent}; border: 0.16em solid ${config.lib.stylix.colors.base0E};
border-radius: 0.1em; border-radius: 0.1em;
background-color: ${palette.colors.bg}; background-color: ${config.lib.stylix.colors.base00};
} }
/* Inner Box */ /* Inner Box */
@@ -30,7 +30,7 @@ in
margin: 5px; margin: 5px;
padding: 10px; padding: 10px;
border: none; border: none;
background-color: ${palette.colors.bg}; background-color: ${config.lib.stylix.colors.base00};
} }
/* Outer Box */ /* Outer Box */
@@ -38,7 +38,7 @@ in
margin: 5px; margin: 5px;
padding: 10px; padding: 10px;
border: none; border: none;
background-color: ${palette.colors.bg}; background-color: ${config.lib.stylix.colors.base00};
} }
/* Scroll */ /* Scroll */
@@ -46,7 +46,7 @@ in
margin: 0px; margin: 0px;
padding: 10px; padding: 10px;
border: none; border: none;
background-color: ${palette.colors.bg}; background-color: ${config.lib.stylix.colors.base00};
} }
/* Input */ /* Input */
@@ -55,46 +55,46 @@ in
padding: 10px; padding: 10px;
border: none; border: none;
border-radius: 0.1em; border-radius: 0.1em;
color: ${palette.colors.text}; color: ${config.lib.stylix.colors.base06};
background-color: ${palette.colors.bg}; background-color: ${config.lib.stylix.colors.base00};
} }
#input image { #input image {
border: none; border: none;
color: ${palette.colors.danger}; color: ${config.lib.stylix.colors.base08};
} }
#input * { #input * {
outline: 4px solid ${palette.colors.danger}!important; outline: 4px solid ${config.lib.stylix.colors.base08}!important;
} }
/* Text */ /* Text */
#text { #text {
margin: 5px; margin: 5px;
border: none; border: none;
color: ${palette.colors.text}; color: ${config.lib.stylix.colors.base06};
} }
#entry { #entry {
background-color: ${palette.colors.bg}; background-color: ${config.lib.stylix.colors.base00};
} }
#entry arrow { #entry arrow {
border: none; border: none;
color: ${palette.colors.accent}; color: ${config.lib.stylix.colors.base0E};
} }
/* Selected Entry */ /* Selected Entry */
#entry:selected { #entry:selected {
border: 0.11em solid ${palette.colors.accent}; border: 0.11em solid ${config.lib.stylix.colors.base0E};
} }
#entry:selected #text { #entry:selected #text {
color: ${palette.colors.info}; color: ${config.lib.stylix.colors.base0C};
} }
#entry:drop(active) { #entry:drop(active) {
background-color: ${palette.colors.accent}!important; background-color: ${config.lib.stylix.colors.base0E}!important;
} }
''; '';
}; };

View File

@@ -8,19 +8,5 @@ with lib;
type = types.str; type = types.str;
default = "Deja Vu Sans"; default = "Deja Vu Sans";
}; };
theme = mkOption {
type = types.submodule {
options = {
file = mkOption {
type = types.path;
default = lib.snowfall.fs.get-file "modules/home/desktop/theme/palettes/nord.nix";
description = "Nix file exporting a palette attrset.";
};
};
};
default = { };
description = "Wofi theme palette configuration.";
};
}; };
} }

View File

@@ -2,7 +2,7 @@
{ {
stylix = { stylix = {
enable = true; enable = true;
stylix.enableReleaseChecks = false; enableReleaseChecks = false;
base16Scheme = "${pkgs.base16-schemes}/share/themes/nord.yaml"; base16Scheme = "${pkgs.base16-schemes}/share/themes/nord.yaml";
fonts = lib.mkForce { fonts = lib.mkForce {