treewide: move styling to their respective modules

As a first step towards getting rid of home-manager and going towards a
cleaner, more concise configuration, I decided to move back the styling
to their respective home-manager modules. Since I'm not planning to
share my styling module anymore, as it is very specific to my config, I
just decided to merge everything together.

commit 078334af48
Author: Anthony Rodriguez <anthony@nezia.dev>
Date:   Sun Jan 19 20:41:14 2025 +0100

    treewide: finish moving rest of styling to their respective hm modules

commit 57432a9655
Author: Anthony Rodriguez <anthony@nezia.dev>
Date:   Fri Jan 17 12:13:54 2025 +0100

    treewide: move regreet styling out of module

commit 6fef9e0a76
Author: Anthony Rodriguez <anthony@nezia.dev>
Date:   Fri Jan 17 12:10:33 2025 +0100

    treewide: move swaync styling out of module

commit 2f4a8433c7
Author: Anthony Rodriguez <anthony@nezia.dev>
Date:   Fri Jan 17 12:06:33 2025 +0100

    treewide: move nvf styling out of module

commit a315915298
Author: Anthony Rodriguez <anthony@nezia.dev>
Date:   Fri Jan 17 12:02:58 2025 +0100

    treewide: move hyprlock styling out of module

commit 0fe6f67b20
Author: Anthony Rodriguez <anthony@nezia.dev>
Date:   Fri Jan 17 12:02:49 2025 +0100

    modules/nix/core/home-manager: import lib' in extraSpecialArgs

commit e09569b921
Author: Anthony Rodriguez <anthony@nezia.dev>
Date:   Fri Jan 17 11:55:05 2025 +0100

    treewide: move hyprland styling out of module

commit eb25ce0c43
Author: Anthony Rodriguez <anthony@nezia.dev>
Date:   Fri Jan 17 11:43:35 2025 +0100

    modules/nix/style/modules: remove styling for unused programs

commit efb6b91ce1
Author: Anthony Rodriguez <anthony@nezia.dev>
Date:   Fri Jan 17 11:00:54 2025 +0100

    treewide: move foot styling out of module

commit 4c06a66b5e
Author: Anthony Rodriguez <anthony@nezia.dev>
Date:   Fri Jan 17 10:56:05 2025 +0100

    treewide: move fish styling out of module

commit b3a03e5e9b
Author: Anthony Rodriguez <anthony@nezia.dev>
Date:   Fri Jan 17 10:47:43 2025 +0100

    treewide: move discord styling out of module
This commit is contained in:
Anthony Rodriguez 2025-01-19 20:42:47 +01:00
parent 89f8637d03
commit 861c658590
Signed by: nezia
GPG key ID: EE3BE97C040A86CE
35 changed files with 824 additions and 1063 deletions

View file

@ -1,6 +1,18 @@
{
lib,
osConfig,
...
}: let
styleCfg = osConfig.local.style;
in {
imports = [
./programs
./services
];
home.pointerCursor = lib.mkIf styleCfg.enable {
inherit (styleCfg.cursorTheme) name package size;
x11.enable = true;
gtk.enable = true;
};
}

View file

@ -6,6 +6,7 @@
./media
./terminal
./discord.nix
./games.nix
./gnome.nix
./misc.nix

View file

@ -1,13 +1,15 @@
{
lib,
config,
pkgs,
osConfig,
...
}: let
cfg = config.local.style;
styleCfg = osConfig.local.style;
in {
config.home-manager.sharedModules = lib.mkIf cfg.enable [
{
xdg.configFile."vesktop/themes/midnight-base16.css".text = with cfg.scheme.palette; ''
config = lib.mkIf osConfig.local.profiles.desktop.enable {
home.packages = [pkgs.vesktop];
xdg.configFile."vesktop/themes/midnight-base16.css".text = with styleCfg.scheme.palette;
lib.mkIf styleCfg.enable ''
/**
* @name Midnight-base16
* @description A dark, rounded discord theme. Updated to use base16 colors.
@ -30,7 +32,7 @@ in {
--font: 'gg sans';
/* top left corner text */
--corner-text: '${cfg.scheme.name}';
--corner-text: '${styleCfg.scheme.name}';
/* color of status indicators and window controls */
--online-indicator: ${base0B}; /* change to #23a55a for default green */
@ -108,6 +110,5 @@ in {
fill: var(--text-0) !important;
}
'';
}
];
};
}

View file

@ -4,13 +4,16 @@
pkgs,
osConfig,
...
}: {
}: let
styleCfg = osConfig.local.style;
in {
imports = [inputs.nvf.homeManagerModules.default];
config = lib.mkIf osConfig.local.profiles.desktop.enable {
programs.nvf = {
enable = true;
settings.vim = {
settings.vim = lib.mkMerge [
{
viAlias = true;
vimAlias = true;
enableLuaLoader = true;
@ -40,12 +43,6 @@
};
};
theme = lib.mkDefault {
enable = true;
name = "catppuccin";
style = "macchiato";
};
ui = {
noice.enable = true;
};
@ -222,7 +219,15 @@
filetree.neo-tree.enable = true;
telescope.enable = true;
}
(lib.mkIf styleCfg.enable {
theme = {
enable = true;
name = "base16";
base16-colors = styleCfg.scheme.palette;
};
})
];
};
programs.neovide = {

View file

@ -4,7 +4,10 @@
pkgs,
osConfig,
...
}: {
}: let
inherit (builtins) toString;
styleCfg = osConfig.local.style;
in {
imports = [./binds.nix];
config = lib.mkIf osConfig.local.modules.hyprland.enable {
@ -35,7 +38,8 @@
systemd.enable = false;
settings = {
settings = lib.mkMerge [
{
xwayland = {
force_zero_scaling = true;
};
@ -113,7 +117,24 @@
disable_hyprland_logo = true;
middle_click_paste = false;
};
}
(lib.mkIf styleCfg.enable {
env = [
"HYPRCURSOR_THEME,${styleCfg.cursorTheme.name}"
"HYPRCURSOR_SIZE,${toString styleCfg.cursorTheme.size}"
"XCURSOR_SIZE,${toString styleCfg.cursorTheme.size}"
];
general = {
border_size = 4;
"col.active_border" = "rgb(${lib.removePrefix "#" styleCfg.scheme.palette.base0E})";
};
decoration = {
rounding = 10;
blur.enabled = true;
};
})
];
};
};
}

View file

@ -1,14 +1,114 @@
{
lib,
lib',
inputs,
pkgs,
osConfig,
...
}: {
}: let
styleCfg = osConfig.local.style;
rgbaPalette = builtins.mapAttrs (_: c: (lib'.rgba c 1)) styleCfg.scheme.palette;
in {
config = lib.mkIf osConfig.local.modules.hyprland.enable {
programs.hyprlock = {
enable = true;
package = inputs.hyprlock.packages.${pkgs.system}.hyprlock;
settings = lib.mkMerge [
{
general = {
disable_loading_bar = true;
hide_cursor = true;
};
}
(with rgbaPalette;
lib.mkIf styleCfg.enable {
background = [
{
path = "screenshot";
blur_passes = 3;
blur_size = 8;
}
];
label = [
{
monitor = "";
text = "Layout: $LAYOUT";
font_size = 25;
color = base05;
position = "30, -30";
halign = "left";
valign = "top";
}
{
monitor = "";
text = "$TIME";
font_size = 90;
color = base05;
position = "-30, 0";
halign = "right";
valign = "top";
}
{
monitor = "";
text = "cmd[update:43200000] date +\"%A, %d %B %Y\"";
font_size = 25;
color = base05;
position = "-30, -150";
halign = "right";
valign = "top";
}
];
image = {
monitor = "";
path = "${styleCfg.avatar}"; # Replace with your avatar path
size = 100;
border_color = 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 = base0D;
inner_color = base02;
font_color = base05;
fade_on_empty = false;
# the span elements still use #RRGGBB, so we use scheme directly
placeholder_text = "<span foreground=\"#${styleCfg.scheme.palette.base05}\"><i>󰌾 Logged in as </i><span foreground=\"#${styleCfg.scheme.palette.base0D}\">$USER</span></span>";
hide_input = false;
check_color = base0D;
fail_color = base08;
fail_text = "<i>$FAIL <b>($ATTEMPTS)</b></i>";
capslock_color = base0E;
position = "0, -47";
halign = "center";
valign = "center";
}
];
})
];
};
};
}

View file

@ -4,7 +4,10 @@
osConfig,
...
}: {
imports = [./zathura.nix];
imports = [
./tidal-hifi.nix
./zathura.nix
];
config = lib.mkIf osConfig.local.profiles.desktop.enable {
programs.mpv.enable = true;
@ -13,7 +16,6 @@
pkgs.gthumb
pkgs.spotify
pkgs.stremio
pkgs.tidal-hifi
pkgs.celluloid
];
};

View file

@ -1,14 +1,16 @@
{
lib,
config,
osConfig,
pkgs,
...
}: let
cfg = config.local.style;
styleCfg = osConfig.local.style;
in {
config.home-manager.sharedModules = lib.mkIf cfg.enable [
{
config = lib.mkIf osConfig.local.profiles.desktop.enable {
home.packages = [pkgs.tidal-hifi];
# 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; ''
xdg.configFile."tidal-hifi/themes/base16.css".text = with styleCfg.scheme.palette;
lib.mkIf styleCfg.enable ''
:root {
--glass-white-1: ${base05};
--glass-white-1-hover: ${base06};
@ -190,6 +192,5 @@ in {
stroke: var(--wave-color-solid-rainbow-purple-fill) !important;
}
'';
}
];
};
}

View file

@ -19,7 +19,6 @@
playerctl
proton-pass
simple-scan
vesktop
wl-clipboard
];

View file

@ -3,7 +3,11 @@
config,
osConfig,
...
}: {
}: let
styleCfg = osConfig.local.style;
# because someone thought this was a great idea: https://github.com/tinted-theming/schemes/commit/61058a8d2e2bd4482b53d57a68feb56cdb991f0b
palette = builtins.mapAttrs (_: color: lib.removePrefix "#" color) styleCfg.scheme.palette;
in {
config = lib.mkIf osConfig.local.modules.hyprland.enable {
programs.foot = {
enable = true;
@ -13,6 +17,37 @@
font = "monospace:size=14";
shell = "${lib.getExe config.programs.fish.package}";
};
colors = with palette;
lib.mkIf styleCfg.enable {
background = base00;
foreground = base05;
regular0 = base00;
regular1 = base08;
regular2 = base0B;
regular3 = base0A;
regular4 = base0D;
regular5 = base0E;
regular6 = base0C;
regular7 = base05;
bright0 = base02;
bright1 = base08;
bright2 = base0B;
bright3 = base0A;
bright4 = base0D;
bright5 = base0E;
bright6 = base0C;
bright7 = base07;
"16" = base09;
"17" = base0F;
"18" = base01;
"19" = base02;
"20" = base04;
"21" = base06;
};
};
};
};

View file

@ -14,6 +14,7 @@
starship module cmd_duration
end
'';
styleCfg = osConfig.local.style;
in {
config = lib.mkIf osConfig.local.profiles.desktop.enable {
programs.fish = {
@ -24,7 +25,43 @@ in {
set fish_greeting # Disable greeting
fish_vi_key_bindings # Enable Vi mode
''
+ lib.optionalString styleCfg.enable
''
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'
'';
plugins = [
{
name = "fzf";

View file

@ -9,6 +9,20 @@
enableTransience = true;
settings = {
add_newline = true;
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)";
};
};
};
};

View file

@ -3,7 +3,9 @@
inputs,
osConfig,
...
}: {
}: let
styleCfg = osConfig.local.style;
in {
imports = [
inputs.walker.homeManagerModules.default
];
@ -20,6 +22,153 @@
websearch.prefix = "?";
switcher.prefix = "/";
};
theme = with styleCfg.scheme.palette;
lib.mkIf styleCfg.enable {
style = ''
@define-color foreground ${base05};
@define-color background ${base00};
@define-color accent ${base0E};
#window,
#box,
#aiScroll,
#aiList,
#search,
#password,
#input,
#prompt,
#clear,
#typeahead,
#list,
child,
scrollbar,
slider,
#item,
#text,
#label,
#bar,
#sub,
#activationlabel {
all: unset;
}
#cfgerr {
background: rgba(255, 0, 0, 0.4);
margin-top: 20px;
padding: 8px;
font-size: 1.2em;
}
#window {
color: @foreground;
}
#box {
border-radius: 2px;
background: @background;
padding: 32px;
border: 1px solid ${base01};
box-shadow:
0 19px 38px rgba(0, 0, 0, 0.3),
0 15px 12px rgba(0, 0, 0, 0.22);
}
#search {
box-shadow:
0 1px 3px rgba(0, 0, 0, 0.1),
0 1px 2px rgba(0, 0, 0, 0.22);
background: ${base01};
padding: 8px;
}
#prompt {
margin-left: 4px;
margin-right: 12px;
color: @foreground;
opacity: 0.2;
}
#clear {
color: @foreground;
opacity: 0.8;
}
#password,
#input,
#typeahead {
border-radius: 2px;
}
#input {
background: none;
}
#spinner {
padding: 8px;
}
#typeahead {
color: @foreground;
opacity: 0.8;
}
#input placeholder {
opacity: 0.5;
}
child {
padding: 8px;
border-radius: 2px;
}
child:selected,
child:hover {
background: alpha(@accent, 0.4);
}
#icon {
margin-right: 8px;
}
#label {
font-weight: 500;
}
#sub {
opacity: 0.5;
font-size: 0.8em;
}
.aiItem {
padding: 10px;
border-radius: 2px;
color: @foreground;
background: @background;
}
.aiItem.assistant {
background: ${base02};
}
.aiItem:hover {
background: alpha(@accent, 0.2);
color: ${base00};
}
#activationlabel {
color: @accent;
font-weight: bold;
}
'';
layout = {
ui.window.box = {
v_align = "center";
orientation = "vertical";
};
};
};
};
systemd.user.services.walker = {

View file

@ -3,7 +3,10 @@
pkgs,
osConfig,
...
}: {
}: let
styleCfg = osConfig.local.style;
betterTransition = "all 0.3s cubic-bezier(.55,-0.68,.48,1.682)";
in {
config = lib.mkIf osConfig.local.modules.hyprland.enable {
programs.waybar = {
enable = true;
@ -176,6 +179,90 @@
};
};
};
style = with styleCfg.scheme.palette; ''
* {
font-family: "0xProto Nerd Font";
font-size: 16px;
border-radius: 0px;
border: none;
min-height: 0px;
}
window#waybar {
background: rgba(0,0,0,0);
}
#workspaces {
color: ${base00};
background: ${base01};
margin: 4px 4px;
padding: 5px 5px;
border-radius: 16px;
}
#workspaces button {
font-weight: bold;
padding: 0px 5px;
margin: 0px 3px;
border-radius: 16px;
color: ${base00};
background: linear-gradient(45deg, ${base08}, ${base0D});
opacity: 0.5;
transition: ${betterTransition};
}
#workspaces button.active {
font-weight: bold;
padding: 0px 5px;
margin: 0px 3px;
border-radius: 16px;
color: ${base00};
background: linear-gradient(45deg, ${base08}, ${base0D});
transition: ${betterTransition};
opacity: 1.0;
min-width: 40px;
}
#workspaces button:hover {
font-weight: bold;
border-radius: 16px;
color: ${base00};
background: linear-gradient(45deg, ${base08}, ${base0D});
opacity: 0.8;
transition: ${betterTransition};
}
tooltip {
background: ${base00};
border: 1px solid ${base0E};
border-radius: 12px;
}
tooltip label {
color: ${base0E};
}
#window, #pulseaudio, #cpu, #memory, #idle_inhibitor {
font-weight: bold;
margin: 4px 0px;
margin-left: 7px;
padding: 0px 18px;
background: ${base00};
color: ${base05};
border-radius: 24px 10px 24px 10px;
}
#network, #battery,
#custom-swaync, #tray, #custom-power {
font-weight: bold;
background: ${base00};
color: ${base05};
margin: 4px 0px;
margin-right: 7px;
border-radius: 10px 24px 10px 24px;
padding: 0px 18px;
}
#clock {
font-weight: bold;
color: ${base00};
background: linear-gradient(90deg, ${base0E}, ${base0C});
margin: 0px;
padding: 0px 15px 0px 30px;
border-radius: 0px 0px 0px 40px;
}
'';
};
systemd.user.services.waybar = {

View file

@ -1,6 +1,7 @@
{
imports = [
./gammastep.nix
./gtk.nix
./syncthing.nix
./swaync
./udiskie.nix

View file

@ -1,20 +1,19 @@
{
lib,
config,
osConfig,
...
}: let
cfg = config.local.style;
inherit (cfg) scheme;
styleCfg = osConfig.local.style;
in {
home-manager.sharedModules = lib.mkIf cfg.enable [
{
config = with styleCfg;
lib.mkIf styleCfg.enable {
gtk = rec {
enable = true;
iconTheme = {
inherit (cfg.gtk.iconTheme) name package;
inherit (gtk.iconTheme) name package;
};
theme = {
inherit (cfg.gtk.theme) name package;
inherit (gtk.theme) name package;
};
gtk3.extraConfig = {
@ -24,6 +23,5 @@ in {
};
dconf.settings."org/gnome/desktop/interface".color-scheme = "prefer-${scheme.variant}";
}
];
};
}

View file

@ -1,14 +1,15 @@
{
lib,
lib',
osConfig,
...
}: let
inherit (builtins) readFile;
styleCfg = osConfig.local.style;
in {
config = lib.mkIf osConfig.local.modules.hyprland.enable {
services.swaync = {
services.swaync = lib.mkMerge [
{
enable = true;
style = readFile ./style.css;
settings = {
positionX = "right";
positionY = "top";
@ -26,8 +27,15 @@ in {
notification-body-image-height = 100;
notification-body-image-width = 200;
};
};
# systemd.user.services.swaync.Service.Environment = "WAYLAND_DISPLAY=wayland-1";
}
(lib.mkIf styleCfg.enable {
style =
lib'.generateGtkColors lib styleCfg.scheme.palette
+ builtins.readFile ./style.css;
})
];
systemd.user.services.swaync.Unit.ConditionEnvironment = lib.mkForce "";
};
}

View file

@ -5,6 +5,7 @@
...
}: let
inherit (config.local.systemVars) username;
lib' = import ../../../shared/lib inputs.nixpkgs.lib;
in {
imports = [
inputs.home-manager.nixosModules.default
@ -16,7 +17,7 @@ in {
useGlobalPkgs = true;
useUserPackages = true;
extraSpecialArgs = {inherit inputs;};
extraSpecialArgs = {inherit inputs lib';};
sharedModules = [../../hm];
};

View file

@ -3,6 +3,5 @@
./core
./programs
./services
./style
];
}

View file

@ -1,8 +1,8 @@
{
config,
inputs,
lib,
inputs,
pkgs,
config,
...
}:
# thanks https://git.jacekpoz.pl/poz/niksos/src/commit/f8d5e7ccd9c769f7c0b564f10dff419285e75248/modules/services/greetd.nix
@ -10,6 +10,8 @@ let
inherit (lib) getExe getExe';
inherit (inputs.hyprland.packages.${pkgs.stdenv.system}) hyprland;
styleCfg = config.local.style;
hyprctl = getExe' hyprland "hyprctl";
Hyprland = getExe' hyprland "Hyprland";
@ -46,10 +48,26 @@ in {
};
};
programs.regreet = {
programs.regreet = lib.mkMerge [
{
enable = true;
}
(lib.mkIf styleCfg.enable {
theme = {
inherit (styleCfg.gtk.theme) name package;
};
cursorTheme = {
inherit (styleCfg.cursorTheme) name package;
};
iconTheme = {
inherit (styleCfg.gtk.iconTheme) name package;
};
})
];
security.pam.services = {
greetd.enableGnomeKeyring = true;
login.enableGnomeKeyring = true;

View file

@ -1,29 +0,0 @@
{
inputs,
config,
lib,
...
}: let
inherit (lib) mkIf;
cfg = config.local.style;
in {
imports =
[
inputs.niri.nixosModules.niri
inputs.hyprland.nixosModules.default
]
++ lib.filesystem.listFilesRecursive ./modules;
config = mkIf cfg.enable {
home-manager.sharedModules = [
{
home.pointerCursor = {
inherit (cfg.cursorTheme) name package size;
x11.enable = true;
gtk.enable = true;
};
}
];
};
}

View file

@ -1,46 +0,0 @@
{
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'
'';
}
];
}

View file

@ -1,45 +0,0 @@
{
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
with palette; {
background = base00;
foreground = base05;
regular0 = base00;
regular1 = base08;
regular2 = base0B;
regular3 = base0A;
regular4 = base0D;
regular5 = base0E;
regular6 = base0C;
regular7 = base05;
bright0 = base02;
bright1 = base08;
bright2 = base0B;
bright3 = base0A;
bright4 = base0D;
bright5 = base0E;
bright6 = base0C;
bright7 = base07;
"16" = base09;
"17" = base0F;
"18" = base01;
"19" = base02;
"20" = base04;
"21" = base06;
};
}
];
}

View file

@ -1,27 +0,0 @@
{
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 = with scheme.palette; {
background = "${base01}f2";
text = "${base05}ff";
match = "${base0E}ff";
selection = "${base03}ff";
selection-text = "${base06}ff";
selection-match = "${base0E}ff";
border = "${base0E}ff";
};
};
}
];
}

View file

@ -1,27 +0,0 @@
{
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;
};
};
}
];
}

View file

@ -1,109 +0,0 @@
{
lib,
lib',
config,
...
}: let
cfg = config.local.style;
# hyprlock takes colors such as rgb[a](r, g, b [, a])
rgbaPalette = builtins.mapAttrs (_: c: (lib'.rgba c 1)) cfg.scheme.palette;
in {
config.home-manager.sharedModules = with rgbaPalette;
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 = base05;
position = "30, -30";
halign = "left";
valign = "top";
}
{
monitor = "";
text = "$TIME";
font_size = 90;
color = base05;
position = "-30, 0";
halign = "right";
valign = "top";
}
{
monitor = "";
text = "cmd[update:43200000] date +\"%A, %d %B %Y\"";
font_size = 25;
color = base05;
position = "-30, -150";
halign = "right";
valign = "top";
}
];
image = {
monitor = "";
path = "${cfg.avatar}"; # Replace with your avatar path
size = 100;
border_color = 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 = base0D;
inner_color = base02;
font_color = base05;
fade_on_empty = false;
# the span elements still use #RRGGBB, so we use scheme directly
placeholder_text = "<span foreground=\"#${cfg.scheme.palette.base05}\"><i>󰌾 Logged in as </i><span foreground=\"#${cfg.scheme.palette.base0D}\">$USER</span></span>";
hide_input = false;
check_color = base0D;
fail_color = base08;
fail_text = "<i>$FAIL <b>($ATTEMPTS)</b></i>";
capslock_color = base0E;
position = "0, -47";
halign = "center";
valign = "center";
}
];
};
};
}
];
}

View file

@ -1,21 +0,0 @@
{
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;
};
};
};
}
];
}

View file

@ -1,17 +0,0 @@
{
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;
};
}
];
}

View file

@ -1,21 +0,0 @@
{
lib,
config,
...
}: let
cfg = config.local.style;
in {
config.programs.regreet = lib.mkIf cfg.enable {
theme = {
inherit (cfg.gtk.theme) name package;
};
cursorTheme = {
inherit (cfg.cursorTheme) name package;
};
iconTheme = {
inherit (cfg.gtk.iconTheme) name package;
};
};
}

View file

@ -1,27 +0,0 @@
{
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)";
};
};
}
];
}

View file

@ -1,47 +0,0 @@
{
lib,
config,
...
}: let
cfg = config.local.style;
in {
config.home-manager.sharedModules = with cfg.scheme.palette;
lib.mkIf cfg.enable [
{
programs.swaylock.settings = {
inside-color = base01;
line-color = base01;
ring-color = base05;
text-color = base05;
inside-clear-color = base0A;
line-clear-color = base0A;
ring-clear-color = base00;
text-clear-color = base00;
inside-caps-lock-color = base03;
line-caps-lock-color = base03;
ring-caps-lock-color = base00;
text-caps-lock-color = base00;
inside-ver-color = base0D;
line-ver-color = base0D;
ring-ver-color = base00;
text-ver-color = base00;
inside-wrong-color = base08;
line-wrong-color = base08;
ring-wrong-color = base00;
text-wrong-color = base00;
caps-lock-bs-hl-color = base08;
caps-lock-key-hl-color = base0D;
bs-hl-color = base08;
key-hl-color = base0D;
separator-color = "#00000000"; # transparent
layout-bg-color = "#00000050"; # semi-transparent black
};
}
];
}

View file

@ -1,14 +0,0 @@
{
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;
}
];
}

View file

@ -1,159 +0,0 @@
{
lib,
config,
...
}: let
cfg = config.local.style;
in {
config.home-manager.sharedModules = lib.mkIf cfg.enable [
{
programs.walker = with cfg.scheme.palette; {
theme = {
style = ''
@define-color foreground ${base05};
@define-color background ${base00};
@define-color accent ${base0E};
#window,
#box,
#aiScroll,
#aiList,
#search,
#password,
#input,
#prompt,
#clear,
#typeahead,
#list,
child,
scrollbar,
slider,
#item,
#text,
#label,
#bar,
#sub,
#activationlabel {
all: unset;
}
#cfgerr {
background: rgba(255, 0, 0, 0.4);
margin-top: 20px;
padding: 8px;
font-size: 1.2em;
}
#window {
color: @foreground;
}
#box {
border-radius: 2px;
background: @background;
padding: 32px;
border: 1px solid ${cfg.scheme.palette.base01};
box-shadow:
0 19px 38px rgba(0, 0, 0, 0.3),
0 15px 12px rgba(0, 0, 0, 0.22);
}
#search {
box-shadow:
0 1px 3px rgba(0, 0, 0, 0.1),
0 1px 2px rgba(0, 0, 0, 0.22);
background: ${cfg.scheme.palette.base01};
padding: 8px;
}
#prompt {
margin-left: 4px;
margin-right: 12px;
color: @foreground;
opacity: 0.2;
}
#clear {
color: @foreground;
opacity: 0.8;
}
#password,
#input,
#typeahead {
border-radius: 2px;
}
#input {
background: none;
}
#spinner {
padding: 8px;
}
#typeahead {
color: @foreground;
opacity: 0.8;
}
#input placeholder {
opacity: 0.5;
}
child {
padding: 8px;
border-radius: 2px;
}
child:selected,
child:hover {
background: alpha(@accent, 0.4);
}
#icon {
margin-right: 8px;
}
#label {
font-weight: 500;
}
#sub {
opacity: 0.5;
font-size: 0.8em;
}
.aiItem {
padding: 10px;
border-radius: 2px;
color: @foreground;
background: @background;
}
.aiItem.assistant {
background: ${cfg.scheme.palette.base02};
}
.aiItem:hover {
background: alpha(@accent, 0.2);
color: ${cfg.scheme.palette.base00};
}
#activationlabel {
color: @accent;
font-weight: bold;
}
'';
layout = {
ui.window.box = {
v_align = "center";
orientation = "vertical";
};
};
};
};
}
];
}

View file

@ -1,96 +0,0 @@
{
lib,
config,
...
}: let
cfg = config.local.style;
betterTransition = "all 0.3s cubic-bezier(.55,-0.68,.48,1.682)";
in {
config.home-manager.sharedModules = lib.mkIf cfg.enable [
{
programs.waybar.style = with cfg.scheme.palette; ''
* {
font-family: "0xProto Nerd Font";
font-size: 16px;
border-radius: 0px;
border: none;
min-height: 0px;
}
window#waybar {
background: rgba(0,0,0,0);
}
#workspaces {
color: ${base00};
background: ${base01};
margin: 4px 4px;
padding: 5px 5px;
border-radius: 16px;
}
#workspaces button {
font-weight: bold;
padding: 0px 5px;
margin: 0px 3px;
border-radius: 16px;
color: ${base00};
background: linear-gradient(45deg, ${base08}, ${base0D});
opacity: 0.5;
transition: ${betterTransition};
}
#workspaces button.active {
font-weight: bold;
padding: 0px 5px;
margin: 0px 3px;
border-radius: 16px;
color: ${base00};
background: linear-gradient(45deg, ${base08}, ${base0D});
transition: ${betterTransition};
opacity: 1.0;
min-width: 40px;
}
#workspaces button:hover {
font-weight: bold;
border-radius: 16px;
color: ${base00};
background: linear-gradient(45deg, ${base08}, ${base0D});
opacity: 0.8;
transition: ${betterTransition};
}
tooltip {
background: ${base00};
border: 1px solid ${base0E};
border-radius: 12px;
}
tooltip label {
color: ${base0E};
}
#window, #pulseaudio, #cpu, #memory, #idle_inhibitor {
font-weight: bold;
margin: 4px 0px;
margin-left: 7px;
padding: 0px 18px;
background: ${base00};
color: ${base05};
border-radius: 24px 10px 24px 10px;
}
#network, #battery,
#custom-swaync, #tray, #custom-power {
font-weight: bold;
background: ${base00};
color: ${base05};
margin: 4px 0px;
margin-right: 7px;
border-radius: 10px 24px 10px 24px;
padding: 0px 18px;
}
#clock {
font-weight: bold;
color: ${base00};
background: linear-gradient(90deg, ${base0E}, ${base0C});
margin: 0px;
padding: 0px 15px 0px 30px;
border-radius: 0px 0px 0px 40px;
}
'';
}
];
}

View file

@ -1,43 +0,0 @@
{
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;
};
}
];
}