From 2f4d044f705d2b668f9801492338a281af3a6a1c Mon Sep 17 00:00:00 2001
From: notohh <github@notohh.dev>
Date: Fri, 31 May 2024 11:26:07 -0400
Subject: [PATCH] helix: update && add custom onedark

---
 home/programs/editors/helix/default.nix       |  10 +-
 .../programs/editors/helix/themes/onedark.nix | 216 ++++++++++++++++++
 .../editors/helix/themes/tokyonight.nix       |  12 +-
 3 files changed, 228 insertions(+), 10 deletions(-)
 create mode 100644 home/programs/editors/helix/themes/onedark.nix

diff --git a/home/programs/editors/helix/default.nix b/home/programs/editors/helix/default.nix
index 772c5f6..ebab682 100644
--- a/home/programs/editors/helix/default.nix
+++ b/home/programs/editors/helix/default.nix
@@ -2,13 +2,15 @@ _: {
   imports = [
     ./languages.nix
     ./themes/tokyonight.nix
+    ./themes/onedark.nix
+    ./themes/catppuccin_mocha.nix
   ];
 
   programs.helix = {
     enable = true;
     defaultEditor = true;
     settings = {
-      theme = "tokyonight";
+      theme = "onedark";
       editor = {
         auto-save = true;
         true-color = true;
@@ -24,9 +26,9 @@ _: {
           right = ["diagnostics" "selections" "position" "file-line-ending" "file-type" "version-control"];
           separator = "|";
           mode = {
-            normal = "NORMAL";
-            insert = "INSERT";
-            select = "SELECT";
+            normal = "NOR";
+            insert = "INS";
+            select = "SEL";
           };
         };
         cursor-shape = {
diff --git a/home/programs/editors/helix/themes/onedark.nix b/home/programs/editors/helix/themes/onedark.nix
new file mode 100644
index 0000000..3828c90
--- /dev/null
+++ b/home/programs/editors/helix/themes/onedark.nix
@@ -0,0 +1,216 @@
+_: {
+  programs.helix = {
+    themes.onedark = let
+      yellow = "#E5C07B";
+      blue = "#61AFEF";
+      red = "#E06C75";
+      purple = "#C678DD";
+      green = "#98C379";
+      gold = "#D19A66";
+      cyan = "#56B6C2";
+      white = "#c0caf5";
+      black = "#1a1b26";
+      light-black = "#2C323C";
+      gray = "#3E4452";
+      faint-gray = "#3B4048";
+      light-gray = "#5C6370";
+      linenr = "#4B5263";
+    in {
+      "tag" = {fg = red;};
+      "attribute" = {fg = yellow;};
+      "comment" = {
+        fg = light-gray;
+        modifiers = ["italic"];
+      };
+      "constant" = {fg = cyan;};
+      "constant.numeric" = {fg = gold;};
+      "constant.builtin" = {fg = gold;};
+      "constant.character.escape" = {fg = gold;};
+      "constructor" = {fg = cyan;};
+      "function" = {
+        fg = blue;
+        modifiers = ["italic"];
+      };
+      "function.builtin" = {fg = blue;};
+      "function.macro" = {fg = purple;};
+      "keyword" = {
+        fg = red;
+        modifiers = ["italic"];
+      };
+      "keyword.control" = {fg = purple;};
+      "keyword.control.import" = {
+        fg = red;
+        modifiers = ["italic"];
+      };
+      "keyword.directive" = {fg = purple;};
+      "label" = {fg = purple;};
+      "namespace" = {fg = blue;};
+      "operator" = {fg = purple;};
+      "keyword.operator" = {fg = purple;};
+      "special" = {fg = blue;};
+      "string" = {fg = green;};
+      "type" = {fg = yellow;};
+      "variable" = {fg = yellow;};
+      "variable.builtin" = {fg = blue;};
+      "variable.parameter" = {
+        fg = red;
+        modifiers = ["italic"];
+      };
+      "variable.other.member" = {fg = red;};
+
+      "markup.heading" = {fg = red;};
+      "markup.raw.inline" = {fg = green;};
+      "markup.bold" = {
+        fg = gold;
+        modifiers = ["bold"];
+      };
+      "markup.italic" = {
+        fg = purple;
+        modifiers = ["italic"];
+      };
+      "markup.strikethrough" = {modifiers = ["crossed_out"];};
+      "markup.list" = {fg = red;};
+      "markup.quote" = {fg = yellow;};
+      "markup.link.url" = {
+        fg = cyan;
+        modifiers = ["underlined"];
+      };
+      "markup.link.text" = {fg = purple;};
+
+      "diff.plus" = green;
+      "diff.delta" = gold;
+      "diff.minus" = red;
+
+      "diagnostic.info".underline = {
+        color = blue;
+        style = "curl";
+      };
+      "diagnostic.hint".underline = {
+        color = green;
+        style = "curl";
+      };
+      "diagnostic.warning".underline = {
+        color = yellow;
+        style = "curl";
+      };
+      "diagnostic.error".underline = {
+        color = red;
+        style = "curl";
+      };
+      "diagnostic.unnecessary" = {modifiers = ["dim"];};
+      "diagnostic.deprecated" = {modifiers = ["crossed_out"];};
+      "info" = {
+        fg = blue;
+        modifiers = ["bold"];
+      };
+      "hint" = {
+        fg = green;
+        modifiers = ["bold"];
+      };
+      "warning" = {
+        fg = yellow;
+        modifiers = ["bold"];
+      };
+      "error" = {
+        fg = red;
+        modifiers = ["bold"];
+      };
+
+      # "ui.background" = {bg = black;};
+      "ui.virtual" = {fg = faint-gray;};
+      "ui.virtual.indent-guide" = {fg = faint-gray;};
+      "ui.virtual.whitespace" = {fg = light-gray;};
+      "ui.virtual.ruler" = {bg = gray;};
+      "ui.virtual.inlay-hint" = {fg = light-gray;};
+      "ui.virtual.jump-label" = {
+        fg = light-gray;
+        modifiers = ["bold"];
+      };
+
+      "ui.cursor" = {
+        fg = white;
+        modifiers = ["reversed"];
+      };
+      "ui.cursor.primary" = {
+        fg = white;
+        modifiers = ["reversed"];
+      };
+      "ui.cursor.match" = {
+        fg = blue;
+        modifiers = ["underlined"];
+      };
+
+      "ui.selection" = {bg = faint-gray;};
+      "ui.selection.primary" = {bg = gray;};
+      # "ui.cursorline.primary" = {bg = light-black;};
+
+      "ui.highlight" = {bg = gray;};
+      "ui.highlight.frameline" = {bg = "#97202a";};
+
+      "ui.linenr" = {fg = linenr;};
+      "ui.linenr.selected" = {fg = white;};
+
+      "ui.statusline" = {fg = white;};
+      "ui.statusline.inactive" = {
+        fg = light-gray;
+      };
+      "ui.statusline.normal" = {
+        fg = light-black;
+        bg = blue;
+        modifiers = ["bold"];
+      };
+      "ui.statusline.insert" = {
+        fg = light-black;
+        bg = green;
+        modifiers = ["bold"];
+      };
+      "ui.statusline.select" = {
+        fg = light-black;
+        bg = purple;
+        modifiers = ["bold"];
+      };
+
+      "ui.bufferline" = {
+        fg = light-gray;
+        bg = light-black;
+      };
+      "ui.bufferline.active" = {
+        fg = light-black;
+        bg = blue;
+        underline = {
+          color = light-black;
+          style = "line";
+        };
+      };
+      # "ui.bufferline.background" = {bg = light-black;};
+
+      "ui.text" = {fg = white;};
+      "ui.text.focus" = {
+        fg = white;
+        #    bg = light-black;
+        modifiers = ["bold"];
+      };
+
+      "ui.help" = {
+        fg = white;
+        # bg = gray;
+      };
+      # "ui.popup" = {bg = gray;};
+      # "ui.window" = {fg = gray;};
+      "ui.menu" = {
+        fg = white;
+        # bg = gray;
+      };
+      "ui.menu.selected" = {
+        fg = black;
+        bg = blue;
+      };
+      "ui.menu.scroll" = {
+        fg = white;
+        bg = light-gray;
+      };
+
+      "ui.debug" = {fg = red;};
+    };
+  };
+}
diff --git a/home/programs/editors/helix/themes/tokyonight.nix b/home/programs/editors/helix/themes/tokyonight.nix
index 6377971..4c3ee23 100644
--- a/home/programs/editors/helix/themes/tokyonight.nix
+++ b/home/programs/editors/helix/themes/tokyonight.nix
@@ -61,7 +61,7 @@ _: {
       "diff.delta" = {fg = orange;};
       "diff.minus" = {fg = red;};
 
-      "ui.background" = {fg = foreground;};
+      # "ui.background" = {fg = foreground;};
 
       "ui.cursor" = {modifiers = ["reversed"];};
       "ui.cursor.match" = {
@@ -69,27 +69,27 @@ _: {
         modifiers = ["bold"];
       };
       "ui.cursor.primary" = {modifiers = ["reversed"];};
-      "ui.cursorline.primary" = {bg = background_menu;};
+      # "ui.cursorline.primary" = {bg = background_menu;};
       "ui.help" = {
         fg = foreground;
-        bg = background_menu;
+        # bg = background_menu;
       };
       "ui.linenr" = {fg = foreground_gutter;};
       "ui.linenr.selected" = {fg = foreground;};
       "ui.menu" = {
         fg = foreground;
-        bg = background_menu;
+        # bg = background_menu;
       };
       "ui.menu.selected" = {bg = background_highlight;};
       "ui.popup" = {
         fg = foreground;
-        bg = background_menu;
+        # bg = background_menu;
       };
       "ui.selection" = {bg = background_highlight;};
       "ui.selection.primary" = {bg = background_highlight;};
       "ui.statusline" = {
         fg = foreground;
-        bg = background_menu;
+        #  bg = background_menu;
       };
       "ui.statusline.inactive" = {
         fg = foreground_gutter;