219 lines
7.2 KiB
Nix
219 lines
7.2 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
|
||
|
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; };
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
}
|