183 lines
4.4 KiB
Nix
183 lines
4.4 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; [
|
|
# Markdown
|
|
unstable.marksman
|
|
unstable.markdown-oxide
|
|
dprint
|
|
|
|
# Systemverilog
|
|
unstable.svls
|
|
|
|
# Assembly
|
|
unstable.asm-lsp
|
|
|
|
# Nixos
|
|
unstable.nil
|
|
unstable.nixpkgs-fmt
|
|
|
|
# Latex
|
|
tectonic
|
|
unstable.texlab
|
|
|
|
# Vue/Nuxt
|
|
unstable.vue-language-server
|
|
unstable.typescript
|
|
unstable.typescript-language-server
|
|
];
|
|
|
|
# Markdown
|
|
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";
|
|
};
|
|
};
|
|
|
|
# Systemverilog
|
|
language-server.svls = {
|
|
command = "svls";
|
|
};
|
|
|
|
# Systemverilog
|
|
language-server.asm = {
|
|
command = "asm-lsp";
|
|
};
|
|
|
|
# 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-server.typescript-language-server.config = {
|
|
# tsserver = {
|
|
# path = "${pkgs.unstable.typescript}/bin/tsserver";
|
|
# };
|
|
plugins = [
|
|
{
|
|
name = "@vue/typescript-plugin";
|
|
location = "${pkgs.unstable.vue-language-server}/bin/vue-language-server}";
|
|
languages = ["vue"];
|
|
}
|
|
];
|
|
|
|
vue.inlayHints = {
|
|
includeInlayEnumMemberValueHints = true;
|
|
includeInlayFunctionLikeReturnTypeHints = true;
|
|
includeInlayFunctionParameterTypeHints = true;
|
|
includeInlayParameterNameHints = "all";
|
|
includeInlayParameterNameHintsWhenArgumentMatchesName = true;
|
|
includeInlayPropertyDeclarationTypeHints = true;
|
|
includeInlayVariableTypeHints = true;
|
|
};
|
|
};
|
|
# language-server.vue-language-server = {
|
|
# command = "${pkgs.vue-language-server}/bin/vue-language-server";
|
|
# args = [ "--stdio" ];
|
|
# config = {
|
|
# typescript = {
|
|
# tsdk = "${pkgs.typescript}/bin/";
|
|
# };
|
|
# };
|
|
# };
|
|
|
|
language = [
|
|
{
|
|
name = "verilog";
|
|
language-servers = [ "svls" ];
|
|
}
|
|
{
|
|
name = "asm";
|
|
scope = "source.s";
|
|
language-servers = [ "asm" ];
|
|
file-types = [ "s" "S" ];
|
|
}
|
|
{
|
|
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";
|
|
}
|
|
{
|
|
name = "vue";
|
|
language-servers = ["vuels" "typescript-language-server"];
|
|
}
|
|
];
|
|
};
|
|
};
|
|
};
|
|
}
|