Modularized helix

This commit is contained in:
Timo Boomers 2025-05-09 12:18:16 +02:00
parent 42cab14829
commit 5c78d0c1f5
Signed by: xeovalyte
SSH Key Fingerprint: SHA256:GWI1hq+MNKR2UOcvk7n9tekASXT8vyazK7vDF9Xyciw
2 changed files with 88 additions and 58 deletions

View File

@ -18,7 +18,15 @@
applications.devenv.enable = true; applications.devenv.enable = true;
applications.firefox.enable = true; applications.firefox.enable = true;
applications.git.enable = true; applications.git.enable = true;
applications.helix.enable = true; applications.helix = {
enable = true;
markdown = true;
rust = true;
systemverilog = true;
nix = true;
latex = true;
vue = true;
};
applications.zsh.enable = true; applications.zsh.enable = true;
applications.ssh.enable = true; applications.ssh.enable = true;
applications.thunderbird.enable = true; applications.thunderbird.enable = true;
@ -51,6 +59,7 @@
unstable.prusa-slicer unstable.prusa-slicer
unstable.surfer # waveform viewer unstable.surfer # waveform viewer
pomodoro-gtk
# Office # Office
libreoffice libreoffice

View File

@ -12,37 +12,68 @@ in {
Enable helix text editor Enable helix text editor
''; '';
}; };
settings.applications.helix.markdown = lib.mkOption {
type = lib.types.bool;
default = false;
description = ''
Enable markdown language support
'';
};
settings.applications.helix.systemverilog = lib.mkOption {
type = lib.types.bool;
default = false;
description = ''
Enable systemverilog language support
'';
};
settings.applications.helix.nix = lib.mkOption {
type = lib.types.bool;
default = true;
description = ''
Enable nix language support
'';
};
settings.applications.helix.latex = lib.mkOption {
type = lib.types.bool;
default = true;
description = ''
Enable latex language support
'';
};
settings.applications.helix.vue = lib.mkOption {
type = lib.types.bool;
default = true;
description = ''
Enable vue/nuxt language support
'';
};
settings.applications.helix.rust = lib.mkOption {
type = lib.types.bool;
default = false;
description = ''
Enable rust language support
'';
};
}; };
config = mkIf cfg.enable { config = mkIf cfg.enable {
home.packages = with pkgs; [ home.packages = with pkgs; lib.concatLists [
# Markdown (lib.optionals cfg.markdown [ unstable.marksman unstable.markdown-oxide dprint ])
unstable.marksman (lib.optionals cfg.systemverilog [ unstable.svls ])
unstable.markdown-oxide (lib.optionals cfg.nix [ unstable.nix unstable.nixpkgs-fmt ])
dprint (lib.optionals cfg.latex [ tectonic unstable.texlab ])
(lib.optionals cfg.vue [ unstable.vue-language-server unstable.typescript unstable.typescript-language-server ])
# 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 # Markdown
home.file.".config/.dprint.json".text ='' home.file.".config/.dprint.json" = lib.mkIf cfg.markdown {
text = ''
{ {
"markdown": { "markdown": {
"lineWidth":120, "lineWidth":120,
@ -53,6 +84,7 @@ in {
] ]
} }
''; '';
};
programs.helix = { programs.helix = {
enable = true; enable = true;
@ -65,24 +97,19 @@ in {
}; };
languages = { languages = {
# Rust # Rust
language-server.rust-analyzer.config = { language-server.rust-analyzer.config = lib.mkIf cfg.rust {
cargo = { cargo = {
features = "all"; features = "all";
}; };
}; };
# Systemverilog # Systemverilog
language-server.svls = { language-server.svls = lib.mkIf cfg.systemverilog {
command = "svls"; command = "svls";
}; };
# Systemverilog
language-server.asm = {
command = "asm-lsp";
};
# Latex # Latex
language-server.texlab = { language-server.texlab = lib.mkIf cfg.latex {
config = { config = {
texlab.chktex = { texlab.chktex = {
onOpenAndSave = true; onOpenAndSave = true;
@ -116,7 +143,7 @@ in {
}; };
}; };
language-server.typescript-language-server.config = { language-server.typescript-language-server.config = lib.mkIf cfg.vue {
# tsserver = { # tsserver = {
# path = "${pkgs.unstable.typescript}/bin/tsserver"; # path = "${pkgs.unstable.typescript}/bin/tsserver";
# }; # };
@ -148,18 +175,12 @@ in {
# }; # };
# }; # };
language = [ language = lib.concatLists [
{ (lib.optionals cfg.systemverilog [{
name = "verilog"; name = "verilog";
language-servers = [ "svls" ]; language-servers = [ "svls" ];
} }])
{ (lib.optionals cfg.markdown [{
name = "asm";
scope = "source.s";
language-servers = [ "asm" ];
file-types = [ "s" "S" ];
}
{
name = "markdown"; name = "markdown";
auto-format = true; auto-format = true;
language-servers = [ "markdown-oxide" ]; language-servers = [ "markdown-oxide" ];
@ -170,11 +191,11 @@ in {
name = "typst"; name = "typst";
auto-format = false; auto-format = false;
formatter.command = "${pkgs.typstfmt}/bin/typstfmt"; formatter.command = "${pkgs.typstfmt}/bin/typstfmt";
} }])
{ (lib.optionals cfg.vue [{
name = "vue"; name = "vue";
language-servers = ["vuels" "typescript-language-server"]; language-servers = ["vuels" "typescript-language-server"];
} }])
]; ];
}; };
}; };