Files
nixos/home-manager/development/helix.nix

117 lines
3.0 KiB
Nix

{ lib, config, pkgs, ... }:
with lib;
{
options.helix = {
fullInstall = mkOption {
type = lib.types.nullOr lib.types.bool;
default = false;
};
};
config = {
programs = {
helix = mkMerge [{
enable = true;
defaultEditor = true;
settings = {
theme = "dracula";
};
extraPackages = with pkgs;[ gcc ];
}
(mkIf config.helix.fullInstall {
extraPackages = with pkgs;[
#nix
nixd
nixpkgs-fmt
#dotnet
omnisharp-roslyn
netcoredbg
# rust
rustfmt
clippy
rust-analyzer
lldb
#python
ruff
# shell
shfmt
bash-language-server
fish-lsp
# misc
hyprls
marksman
# web
superhtml
biome
] ++ (with nodePackages;[
vscode-langservers-extracted
typescript-language-server
]);
languages = {
language = [
{
name = "bash";
formatter = { command = "shfmt"; };
}
{
name = "javascript";
language-servers = [
{ name = "biome"; }
{
name = "typescript-language-server";
except-features = [ "format" ];
}
];
auto-format = true;
formatter = { command = "biome"; args = [ "format" "--stdin-file-path" "a.js" ]; };
}
{
name = "typescript";
language-servers = [
{ name = "biome"; }
{
name = "typescript-language-server";
except-features = [ "format" ];
}
];
auto-format = true;
formatter = { command = "biome"; args = [ "format" "--stdin-file-path" "a.ts" ]; };
}
{
name = "jsx";
language-servers = [
{ name = "biome"; }
{
name = "typescript-language-server";
except-features = [ "format" ];
}
];
auto-format = true;
formatter = { command = "biome"; args = [ "format" "--stdin-file-path" "a.jsx" ]; };
}
{
name = "tsx";
language-servers = [
{ name = "biome"; }
{
name = "typescript-language-server";
except-features = [ "format" ];
}
];
auto-format = true;
formatter = { command = "biome"; args = [ "format" "--stdin-file-path" "a.tsx" ]; };
}
];
};
})];
};
};
}