{ pkgs, ... }: { programs.helix = { enable = true; # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # languages Configuration # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ languages = { language = [ { name = "nix"; auto-format = true; language-servers = [ "nixd" "nil" ]; formatter = { command = "${pkgs.nixpkgs-fmt}/bin/nixpkgs-fmt"; # command = "${pkgs.nixfmt-rfc-style}/bin/nixfmt"; # command = "${pkgs.alejandra}/bin/alejandra"; }; } { name = "bash"; auto-format = true; language-servers = [ "bash-language-server" ]; formatter = { command = "${pkgs.shfmt}/bin/shfmt"; args = [ "-i" "2" "-ci" ]; }; } { name = "python"; auto-format = true; language-servers = [ "pyright" ]; formatter = { command = "${pkgs.black}/bin/black"; args = [ "--quiet" "-" ]; }; } { name = "rust"; auto-format = false; file-types = [ "rs" ]; language-servers = [ "rust-analyzer" ]; formatter = { command = "${pkgs.rustfmt}/bin/rustfmt"; }; } { name = "zig"; auto-format = true; language-servers = [ "zsl" ]; formatter = { command = "${pkgs.zig}/bin/zig"; }; } { name = "html"; auto-format = true; language-servers = [ "vscode-langservers-extracted" ]; } { name = "javascript"; auto-format = true; language-servers = [ "typescript-language-server" ]; } ]; # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # Language Server Protocol Configuration # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ language-servers = { nil = { command = "${pkgs.nixd}/bin/nixd"; }; rust-analyzer = { config = { check = { command = "${pkgs.clippy}/bin/cargo-clippy"; }; # cargo.features = "all"; checkOnSave.command = "${pkgs.clippy}/bin/cargo-clippy"; completion.autoimport.enable = true; }; }; typescript-language-server = { command = "${pkgs.nodePackages_latest.typescript-language-server}/bin/typescript-language-server"; args = [ "--stdio" ]; }; }; }; # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # Needed Packages # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ extraPackages = with pkgs; [ # DEBUG lldb_18 # lldb-vscode : # c # cpp # = < NIX > = # = Language Server Protocol = nil nixd # = DAP = # = Formatter = # nixfmt nixfmt-rfc-style # alejandra # = < Bash > = # = Language Server Protocol = nodePackages.bash-language-server # = DAP = # = Formatter = shfmt # = < Python > = # = Language Server Protocol = pyright # = DAP = # = Formatter = black # = < Rust > = # = Language Server Protocol = rust-analyzer # = DAP = lldb # = Formatter = # rust-fmt clippy # Good place ? # = < lua > = # = Language Server Protocol = lua-language-server # = DAP = # = Formatter = # = < Zig > = # = Language Server Protocol = zls # = DAP = # lldb (commented because already called) # = Formatter = zig # = < HTML > = # = Language Server Protocol = # vscode-html-language-server vscode-langservers-extracted # = DAP = # = Formatter = # = < CSS > = # = Language Server Protocol = nodePackages_latest.typescript-language-server # = DAP = # = Formatter = # = Language Server Protocol = docker-compose-language-service dockerfile-language-server-nodejs yaml-language-server ansible-language-server ]; }; }