nix/modules/home/applications/helix.nix

218 lines
7.3 KiB
Nix

{ 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
unstable.vue-language-server
unstable.typescript
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 = {
editor.cursor-shape = {
insert = "bar";
};
};
languages = {
# Rust
language-server.rust-analyzer.config = {
cargo = {
features = "all";
};
};
language-server.vuels = {
config.typescript.tsdk = "${pkgs.typescript}/lib/node_modules/typescript/lib/";
};
# Systemverilog
language-server.svls = {
command = "svls";
};
# Latex
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 = "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; };
# };
# };
};
};
}