{
  programs.helix = {
    enable = true;
    settings = {
      theme = "my";
      editor = {
        mouse = false;
        trim-trailing-whitespace = true;
        end-of-line-diagnostics = "hint";
        cursor-shape = {
          insert = "bar";
          normal = "block";
          select = "underline";
        };
        indent-guides.enable = true;
        inline-diagnostics.cursor-line = "hint";
        gutters = [ "diagnostics" "spacer" ];
        statusline.right = [ "diagnostics" "register" "position" ];
      };
      keys = let
        common = {
          g.o = "jump_backward";
          g.O = "jump_forward";
          # toggle gh and gs
          g.h = "goto_first_nonwhitespace";
          g.s = "goto_line_start";
        };
      in {
        normal = common // {
          "C-z" = [ ":write-all" "suspend" ];
        };
        select = common // { };
      };
    };

    themes.my = let
        green = "#07d101";
        blue = "#00bfff";
        cream = "#edf0e0";
        pink = "#f584c6";
        red = "#f85624";
        dustypink = "#d8916e";
        navy = "#0047ab";
        gray = "#c0c0c0";
        greenyellow = "#adff2f";
        electriclime = "#ccff00";
        darkgreen = "#228b22";
        lightpink = "#ffb7c5";
        gold = "#ffd700";
        white = "#ffffff";
        none = "none";
    in rec {
      inherits = "nvim-dark";
      "ui.background" = none;
      type = { fg = blue; modifiers = [ "bold" ]; };
      "type.builtin" = type;
      "type.enum.variant" = { fg = pink; };
      constructor = type;
      constant = pink;
      "constant.builtin" = blue;
      "constant.character" = lightpink;
      "constant.character.escape" = pink;
      "constant.numeric" = gold;
      string = lightpink;
      "string.regexp" = pink;
      "string.special" = { fg = pink; underline.style = "line"; };
      comment = gray;
      variable = electriclime;
      "variable.parameter" = { fg = variable; modifiers = [ "italic" ]; };
      "variable.builtin" = blue;
      "variable.other.member" = { fg = greenyellow; modifiers = [ "bold" ]; };
      label = { fg = green; modifiers = [ "bold" ]; };
      punctuation = cream;
      keyword = { fg = white; modifiers = [ "bold" ]; };
      operator = cream;
      function = gold;
      "function.builtin" = blue;
      namespace = blue;
      special = keyword;
      error = red;
      "markup.header" = variable;
      "markup.header.marker" = keyword;
      "markup.list" = { fg = variable; modifiers = [ "bold" ]; };
      "markup.link.url" = pink;
      "markup.link.text" = variable;
      "markup.link.label" = label;
    };
  };
}