helix: steal fuf's conftig to try it

This commit is contained in:
Charlie Root 2024-09-01 22:10:02 +02:00
commit e5e7e34ef2
3 changed files with 154 additions and 9 deletions

View file

@ -49,6 +49,7 @@
treefmt-nix.url = "github:numtide/treefmt-nix";
helix.url = "github:helix-editor/helix";
neovim-flake = {
url = "github:notashelf/nvf";
inputs.nixpkgs.follows = "nixpkgs";

View file

@ -0,0 +1,151 @@
{
config,
inputs',
lib,
pkgs,
...
}: let
cfg = config.modules.system.programs.editors.helix;
inherit (config.modules.other.system) username;
inherit (lib) mkIf getExe makeBinPath;
in {
config = mkIf cfg.enable {
home-manager.users.${username} = {
programs.helix.languages = {
language = let
extraFormatter = lang: {
command = getExe pkgs.deno;
args = ["fmt" "-" "--ext" lang];
};
in [
{
name = "bash";
auto-format = true;
formatter = {
command = getExe pkgs.shfmt;
args = ["-i" "2"];
};
}
{
name = "clojure";
injection-regex = "(clojure|clj|edn|boot|yuck)";
file-types = ["clj" "cljs" "cljc" "clje" "cljr" "cljx" "edn" "boot" "yuck"];
}
{
name = "cmake";
auto-format = true;
language-servers = ["cmake-language-server"];
formatter = {
command = getExe pkgs.cmake-format;
args = ["-"];
};
}
{
name = "javascript";
auto-format = true;
language-servers = ["dprint" "typescript-language-server"];
}
{
name = "json";
formatter = extraFormatter "json";
}
{
name = "markdown";
auto-format = true;
formatter = extraFormatter "md";
}
{
name = "python";
language-servers = ["pyright"];
formatter = {
command = getExe pkgs.black;
args = ["-" "--quiet" "--line-length 100"];
};
}
{
name = "typescript";
auto-format = true;
language-servers = ["dprint" "typescript-language-server"];
}
];
language-server = {
bash-language-server = {
command = getExe pkgs.bash-language-server;
args = ["start"];
};
clangd = {
command = "${pkgs.clang-tools}/bin/clangd";
clangd.fallbackFlags = ["-std=c++2b"];
};
cmake-language-server = {
command = getExe pkgs.cmake-language-server;
};
dprint = {
command = getExe pkgs.dprint;
args = ["lsp"];
};
nil = {
command = getExe pkgs.nil;
config.nil.formatting.command = ["${getExe pkgs.alejandra}" "-q"];
};
pyright = {
command = "${pkgs.pyright}/bin/pyright-langserver";
args = ["--stdio"];
config = {
reportMissingTypeStubs = false;
analysis = {
typeCheckingMode = "basic";
autoImportCompletions = true;
};
};
};
# typescript-language-server = {
# command = getExe pkgs.nodePackages.typescript-language-server;
# args = ["--stdio"];
# config = let
# inlayHints = {
# includeInlayEnumMemberValueHints = true;
# includeInlayFunctionLikeReturnTypeHints = true;
# includeInlayFunctionParameterTypeHints = true;
# includeInlayParameterNameHints = "all";
# includeInlayParameterNameHintsWhenArgumentMatchesName = true;
# includeInlayPropertyDeclarationTypeHints = true;
# includeInlayVariableTypeHints = true;
# };
# in {
# typescript-language-server.source = {
# addMissingImports.ts = true;
# fixAll.ts = true;
# organizeImports.ts = true;
# removeUnusedImports.ts = true;
# sortImports.ts = true;
# };
#
# typescript = {inherit inlayHints;};
# javascript = {inherit inlayHints;};
#
# hostInfo = "helix";
# };
# };
# vscode-css-language-server = {
# command = "${pkgs.nodePackages.vscode-langservers-extracted}/bin/vscode-css-languageserver";
# args = ["--stdio"];
# config = {
# provideFormatter = true;
# css.validate.enable = true;
# scss.validate.enable = true;
# };
# };
};
};
};
};
}

View file

@ -9,12 +9,13 @@
inherit (config.modules.other.system) username;
inherit (lib) mkIf getExe makeBinPath;
in {
imports = [./languages.nix];
config = mkIf cfg.enable {
home-manager.users.${username} = {
programs.helix = {
enable = true;
# thanks fufexan, this is great!
package = inputs'.helix.packages.default.helix.overrideAttrs (previousAttrs: {
package = inputs'.helix.packages.default.overrideAttrs (previousAttrs: {
makeWrapperArgs = with pkgs;
previousAttrs.makeWrapperArgs
or []
@ -60,14 +61,6 @@ in {
A-f = ":format";
};
};
languages = {
language-server = {
nil = {
command = getExe pkgs.nil;
config.nil.formatting.command = ["${getExe pkgs.alejandra}" "-q"];
};
};
};
};
};
};