nixos/home/gui/catppuccin/home.nix

136 lines
4.4 KiB
Nix

{ pkgs
, lib
, config
, ... }: with lib; let
cfg = config.passthrough.catppuccin;
palette = (import ./palette.nix).${cfg.palette};
in mkIf cfg.enable {
# cursor theme
home.pointerCursor = { inherit (cfg.cursor) package name; };
gtk.cursorTheme = { inherit (cfg.cursor) package name; };
# gtk theme
gtk.theme = { inherit (cfg.gtk) package name; };
gtk.iconTheme = {
package = pkgs.catppuccin-papirus-folders.override {
flavor = cfg.palette;
accent = "pink";
};
name = "Papirus-Dark";
};
# sway colour palette override
wayland.windowManager.sway.config = {
colors = with palette; {
focused = { border = lavender; background = base; text = text; indicator = rosewater; childBorder = lavender; };
focusedInactive = { border = overlay0; background = base; text = text; indicator = rosewater; childBorder = overlay0; };
unfocused = { border = overlay0; background = base; text = text; indicator = rosewater; childBorder = overlay0; };
urgent = { border = peach; background = base; text = peach; indicator = overlay0; childBorder = peach; };
placeholder = { border = overlay0; background = base; text = text; indicator = overlay0; childBorder = overlay0; };
background = base;
};
bars = mkForce [ {
colors = let
p = palette;
in {
background = p.base;
statusline = p.text;
focusedStatusline = p.text;
focusedSeparator = p.base;
focusedWorkspace = { border = p.base; background = p.base; text = p.green; };
activeWorkspace = { border = p.base; background = p.base; text = p.blue; };
inactiveWorkspace = { border = p.base; background = p.base; text = p.surface1; };
urgentWorkspace = { border = p.base; background = p.base; text = p.surface1; };
bindingMode = { border = p.base; background = p.base; text = p.surface1; };
};
mode = "dock";
position = "bottom";
workspaceButtons = true;
workspaceNumbers = true;
statusCommand = "${pkgs.i3status}/bin/i3status";
fonts = {
names = [ "monospace" ];
size = 8.0;
};
trayOutput = "primary";
} ];
output."*".bg = mkForce "${./flake.png} fill";
gaps.inner = 12;
gaps.outer = 5;
# dodge the status bar
gaps.bottom = 0;
};
# swaylock colour palette override
programs.swaylock.settings = with palette; let
transparent = "00000000";
in {
color = base;
bs-hl-color = rosewater;
caps-lock-bs-hl-color = rosewater;
caps-lock-key-hl-color = green;
inside-color = transparent;
inside-clear-color = transparent;
inside-caps-lock-color = transparent;
inside-ver-color = transparent;
inside-wrong-color = transparent;
key-hl-color = green;
layout-bg-color = transparent;
layout-border-color = transparent;
layout-text-color = text;
line-color = transparent;
line-clear-color = transparent;
line-caps-lock-color = transparent;
line-ver-color = transparent;
line-wrong-color = transparent;
ring-color = lavender;
ring-clear-color = rosewater;
ring-caps-lock-color = peach;
ring-ver-color = blue;
ring-wrong-color = maroon;
separator-color = transparent;
text-color = text;
text-clear-color = rosewater;
text-caps-lock-color = peach;
text-ver-color = blue;
text-wrong-color = maroon;
};
# i3status colour palette override
programs.i3status.general = with palette; {
color_good = lavender;
color_degraded = yellow;
color_bad = red;
};
# mako colour palette override
services.mako = with palette; {
backgroundColor = base;
textColor = text;
borderColor = blue;
progressColor = "over ${surface0}";
extraConfig = ''
[urgency=high]
border-color=${peach}
'';
};
# foot colour palette override
programs.foot.settings.colors = with palette; let
c = substring 1 7;
in {
foreground = c text; background = c base;
regular0 = c overlay2; regular1 = c red;
regular2 = c green; regular3 = c yellow;
regular4 = c blue; regular5 = c pink;
regular6 = c teal; regular7 = c surface2;
bright0 = c subtext0; bright1 = c red;
bright2 = c green; bright3 = c yellow;
bright4 = c blue; bright5 = c pink;
bright6 = c teal; bright7 = c surface1;
};
}