{...}: {
  programs.helix = {
    enable = true;
    settings = {
      theme = "gruvbox-light";
      editor = {
        line-number = "relative";
        cursorline = true;
        color-modes = true;

        cursor-shape = {
          insert = "bar";
          normal = "block";
          select = "underline";
        };

        rulers = [80];

        statusline = {
          right = [
            "diagnostics"
            "selections"
            "position"
            "file-encoding"
            "file-line-ending"
            "file-type"
          ];
        };
        lsp = {
          display-messages = true;
        };
        indent-guides = {
          render = true;
        };
      };
    };
    themes = {
      gruvbox-light = {
        "attribute" = "aqua1";
        "keyword" = {fg = "red1";};
        "keyword.directive" = "red0";
        "namespace" = "aqua1";
        "punctuation" = "orange1";
        "punctuation.delimiter" = "orange1";
        "operator" = "purple1";
        "special" = "purple0";
        "variable.other.member" = "blue1";
        "variable" = "fg1";
        "variable.builtin" = "orange1";
        "variable.parameter" = "fg2";
        "type" = "yellow1";
        "type.builtin" = "yellow1";
        "constructor" = {
          fg = "purple1";
          modifiers = ["bold"];
        };
        "function" = {
          fg = "green1";
          modifiers = ["bold"];
        };
        "function.macro" = "aqua1";
        "function.builtin" = "yellow1";
        "tag" = "red1";
        "comment" = {
          fg = "gray1";
          modifiers = ["italic"];
        };
        "constant" = {fg = "purple1";};
        "constant.builtin" = {
          fg = "purple1";
          modifiers = ["bold"];
        };
        "string" = "green1";
        "constant.numeric" = "purple1";
        "constant.character.escape" = {
          fg = "fg2";
          modifiers = ["bold"];
        };
        "label" = "aqua1";
        "module" = "aqua1";

        "diff.plus" = "green1";
        "diff.delta" = "orange1";
        "diff.minus" = "red1";

        "warning" = {
          fg = "orange1";
          bg = "bg1";
        };
        "error" = {
          fg = "red1";
          bg = "bg1";
        };
        "info" = {
          fg = "aqua1";
          bg = "bg1";
        };
        "hint" = {
          fg = "blue1";
          bg = "bg1";
        };

        "ui.background" = {bg = "bg0";};
        "ui.linenr" = {fg = "bg4";};
        "ui.linenr.selected" = {fg = "yellow1";};
        "ui.cursorline" = {bg = "bg1";};
        "ui.statusline" = {
          fg = "fg1";
          bg = "bg2";
        };
        "ui.statusline.normal" = {
          fg = "fg1";
          bg = "bg2";
        };
        "ui.statusline.insert" = {
          fg = "fg1";
          bg = "blue0";
        };
        "ui.statusline.select" = {
          fg = "fg1";
          bg = "orange0";
        };
        "ui.statusline.inactive" = {
          fg = "fg4";
          bg = "bg1";
        };
        "ui.popup" = {bg = "bg1";};
        "ui.window" = {bg = "bg1";};
        "ui.help" = {
          bg = "bg1";
          fg = "fg1";
        };
        "ui.text" = {fg = "fg1";};
        "ui.text.focus" = {fg = "fg1";};
        "ui.selection" = {
          bg = "bg3";
          modifiers = ["reversed"];
        };
        "ui.cursor.primary" = {modifiers = ["reversed"];};
        "ui.cursor.match" = {bg = "bg2";};
        "ui.menu" = {
          fg = "fg1";
          bg = "bg2";
        };
        "ui.menu.selected" = {
          fg = "bg2";
          bg = "blue1";
          modifiers = ["bold"];
        };
        "ui.virtual.whitespace" = "bg2";
        "ui.virtual.ruler" = {bg = "bg1";};

        "diagnostic" = {modifiers = ["underlined"];};

        "markup.heading" = "aqua1";
        "markup.bold" = {modifiers = ["bold"];};
        "markup.italic" = {modifiers = ["italic"];};
        "markup.link.url" = {
          fg = "green1";
          modifiers = ["underlined"];
        };
        "markup.link.text" = "red1";
        "markup.raw" = "red1";

        palette = {
          bg0 = "#fbf1c7"; # main background
          bg1 = "#ebdbb2";
          bg2 = "#d5c4a1";
          bg3 = "#bdae93";
          bg4 = "#a89984";

          fg0 = "#282828"; # main foreground
          fg1 = "#3c3836";
          fg2 = "#504945";
          fg3 = "#665c54";
          fg4 = "#7c6f64"; # gray0

          gray0 = "#7c6f64";
          gray1 = "#928374";

          red0 = "#cc241d"; # neutral
          red1 = "#9d0006"; # bright
          green0 = "#98971a";
          green1 = "#79740e";
          yellow0 = "#d79921";
          yellow1 = "#b57614";
          blue0 = "#458588";
          blue1 = "#076678";
          purple0 = "#b16286";
          purple1 = "#8f3f71";
          aqua0 = "#689d6a";
          aqua1 = "#427b58";
          orange0 = "#d65d0e";
          orange1 = "#af3a03";
        };
      };
    };
  };
}
