Files
copnix/modules/home/theme/home-theme-helix.ulu.nix
2026-09-03 14:17:58 +03:00

339 lines
8.1 KiB
Nix

{ ... }:
{
flake.homeModules.home-theme-helix =
{ config, ... }:
let
p = config.elars.theme.palette.withHashtag;
in
{
programs.helix.themes.kemuri-copnix = {
palette = {
bg = p.base00;
bgAlt = p.base01;
bgSoft = p.base02;
select = p.base02;
selectPrimary = p.base03;
gutter = p.base03;
gray = p.base04;
fg = p.base05;
fgSoft = p.base06;
fgBright = p.base07;
red = p.base08;
orange = p.base09;
yellow = p.base0A;
green = p.base0B;
cyan = p.base0C;
blue = p.base0D;
magenta = p.base0E;
brown = p.base0F;
};
# ui
"ui.background" = {
fg = "fg";
bg = "bg";
};
"ui.text" = "fg";
"ui.text.focus" = {
fg = "fgBright";
modifiers = [ "bold" ];
};
"ui.window" = "gutter";
"ui.cursor" = {
fg = "bg";
bg = "fgSoft";
};
"ui.cursor.primary" = {
fg = "bg";
bg = "fgBright";
};
"ui.cursor.match" = {
fg = "orange";
modifiers = [ "bold" ];
};
"ui.gutter" = {
bg = "bg";
};
"ui.linenr" = {
fg = "gutter";
bg = "bg";
};
"ui.linenr.selected" = {
fg = "orange";
bg = "bg";
modifiers = [ "bold" ];
};
"ui.cursorline.primary" = {
bg = "bgAlt";
};
"ui.cursorline.secondary" = {
bg = "bgAlt";
};
"ui.selection" = {
bg = "select";
};
"ui.selection.primary" = {
bg = "selectPrimary";
};
"ui.statusline" = {
fg = "fg";
bg = "bgSoft";
};
"ui.statusline.inactive" = {
fg = "gray";
bg = "bgAlt";
};
"ui.statusline.normal" = {
fg = "bg";
bg = "blue";
modifiers = [ "bold" ];
};
"ui.statusline.insert" = {
fg = "bg";
bg = "green";
modifiers = [ "bold" ];
};
"ui.statusline.select" = {
fg = "bg";
bg = "magenta";
modifiers = [ "bold" ];
};
"ui.bufferline" = {
fg = "gray";
bg = "bgAlt";
};
"ui.bufferline.active" = {
fg = "fg";
bg = "bgSoft";
modifiers = [ "bold" ];
};
"ui.bufferline.background" = {
bg = "bg";
};
"ui.popup" = {
fg = "fg";
bg = "bgSoft";
};
"ui.popup.info" = {
fg = "fg";
bg = "bgAlt";
};
"ui.menu" = {
fg = "fg";
bg = "bgSoft";
};
"ui.menu.selected" = {
fg = "bg";
bg = "fgSoft";
modifiers = [ "bold" ];
};
"ui.help" = {
fg = "fg";
bg = "bgSoft";
};
"ui.virtual.indent-guide" = "gutter";
"ui.virtual.ruler" = {
bg = "bgAlt";
};
"ui.virtual.whitespace" = "gutter";
"ui.virtual.inlay-hint" = "gray";
# syntax
"comment" = {
fg = "gray";
modifiers = [ "italic" ];
};
"variable" = "fg";
"variable.parameter" = "fgSoft";
"variable.builtin" = "red";
"variable.other.member" = "cyan";
"constant" = "orange";
"constant.numeric" = "orange";
"constant.character.escape" = "magenta";
"string" = "green";
"string.regexp" = "cyan";
"type" = "yellow";
"type.builtin" = "yellow";
"constructor" = "blue";
"function" = "blue";
"function.builtin" = "blue";
"function.macro" = "magenta";
"keyword" = {
fg = "magenta";
};
"keyword.control" = "magenta";
"keyword.directive" = "brown";
"operator" = "fgSoft";
"punctuation" = "gray";
"punctuation.bracket" = "fgSoft";
"label" = "magenta";
"namespace" = "cyan";
"attribute" = "brown";
"tag" = "blue";
"markup.heading" = {
fg = "orange";
modifiers = [ "bold" ];
};
"markup.bold" = {
modifiers = [ "bold" ];
};
"markup.italic" = {
modifiers = [ "italic" ];
};
"markup.link.url" = {
fg = "cyan";
modifiers = [ "underlined" ];
};
"markup.link.text" = "blue";
"markup.raw" = "green";
"markup.heading.marker" = "brown";
"markup.list" = "magenta";
"markup.quote" = {
fg = "fgSoft";
modifiers = [ "italic" ];
};
"markup.link" = "blue";
"markup.link.label" = "cyan";
"markup.raw.inline" = {
fg = "green";
bg = "bgAlt";
};
"markup.raw.block" = "green";
"markup.strikethrough" = {
modifiers = [ "crossed_out" ];
};
# diagnostics & diff
"diagnostic.error" = {
underline = {
color = "red";
style = "curl";
};
};
"diagnostic.warning" = {
underline = {
color = "yellow";
style = "curl";
};
};
"diagnostic.info" = {
underline = {
color = "blue";
style = "curl";
};
};
"diagnostic.hint" = {
underline = {
color = "cyan";
style = "curl";
};
};
"error" = "red";
"warning" = "yellow";
"info" = "blue";
"hint" = "cyan";
"diagnostic.unnecessary" = {
modifiers = [ "dim" ];
};
"diagnostic.deprecated" = {
modifiers = [ "crossed_out" ];
};
"diff.plus" = "green";
"diff.minus" = "red";
"diff.delta" = "blue";
"diff.plus.gutter" = "green";
"diff.minus.gutter" = "red";
"diff.delta.gutter" = "blue";
# ui — pickers, popups, jump labels
"ui.highlight" = {
bg = "bgSoft";
modifiers = [ "bold" ];
};
"ui.highlight.frameline" = {
bg = "selectPrimary";
};
"ui.menu.scroll" = {
fg = "gray";
bg = "bgAlt";
};
"ui.text.inactive" = "gray";
"ui.text.info" = "fgSoft";
"ui.text.directory" = "blue";
"ui.background.separator" = "gutter";
"ui.gutter.selected" = {
bg = "bgAlt";
};
"ui.cursorline" = {
bg = "bgAlt";
};
"ui.cursorcolumn.primary" = {
bg = "bgAlt";
};
"ui.picker.header" = {
fg = "gray";
modifiers = [ "bold" ];
};
"ui.picker.header.column" = "gray";
"ui.picker.header.column.active" = {
fg = "orange";
modifiers = [ "bold" ];
};
"ui.virtual" = "gutter";
# `gw`/`gW` labels were rendering in the underlying token colour.
"ui.virtual.jump-label" = {
fg = "bg";
bg = "orange";
modifiers = [ "bold" ];
};
"ui.virtual.wrap" = "gutter";
"ui.virtual.inlay-hint.type" = "gray";
"ui.virtual.inlay-hint.parameter" = "gray";
# mode-aware cursors, to match `color-modes`
"ui.cursor.normal" = {
fg = "bg";
bg = "fgSoft";
};
"ui.cursor.insert" = {
fg = "bg";
bg = "green";
};
"ui.cursor.select" = {
fg = "bg";
bg = "magenta";
};
"ui.cursor.primary.normal" = {
fg = "bg";
bg = "fgBright";
};
"ui.cursor.primary.insert" = {
fg = "bg";
bg = "green";
};
"ui.cursor.primary.select" = {
fg = "bg";
bg = "magenta";
};
# dap
"ui.debug" = "orange";
"ui.debug.breakpoint" = "red";
"ui.debug.active" = "yellow";
"special" = "brown";
};
};
}