{ config, lib, pkgs, ... }: with lib; let cfg = config.settings.applications.helix; in { options = { settings.applications.helix.enable = lib.mkOption { type = lib.types.bool; description = '' Enable helix text editor ''; }; }; config = mkIf cfg.enable { home.packages = with pkgs; [ unstable.marksman unstable.markdown-oxide unstable.svls unstable.nil unstable.nixpkgs-fmt unstable.tectonic unstable.texlab dprint ]; home.file.".config/.dprint.json".text ='' { "markdown": { "lineWidth":120, }, "excludes": [], "plugins": [ "https://plugins.dprint.dev/markdown-0.16.1.wasm" ] } ''; programs.helix = { enable = true; package = pkgs.unstable.helix; defaultEditor = true; settings = { # theme = "base16"; editor.cursor-shape = { insert = "bar"; }; }; languages = { # Rust language-server.rust-analyzer.config = { cargo = { features = "all"; }; }; # Systemverilog language-server.svls = { command = "svls"; }; language-server.texlab = { config = { texlab.chktex = { onOpenAndSave = true; onEdit = true; }; texlab.forwardSearch = { executable = "zathura"; args = [ "--synctex-forward" "%l:%c:%f" "%p" ]; }; texlab.build = { auxDirectory = "build"; logDirectory = "build"; pdfDirectory = "build"; forwardSearchAfter = true; onSave = true; executable = "tectonic"; args = [ "-X" "compile" "--synctex" "--keep-logs" "--keep-intermediates" "--outdir=build" "%f" ]; }; }; }; language = [ { name = "verilog"; language-servers = [ "svls" ]; } { name = "html"; language-servers = [ "vscode-html-language-server" "tailwindcss-ls" ]; } { name = "css"; language-servers = [ "vscode-html-language-server" "tailwindcss-ls" ]; } { name = "markdown"; auto-format = true; language-servers = [ "markdown-oxide" ]; formatter.command = "dprint"; formatter.args = ["fmt" "--stdin" "md" "--config" "/home/xeovalyte/.config/.dprint.json"]; } { name = "typst"; auto-format = false; formatter.command = "${pkgs.typstfmt}/bin/typstfmt"; } ]; }; # themes = { # base16 = let # base00 = "#${config.colorScheme.palette.base00}"; # base01 = "#${config.colorScheme.palette.base01}"; # base02 = "#${config.colorScheme.palette.base02}"; # base03 = "#${config.colorScheme.palette.base03}"; # base04 = "#${config.colorScheme.palette.base04}"; # base05 = "#${config.colorScheme.palette.base05}"; # base06 = "#${config.colorScheme.palette.base06}"; # base07 = "#${config.colorScheme.palette.base07}"; # base08 = "#${config.colorScheme.palette.base08}"; # base09 = "#${config.colorScheme.palette.base09}"; # base0A = "#${config.colorScheme.palette.base0A}"; # base0B = "#${config.colorScheme.palette.base0B}"; # base0C = "#${config.colorScheme.palette.base0C}"; # base0D = "#${config.colorScheme.palette.base0D}"; # base0E = "#${config.colorScheme.palette.base0E}"; # base0F = "#${config.colorScheme.palette.base0F}"; # in { # "attributes" = base09; # "comment" = { fg = base03; modifiers = ["italic"]; }; # "constant" = base09; # "constant.character.escape" = base0C; # "constant.numeric" = base09; # "constructor" = base0D; # "debug" = base03; # "diagnostic" = { modifiers = ["underlined"]; }; # "diff.delta" = base09; # "diff.minus" = base08; # "diff.plus" = base0B; # "error" = base08; # "function" = base0D; # "hint" = base03; # "info" = base0D; # "keyword" = base0E; # "label" = base0E; # "namespace" = base0E; # "operator" = base05; # "special" = base0D; # "string" = base0B; # "type" = base0A; # "variable" = base08; # "variable.other.member" = base0B; # "warning" = base09; # "markup.bold" = { fg = base0A; modifiers = ["bold"]; }; # "markup.heading" = base0D; # "markup.italic" = { fg = base0E; modifiers = ["italic"]; }; # "markup.link.text" = base08; # "markup.link.url" = { fg = base09; modifiers = ["underlined"]; }; # "markup.list" = base08; # "markup.quote" = base0C; # "markup.raw" = base0B; # "markup.strikethrough" = { modifiers = ["crossed_out"]; }; # "diagnostic.hint" = { underline = { style = "curl"; }; }; # "diagnostic.info" = { underline = { style = "curl"; }; }; # "diagnostic.warning" = { underline = { style = "curl"; }; }; # "diagnostic.error" = { underline = { style = "curl"; }; }; # # "ui.background" = { bg = base00; }; # "ui.bufferline.active" = { fg = base00; bg = base03; modifiers = ["bold"]; }; # "ui.bufferline" = { fg = base04; bg = base00; }; # "ui.cursor" = { fg = base0A; modifiers = ["reversed"]; }; # "ui.cursor.insert" = { fg = base0A; modifiers = ["reversed"]; }; # "ui.cursorline.primary" = { fg = base05; bg = base01; }; # "ui.cursor.match" = { fg = base0A; modifiers = ["reversed"]; }; # "ui.cursor.select" = { fg = base0A; modifiers = ["reversed"]; }; # "ui.gutter" = { bg = base00; }; # "ui.help" = { fg = base06; bg = base01; }; # "ui.linenr" = { fg = base03; bg = base00; }; # "ui.linenr.selected" = { fg = base04; bg = base01; modifiers = ["bold"]; }; # "ui.menu" = { fg = base05; bg = base01; }; # "ui.menu.scroll" = { fg = base03; bg = base01; }; # "ui.menu.selected" = { fg = base01; bg = base04; }; # "ui.popup" = { bg = base01; }; # "ui.selection" = { bg = base02; }; # "ui.selection.primary" = { bg = base02; }; # "ui.statusline" = { fg = base04; bg = base01; }; # "ui.statusline.inactive" = { bg = base01; fg = base03; }; # "ui.statusline.insert" = { fg = base00; bg = base0B; }; # "ui.statusline.normal" = { fg = base00; bg = base03; }; # "ui.statusline.select" = { fg = base00; bg = base0F; }; # "ui.text" = base05; # "ui.text.focus" = base05; # "ui.virtual.indent-guide" = { fg = base03; }; # "ui.virtual.inlay-hint" = { fg = base01; }; # "ui.virtual.ruler" = { bg = base01; }; # "ui.window" = { bg = base01; }; # }; # }; }; }; }