treewide: global refactor towards a better module structure
Initially, I was using a weird combination of options in order to apply my theme dynamically. I was setting a read-only option from inside my modules, which was then used in every application that required it. What I ended up doing is refactoring everything in order to be inside of my theme module, and automatically configured when enabled, without doing any mkMerge/mkIf shenanigans in my other pieces of configuration. This is healthier, although it should be split up as the theme/default.nix got quite big.
This commit is contained in:
parent
84c8dc0920
commit
2ac966be49
12 changed files with 252 additions and 373 deletions
|
@ -14,17 +14,6 @@
|
||||||
dpi-aware = "auto";
|
dpi-aware = "auto";
|
||||||
font = "monospace:size=14";
|
font = "monospace:size=14";
|
||||||
};
|
};
|
||||||
colors = let
|
|
||||||
inherit (osConfig.theme.scheme) palette;
|
|
||||||
in {
|
|
||||||
background = "${palette.base00}ff";
|
|
||||||
text = "${palette.base05}ff";
|
|
||||||
input = "${palette.base05}ff";
|
|
||||||
selection = "${palette.base02}ff";
|
|
||||||
selection-text = "${palette.base07}ff";
|
|
||||||
selection-match = "${palette.base0D}ff";
|
|
||||||
border = "${palette.base0E}ff";
|
|
||||||
};
|
|
||||||
border.width = 5;
|
border.width = 5;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,18 +1,8 @@
|
||||||
{
|
{
|
||||||
pkgs,
|
pkgs,
|
||||||
config,
|
config,
|
||||||
osConfig,
|
|
||||||
lib,
|
|
||||||
...
|
...
|
||||||
}: let
|
}: {
|
||||||
isDark = osConfig.theme.scheme.variant == "dark";
|
|
||||||
in {
|
|
||||||
home.pointerCursor = {
|
|
||||||
inherit (osConfig.theme.cursorTheme) name package size;
|
|
||||||
gtk.enable = true;
|
|
||||||
x11.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
gtk = {
|
gtk = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
|
@ -24,7 +14,6 @@ in {
|
||||||
|
|
||||||
gtk3.extraConfig = {
|
gtk3.extraConfig = {
|
||||||
gtk-decoration-layout = ":menu";
|
gtk-decoration-layout = ":menu";
|
||||||
gtk-application-prefer-dark-theme = isDark;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
gtk4.extraConfig = {
|
gtk4.extraConfig = {
|
||||||
|
@ -32,21 +21,5 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
gtk2.configLocation = "${config.xdg.configHome}/gtk-2.0/gtkrc";
|
gtk2.configLocation = "${config.xdg.configHome}/gtk-2.0/gtkrc";
|
||||||
|
|
||||||
iconTheme = {
|
|
||||||
inherit (osConfig.theme.gtk.iconTheme) name package;
|
|
||||||
};
|
|
||||||
|
|
||||||
theme = lib.mkIf (!osConfig.services.xserver.desktopManager.gnome.enable) {
|
|
||||||
inherit (osConfig.theme.gtk.theme) name package;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
dconf.settings = {
|
|
||||||
"org/gnome/desktop/interface" = {
|
|
||||||
color-scheme =
|
|
||||||
if isDark
|
|
||||||
then "prefer-dark"
|
|
||||||
else "default";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,68 +1,17 @@
|
||||||
{
|
_: {
|
||||||
osConfig,
|
|
||||||
lib,
|
|
||||||
lib',
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (osConfig.theme.scheme) palette;
|
|
||||||
inherit (lib) mkIf mkMerge;
|
|
||||||
inherit (lib') rgba;
|
|
||||||
in {
|
|
||||||
programs.zathura = {
|
programs.zathura = {
|
||||||
enable = true;
|
enable = true;
|
||||||
options = mkMerge [
|
options = {
|
||||||
{
|
font = "Inter 12";
|
||||||
font = "Inter 12";
|
selection-notification = true;
|
||||||
selection-notification = true;
|
|
||||||
|
|
||||||
selection-clipboard = "clipboard";
|
selection-clipboard = "clipboard";
|
||||||
adjust-open = "best-fit";
|
adjust-open = "best-fit";
|
||||||
pages-per-row = "1";
|
pages-per-row = "1";
|
||||||
scroll-page-aware = "true";
|
scroll-page-aware = "true";
|
||||||
scroll-full-overlap = "0.01";
|
scroll-full-overlap = "0.01";
|
||||||
scroll-step = "100";
|
scroll-step = "100";
|
||||||
zoom-min = "10";
|
zoom-min = "10";
|
||||||
}
|
};
|
||||||
(mkIf osConfig.theme.enable {
|
|
||||||
default-fg = palette.base05;
|
|
||||||
default-bg = palette.base00;
|
|
||||||
|
|
||||||
completion-bg = palette.base02;
|
|
||||||
completion-fg = palette.base05;
|
|
||||||
completion-highlight-bg = palette.base03;
|
|
||||||
completion-highlight-fg = palette.base05;
|
|
||||||
completion-group-bg = palette.base02;
|
|
||||||
completion-group-fg = palette.base0D;
|
|
||||||
|
|
||||||
statusbar-fg = palette.base05;
|
|
||||||
statusbar-bg = palette.base02;
|
|
||||||
|
|
||||||
notification-bg = palette.base02;
|
|
||||||
notification-fg = palette.base05;
|
|
||||||
notification-error-bg = palette.base02;
|
|
||||||
notification-error-fg = palette.base08;
|
|
||||||
notification-warning-bg = palette.base02;
|
|
||||||
notification-warning-fg = palette.base0A;
|
|
||||||
|
|
||||||
inputbar-fg = palette.base05;
|
|
||||||
inputbar-bg = palette.base02;
|
|
||||||
|
|
||||||
recolor = true;
|
|
||||||
recolor-lightcolor = palette.base00;
|
|
||||||
recolor-darkcolor = palette.base05;
|
|
||||||
|
|
||||||
index-fg = palette.base05;
|
|
||||||
index-bg = palette.base00;
|
|
||||||
index-active-fg = palette.base05;
|
|
||||||
index-active-bg = palette.base02;
|
|
||||||
|
|
||||||
render-loading-bg = palette.base00;
|
|
||||||
render-loading-fg = palette.base05;
|
|
||||||
|
|
||||||
highlight-color = rgba lib palette.base03 ".5";
|
|
||||||
highlight-fg = rgba lib palette.base0E ".5";
|
|
||||||
highlight-active-color = rgba lib palette.base0E ".5";
|
|
||||||
})
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,11 +2,8 @@
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
config,
|
config,
|
||||||
osConfig,
|
|
||||||
...
|
...
|
||||||
}: let
|
}: {
|
||||||
inherit (lib) mkMerge mkIf;
|
|
||||||
in {
|
|
||||||
imports = [./binds.nix];
|
imports = [./binds.nix];
|
||||||
|
|
||||||
xdg.portal = {
|
xdg.portal = {
|
||||||
|
@ -22,85 +19,78 @@ in {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
programs.niri = mkMerge [
|
programs.niri = {
|
||||||
{
|
settings = {
|
||||||
settings = {
|
input = {
|
||||||
input = {
|
power-key-handling.enable = false;
|
||||||
power-key-handling.enable = false;
|
keyboard.xkb = {
|
||||||
keyboard.xkb = {
|
layout = "us";
|
||||||
layout = "us";
|
options = "compose:ralt";
|
||||||
options = "compose:ralt";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
prefer-no-csd = true;
|
|
||||||
hotkey-overlay.skip-at-startup = true;
|
|
||||||
|
|
||||||
layout = {
|
|
||||||
focus-ring = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
always-center-single-column = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
# https://github.com/sodiboo/system/blob/2978f4d79c51a5bd7e38a9cd75e3ec9046aa7e75/niri.mod.nix#L418-L434
|
|
||||||
outputs = let
|
|
||||||
cfg = config.programs.niri.settings.outputs;
|
|
||||||
in {
|
|
||||||
"HDMI-A-1" = {
|
|
||||||
mode = {
|
|
||||||
width = 1920;
|
|
||||||
height = 1080;
|
|
||||||
refresh = 60.0;
|
|
||||||
};
|
|
||||||
position.x = -cfg."HDMI-A-1".mode.width;
|
|
||||||
position.y = 0;
|
|
||||||
};
|
|
||||||
"DP-1" = {
|
|
||||||
mode = {
|
|
||||||
width = 2560;
|
|
||||||
height = 1440;
|
|
||||||
refresh = 144.0;
|
|
||||||
};
|
|
||||||
position.x = 0;
|
|
||||||
position.y = 0;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
window-rules = [
|
|
||||||
{
|
|
||||||
draw-border-with-background = false;
|
|
||||||
geometry-corner-radius = let
|
|
||||||
r = 8.0;
|
|
||||||
in {
|
|
||||||
top-left = r;
|
|
||||||
top-right = r;
|
|
||||||
bottom-left = r;
|
|
||||||
bottom-right = r;
|
|
||||||
};
|
|
||||||
clip-to-geometry = true;
|
|
||||||
}
|
|
||||||
{
|
|
||||||
matches = [
|
|
||||||
{app-id = "foot";}
|
|
||||||
];
|
|
||||||
default-column-width = {proportion = 0.5;};
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
environment = {
|
|
||||||
"NIXOS_OZONE_WL" = "1";
|
|
||||||
"DISPLAY" = ":0";
|
|
||||||
"_JAVA_AWT_WM_NONREPARENTING" = "1"; # https://wiki.archlinux.org/title/Sway#Java_applications
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
|
||||||
(mkIf osConfig.theme.enable (let
|
prefer-no-csd = true;
|
||||||
inherit (osConfig.theme.scheme) palette;
|
hotkey-overlay.skip-at-startup = true;
|
||||||
in {
|
|
||||||
settings.layout.focus-ring.active.color = palette.base0E;
|
layout = {
|
||||||
}))
|
focus-ring = {
|
||||||
];
|
enable = true;
|
||||||
|
};
|
||||||
|
always-center-single-column = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# https://github.com/sodiboo/system/blob/2978f4d79c51a5bd7e38a9cd75e3ec9046aa7e75/niri.mod.nix#L418-L434
|
||||||
|
outputs = let
|
||||||
|
cfg = config.programs.niri.settings.outputs;
|
||||||
|
in {
|
||||||
|
"HDMI-A-1" = {
|
||||||
|
mode = {
|
||||||
|
width = 1920;
|
||||||
|
height = 1080;
|
||||||
|
refresh = 60.0;
|
||||||
|
};
|
||||||
|
position.x = -cfg."HDMI-A-1".mode.width;
|
||||||
|
position.y = 0;
|
||||||
|
};
|
||||||
|
"DP-1" = {
|
||||||
|
mode = {
|
||||||
|
width = 2560;
|
||||||
|
height = 1440;
|
||||||
|
refresh = 144.0;
|
||||||
|
};
|
||||||
|
position.x = 0;
|
||||||
|
position.y = 0;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
window-rules = [
|
||||||
|
{
|
||||||
|
draw-border-with-background = false;
|
||||||
|
geometry-corner-radius = let
|
||||||
|
r = 8.0;
|
||||||
|
in {
|
||||||
|
top-left = r;
|
||||||
|
top-right = r;
|
||||||
|
bottom-left = r;
|
||||||
|
bottom-right = r;
|
||||||
|
};
|
||||||
|
clip-to-geometry = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
matches = [
|
||||||
|
{app-id = "foot";}
|
||||||
|
];
|
||||||
|
default-column-width = {proportion = 0.5;};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
environment = {
|
||||||
|
"NIXOS_OZONE_WL" = "1";
|
||||||
|
"DISPLAY" = ":0";
|
||||||
|
"_JAVA_AWT_WM_NONREPARENTING" = "1"; # https://wiki.archlinux.org/title/Sway#Java_applications
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
# copied from https://github.com/linyinfeng/dotfiles/blob/c00fe3b1562ad947672863a43e455bc2f01a56b6/home-manager/profiles/niri/default.nix#L594-L611
|
# copied from https://github.com/linyinfeng/dotfiles/blob/c00fe3b1562ad947672863a43e455bc2f01a56b6/home-manager/profiles/niri/default.nix#L594-L611
|
||||||
systemd.user.services.xwayland-satellite = {
|
systemd.user.services.xwayland-satellite = {
|
||||||
|
|
|
@ -1,37 +0,0 @@
|
||||||
{
|
|
||||||
inputs,
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
imports = [
|
|
||||||
inputs.plasma-manager.homeManagerModules.plasma-manager
|
|
||||||
];
|
|
||||||
rograms.plasma = {
|
|
||||||
enable = true;
|
|
||||||
workspace = {
|
|
||||||
lookAndFeel = "org.kde.breezedark.desktop";
|
|
||||||
inherit (config.theme) wallpaper;
|
|
||||||
};
|
|
||||||
|
|
||||||
input = {
|
|
||||||
touchpads = [
|
|
||||||
{
|
|
||||||
enable = true;
|
|
||||||
naturalScroll = true;
|
|
||||||
vendorId = "093a";
|
|
||||||
productId = "0274";
|
|
||||||
name = "PIXA3854:00 093A:0274 Touchpad";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
keyboard = {
|
|
||||||
options = [
|
|
||||||
"compose:ralt"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
qalculate-qt
|
|
||||||
];
|
|
||||||
}
|
|
|
@ -1,64 +1,24 @@
|
||||||
{
|
{pkgs, ...}: {
|
||||||
pkgs,
|
|
||||||
osConfig,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (lib) mkMerge mkIf;
|
|
||||||
in {
|
|
||||||
# requires `security.pam.services.swaylock = { };` at the system level or else
|
# requires `security.pam.services.swaylock = { };` at the system level or else
|
||||||
# unlock will not work.
|
# unlock will not work.
|
||||||
programs.swaylock = {
|
programs.swaylock = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.swaylock-effects;
|
package = pkgs.swaylock-effects;
|
||||||
|
|
||||||
settings = mkMerge [
|
settings = {
|
||||||
{
|
clock = true;
|
||||||
clock = true;
|
timestr = "%H:%M";
|
||||||
timestr = "%H:%M";
|
|
||||||
|
|
||||||
indicator = true;
|
indicator = true;
|
||||||
indicator-radius = 111;
|
indicator-radius = 111;
|
||||||
indicator-thickness = 9;
|
indicator-thickness = 9;
|
||||||
|
|
||||||
screenshots = true;
|
screenshots = true;
|
||||||
effect-blur = "7x5";
|
effect-blur = "7x5";
|
||||||
effect-vignette = "0.75:0.75";
|
effect-vignette = "0.75:0.75";
|
||||||
effect-pixelate = 5;
|
effect-pixelate = 5;
|
||||||
|
|
||||||
ignore-empty-password = false; # needed for PAM to work with fprintd / password
|
ignore-empty-password = false; # needed for PAM to work with fprintd / password
|
||||||
}
|
};
|
||||||
(mkIf
|
|
||||||
osConfig.theme.enable
|
|
||||||
(let
|
|
||||||
inherit (osConfig.theme.scheme) palette;
|
|
||||||
in {
|
|
||||||
inside-color = palette.base01;
|
|
||||||
inside-clear-color = palette.base0C;
|
|
||||||
inside-caps-lock-color = palette.base09;
|
|
||||||
inside-ver-color = palette.base0D;
|
|
||||||
inside-wrong-color = palette.base08;
|
|
||||||
key-hl-color = palette.base0B;
|
|
||||||
layout-bg-color = palette.base00;
|
|
||||||
layout-border-color = palette.base05;
|
|
||||||
layout-text-color = palette.base07;
|
|
||||||
line-color = palette.base00;
|
|
||||||
line-clear-color = palette.base0C;
|
|
||||||
line-caps-lock-color = palette.base09;
|
|
||||||
line-ver-color = palette.base0D;
|
|
||||||
line-wrong-color = palette.base08;
|
|
||||||
ring-color = palette.base02;
|
|
||||||
ring-clear-color = palette.base0C;
|
|
||||||
ring-caps-lock-color = palette.base09;
|
|
||||||
ring-ver-color = palette.base0D;
|
|
||||||
ring-wrong-color = palette.base08;
|
|
||||||
separator-color = palette.base02;
|
|
||||||
text-color = palette.base07;
|
|
||||||
text-clear-color = palette.base04;
|
|
||||||
text-caps-lock-color = palette.base04;
|
|
||||||
text-ver-color = palette.base04;
|
|
||||||
text-wrong-color = palette.base04;
|
|
||||||
}))
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,22 +1,17 @@
|
||||||
{
|
{
|
||||||
pkgs,
|
pkgs,
|
||||||
lib,
|
lib,
|
||||||
lib',
|
|
||||||
osConfig,
|
osConfig,
|
||||||
config,
|
config,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
inherit (lib) getExe mkMerge mkIf optionalString;
|
inherit (lib) getExe mkMerge mkIf;
|
||||||
inherit (lib') generateGtkColors;
|
|
||||||
inherit (osConfig.theme.scheme) palette;
|
|
||||||
inherit (builtins) readFile;
|
inherit (builtins) readFile;
|
||||||
in {
|
in {
|
||||||
programs.waybar = {
|
programs.waybar = {
|
||||||
enable = true;
|
enable = true;
|
||||||
systemd.enable = true;
|
systemd.enable = true;
|
||||||
style =
|
style = readFile ./style.css;
|
||||||
optionalString osConfig.theme.enable generateGtkColors lib palette
|
|
||||||
+ readFile ./style.css;
|
|
||||||
settings = {
|
settings = {
|
||||||
mainBar = mkMerge [
|
mainBar = mkMerge [
|
||||||
{
|
{
|
||||||
|
|
|
@ -5,15 +5,11 @@
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
inherit (lib) optionalString;
|
inherit (lib) optionalString;
|
||||||
inherit (lib') generateGtkColors;
|
|
||||||
inherit (osConfig.theme.scheme) palette;
|
|
||||||
inherit (builtins) readFile;
|
inherit (builtins) readFile;
|
||||||
in {
|
in {
|
||||||
services.swaync = {
|
services.swaync = {
|
||||||
enable = true;
|
enable = true;
|
||||||
style =
|
style = readFile ./style.css;
|
||||||
optionalString osConfig.theme.enable generateGtkColors lib palette
|
|
||||||
+ readFile ./style.css;
|
|
||||||
settings = {
|
settings = {
|
||||||
positionX = "right";
|
positionX = "right";
|
||||||
positionY = "top";
|
positionY = "top";
|
||||||
|
|
|
@ -4,7 +4,6 @@
|
||||||
lib,
|
lib,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
inherit (lib) mkIf;
|
|
||||||
in {
|
in {
|
||||||
programs.foot = {
|
programs.foot = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
@ -14,33 +13,6 @@ in {
|
||||||
font = "monospace:size=14";
|
font = "monospace:size=14";
|
||||||
shell = "${lib.getExe config.programs.fish.package}";
|
shell = "${lib.getExe config.programs.fish.package}";
|
||||||
};
|
};
|
||||||
colors = mkIf osConfig.theme.enable (let
|
|
||||||
inherit (lib) mapAttrs;
|
|
||||||
inherit (lib.strings) removePrefix;
|
|
||||||
# because someone thought this was a great idea: https://github.com/tinted-theming/schemes/commit/61058a8d2e2bd4482b53d57a68feb56cdb991f0b
|
|
||||||
palette = mapAttrs (_: color: removePrefix "#" color) osConfig.theme.scheme.palette;
|
|
||||||
in {
|
|
||||||
background = palette.base00;
|
|
||||||
foreground = palette.base05;
|
|
||||||
|
|
||||||
regular0 = palette.base01;
|
|
||||||
regular1 = palette.base08;
|
|
||||||
regular2 = palette.base0B;
|
|
||||||
regular3 = palette.base0A;
|
|
||||||
regular4 = palette.base0D;
|
|
||||||
regular5 = palette.base0E;
|
|
||||||
regular6 = palette.base0C;
|
|
||||||
regular7 = palette.base06;
|
|
||||||
|
|
||||||
bright0 = palette.base02;
|
|
||||||
bright1 = palette.base08;
|
|
||||||
bright2 = palette.base0B;
|
|
||||||
bright3 = palette.base0A;
|
|
||||||
bright4 = palette.base0D;
|
|
||||||
bright5 = palette.base0E;
|
|
||||||
bright6 = palette.base0C;
|
|
||||||
bright7 = palette.base07;
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,8 +1,4 @@
|
||||||
{
|
_: {
|
||||||
config,
|
|
||||||
inputs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
programs.gnome-terminal = {
|
programs.gnome-terminal = {
|
||||||
enable = true;
|
enable = true;
|
||||||
showMenubar = true;
|
showMenubar = true;
|
||||||
|
@ -14,14 +10,6 @@
|
||||||
boldIsBright = true;
|
boldIsBright = true;
|
||||||
visibleName = "default";
|
visibleName = "default";
|
||||||
font = "Intel One Mono 14";
|
font = "Intel One Mono 14";
|
||||||
colors = let
|
|
||||||
inherit (inputs.basix.schemeData.base16.${config.theme.scheme}) palette;
|
|
||||||
in {
|
|
||||||
backgroundColor = "#${palette.base00}";
|
|
||||||
foregroundColor = builtins.trace "#${palette.base05}" "#${palette.base05}";
|
|
||||||
|
|
||||||
palette = builtins.attrValues (builtins.mapAttrs (_: color: "#${color}") palette);
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,37 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
inputs,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
programs.konsole = let
|
|
||||||
inherit (config.theme) scheme;
|
|
||||||
schemeData = inputs.basix.schemeData.base16.${scheme};
|
|
||||||
in {
|
|
||||||
enable = true;
|
|
||||||
defaultProfile = "default";
|
|
||||||
profiles = {
|
|
||||||
default = {
|
|
||||||
font = {
|
|
||||||
name = "monospace";
|
|
||||||
size = 14;
|
|
||||||
};
|
|
||||||
colorScheme = schemeData.name;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
extraConfig = {
|
|
||||||
"MainWindow" = {
|
|
||||||
"MenuBar" = "Disabled";
|
|
||||||
"ToolBarsMovable" = "Disabled";
|
|
||||||
};
|
|
||||||
"KonsoleWindow" = {
|
|
||||||
"ShowMenuBarByDefault" = "false";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
customColorSchemes = {
|
|
||||||
"${schemeData.name}" = pkgs.lib.mkKonsoleColorScheme schemeData;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -2,11 +2,13 @@
|
||||||
inputs,
|
inputs,
|
||||||
config,
|
config,
|
||||||
lib,
|
lib,
|
||||||
|
lib',
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
inherit (lib) mkEnableOption mkOption mkIf attrNames;
|
inherit (lib) mkEnableOption mkOption mkIf attrNames;
|
||||||
inherit (lib.types) path package enum;
|
inherit (lib.types) path package enum;
|
||||||
|
inherit (lib') generateGtkColors;
|
||||||
cfg = config.theme;
|
cfg = config.theme;
|
||||||
in {
|
in {
|
||||||
imports = [./gtk.nix];
|
imports = [./gtk.nix];
|
||||||
|
@ -21,14 +23,6 @@ in {
|
||||||
default = "catppuccin-macchiato";
|
default = "catppuccin-macchiato";
|
||||||
};
|
};
|
||||||
|
|
||||||
scheme = mkOption {
|
|
||||||
description = ''
|
|
||||||
Resolved scheme from the tinted-theming library.
|
|
||||||
'';
|
|
||||||
readOnly = true;
|
|
||||||
type = lib.types.attrs;
|
|
||||||
};
|
|
||||||
|
|
||||||
wallpaper = mkOption {
|
wallpaper = mkOption {
|
||||||
description = ''
|
description = ''
|
||||||
Location of the wallpaper that will be used throughout the system.
|
Location of the wallpaper that will be used throughout the system.
|
||||||
|
@ -63,7 +57,154 @@ in {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
config.theme = mkIf cfg.enable {
|
config = let
|
||||||
scheme = inputs.basix.schemeData.base16.${config.theme.schemeName};
|
scheme = inputs.basix.schemeData.base16.${config.theme.schemeName};
|
||||||
};
|
in
|
||||||
|
mkIf cfg.enable
|
||||||
|
{
|
||||||
|
home-manager.users.nezia = {
|
||||||
|
home.pointerCursor = {
|
||||||
|
inherit (config.theme.cursorTheme) name package size;
|
||||||
|
};
|
||||||
|
|
||||||
|
gtk = {
|
||||||
|
iconTheme = {
|
||||||
|
inherit (config.theme.gtk.iconTheme) name package;
|
||||||
|
};
|
||||||
|
|
||||||
|
theme = lib.mkIf (!config.services.xserver.desktopManager.gnome.enable) {
|
||||||
|
inherit (config.theme.gtk.theme) name package;
|
||||||
|
};
|
||||||
|
|
||||||
|
gtk3.extraConfig = {
|
||||||
|
gtk-application-prefer-dark-theme = scheme.variant == "dark";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.swaync.style =
|
||||||
|
generateGtkColors lib scheme.palette;
|
||||||
|
|
||||||
|
programs = {
|
||||||
|
niri = {
|
||||||
|
settings.layout.focus-ring.active.color = scheme.palette.base0E;
|
||||||
|
};
|
||||||
|
|
||||||
|
foot.settings.colors = let
|
||||||
|
inherit (lib.strings) removePrefix;
|
||||||
|
# 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.base01;
|
||||||
|
regular1 = palette.base08;
|
||||||
|
regular2 = palette.base0B;
|
||||||
|
regular3 = palette.base0A;
|
||||||
|
regular4 = palette.base0D;
|
||||||
|
regular5 = palette.base0E;
|
||||||
|
regular6 = palette.base0C;
|
||||||
|
regular7 = palette.base06;
|
||||||
|
|
||||||
|
bright0 = palette.base02;
|
||||||
|
bright1 = palette.base08;
|
||||||
|
bright2 = palette.base0B;
|
||||||
|
bright3 = palette.base0A;
|
||||||
|
bright4 = palette.base0D;
|
||||||
|
bright5 = palette.base0E;
|
||||||
|
bright6 = palette.base0C;
|
||||||
|
bright7 = palette.base07;
|
||||||
|
};
|
||||||
|
|
||||||
|
waybar.style =
|
||||||
|
generateGtkColors lib scheme.palette;
|
||||||
|
fuzzel.settings.colors = {
|
||||||
|
background = "${scheme.palette.base00}ff";
|
||||||
|
text = "${scheme.palette.base05}ff";
|
||||||
|
input = "${scheme.palette.base05}ff";
|
||||||
|
selection = "${scheme.palette.base02}ff";
|
||||||
|
selection-text = "${scheme.palette.base07}ff";
|
||||||
|
selection-match = "${scheme.palette.base0D}ff";
|
||||||
|
border = "${scheme.palette.base0E}ff";
|
||||||
|
};
|
||||||
|
|
||||||
|
swaylock.settings = {
|
||||||
|
inside-color = scheme.palette.base01;
|
||||||
|
inside-clear-color = scheme.palette.base0C;
|
||||||
|
inside-caps-lock-color = scheme.palette.base09;
|
||||||
|
inside-ver-color = scheme.palette.base0D;
|
||||||
|
inside-wrong-color = scheme.palette.base08;
|
||||||
|
key-hl-color = scheme.palette.base0B;
|
||||||
|
layout-bg-color = scheme.palette.base00;
|
||||||
|
layout-border-color = scheme.palette.base05;
|
||||||
|
layout-text-color = scheme.palette.base07;
|
||||||
|
line-color = scheme.palette.base00;
|
||||||
|
line-clear-color = scheme.palette.base0C;
|
||||||
|
line-caps-lock-color = scheme.palette.base09;
|
||||||
|
line-ver-color = scheme.palette.base0D;
|
||||||
|
line-wrong-color = scheme.palette.base08;
|
||||||
|
ring-color = scheme.palette.base02;
|
||||||
|
ring-clear-color = scheme.palette.base0C;
|
||||||
|
ring-caps-lock-color = scheme.palette.base09;
|
||||||
|
ring-ver-color = scheme.palette.base0D;
|
||||||
|
ring-wrong-color = scheme.palette.base08;
|
||||||
|
separator-color = scheme.palette.base02;
|
||||||
|
text-color = scheme.palette.base07;
|
||||||
|
text-clear-color = scheme.palette.base04;
|
||||||
|
text-caps-lock-color = scheme.palette.base04;
|
||||||
|
text-ver-color = scheme.palette.base04;
|
||||||
|
text-wrong-color = scheme.palette.base04;
|
||||||
|
};
|
||||||
|
|
||||||
|
zathura.options = {
|
||||||
|
default-fg = scheme.palette.base05;
|
||||||
|
default-bg = scheme.palette.base00;
|
||||||
|
|
||||||
|
completion-bg = scheme.palette.base02;
|
||||||
|
completion-fg = scheme.palette.base05;
|
||||||
|
completion-highlight-bg = scheme.palette.base03;
|
||||||
|
completion-highlight-fg = scheme.palette.base05;
|
||||||
|
completion-group-bg = scheme.palette.base02;
|
||||||
|
completion-group-fg = scheme.palette.base0D;
|
||||||
|
|
||||||
|
statusbar-fg = scheme.palette.base05;
|
||||||
|
statusbar-bg = scheme.palette.base02;
|
||||||
|
|
||||||
|
notification-bg = scheme.palette.base02;
|
||||||
|
notification-fg = scheme.palette.base05;
|
||||||
|
notification-error-bg = scheme.palette.base02;
|
||||||
|
notification-error-fg = scheme.palette.base08;
|
||||||
|
notification-warning-bg = scheme.palette.base02;
|
||||||
|
notification-warning-fg = scheme.palette.base0A;
|
||||||
|
|
||||||
|
inputbar-fg = scheme.palette.base05;
|
||||||
|
inputbar-bg = scheme.palette.base02;
|
||||||
|
|
||||||
|
recolor = true;
|
||||||
|
recolor-lightcolor = scheme.palette.base00;
|
||||||
|
recolor-darkcolor = scheme.palette.base05;
|
||||||
|
|
||||||
|
index-fg = scheme.palette.base05;
|
||||||
|
index-bg = scheme.palette.base00;
|
||||||
|
index-active-fg = scheme.palette.base05;
|
||||||
|
index-active-bg = scheme.palette.base02;
|
||||||
|
|
||||||
|
render-loading-bg = scheme.palette.base00;
|
||||||
|
render-loading-fg = scheme.palette.base05;
|
||||||
|
|
||||||
|
highlight-color = lib'.rgba lib scheme.palette.base03 ".5";
|
||||||
|
highlight-fg = lib'.rgba lib scheme.palette.base0E ".5";
|
||||||
|
highlight-active-color = lib'.rgba lib scheme.palette.base0E ".5";
|
||||||
|
};
|
||||||
|
|
||||||
|
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);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue