helix: move to modules/home
Signed-off-by: Bloxx12 <charlie@charlieroot.dev> Change-Id: I6a6a6964949ee86c73c9dee2fc4a89c01a7a0579
This commit is contained in:
parent
917074fb32
commit
71505a4629
7 changed files with 494 additions and 572 deletions
|
@ -25,7 +25,6 @@
|
|||
inherit inputs pkgs sources;
|
||||
})
|
||||
fish
|
||||
helix
|
||||
kakoune
|
||||
nushell
|
||||
;
|
||||
|
|
|
@ -4,14 +4,11 @@
|
|||
# which should have a small attack surface.
|
||||
{
|
||||
lib,
|
||||
self,
|
||||
pkgs,
|
||||
sources,
|
||||
...
|
||||
}:
|
||||
let
|
||||
inherit (lib.meta) hiPrioSet;
|
||||
helix = pkgs.callPackage (self + "/packages/helix") { inherit sources; };
|
||||
in
|
||||
{
|
||||
environment.systemPackages =
|
||||
|
@ -46,9 +43,8 @@ in
|
|||
;
|
||||
}
|
||||
++ builtins.attrValues (hiPrioSet {
|
||||
inherit helix;
|
||||
inherit (pkgs) uutils-coreutils-noprefix;
|
||||
});
|
||||
})
|
||||
++ [ (lib.hiPrio pkgs.uutils-coreutils-noprefix) ];
|
||||
# helix as the only editor, a reasonable choice.
|
||||
environment.variables.EDITOR = "hx";
|
||||
}
|
||||
|
|
492
modules/home/dev/helix.hjem.nix
Normal file
492
modules/home/dev/helix.hjem.nix
Normal file
|
@ -0,0 +1,492 @@
|
|||
{
|
||||
lib,
|
||||
pkgs,
|
||||
sources,
|
||||
...
|
||||
}:
|
||||
let
|
||||
inherit (lib.attrsets) mapAttrs' nameValuePair;
|
||||
|
||||
helix = pkgs.helix.overrideAttrs (
|
||||
finalAttrs: previousAttrs: {
|
||||
version = "25.07.2";
|
||||
src = pkgs.fetchzip {
|
||||
url = "https://github.com/bloxx12/helix/releases/download/${finalAttrs.version}/helix-${finalAttrs.version}-source.tar.xz";
|
||||
hash = "sha256-ZNsQwFfPXe6oewajx1tl68W60kVo7q2SuvTgy/o1HKk=";
|
||||
stripRoot = false;
|
||||
};
|
||||
|
||||
doInstallCheck = false;
|
||||
|
||||
cargoDeps = pkgs.rustPlatform.fetchCargoVendor {
|
||||
inherit (helix) src;
|
||||
hash = "sha256-3poZSvIrkx8lguxxDeNfngW6+4hH8TV/LHcZx5W5aXg=";
|
||||
};
|
||||
}
|
||||
);
|
||||
|
||||
helix-with-plugins = pkgs.helix.overrideAttrs (
|
||||
finalAttrs: previousAttrs: {
|
||||
name = "helix-with-plugins";
|
||||
version = "25.07.2";
|
||||
src = pkgs.fetchzip {
|
||||
url = "https://github.com/bloxx12/helix/releases/download/${finalAttrs.version}/helix-${finalAttrs.version}-source.tar.xz";
|
||||
hash = "sha256-ZNsQwFfPXe6oewajx1tl68W60kVo7q2SuvTgy/o1HKk=";
|
||||
stripRoot = false;
|
||||
};
|
||||
|
||||
doInstallCheck = false;
|
||||
|
||||
cargoDeps = pkgs.rustPlatform.fetchCargoVendor {
|
||||
inherit (helix) src;
|
||||
hash = "sha256-3poZSvIrkx8lguxxDeNfngW6+4hH8TV/LHcZx5W5aXg=";
|
||||
};
|
||||
postInstall = ''
|
||||
mv $out/bin/hx $out/bin/hxp
|
||||
'';
|
||||
}
|
||||
);
|
||||
|
||||
toml = pkgs.formats.toml { };
|
||||
|
||||
languages =
|
||||
let
|
||||
inherit (lib.meta) getExe getExe';
|
||||
|
||||
nixfmt = pkgs.callPackage "${sources.nixfmt}/default.nix" { };
|
||||
|
||||
nil = pkgs.rustPlatform.buildRustPackage {
|
||||
pname = "nil";
|
||||
version = "unstable";
|
||||
src = sources.nil;
|
||||
cargoLock = {
|
||||
lockFile = "${sources.nil}/Cargo.lock";
|
||||
allowBuiltinFetchGit = false;
|
||||
};
|
||||
nativeBuildInputs = [ pkgs.nixVersions.latest ];
|
||||
|
||||
doInstallCheck = false;
|
||||
meta.mainProgram = "nil";
|
||||
};
|
||||
|
||||
new-deadnix = pkgs.deadnix.overrideAttrs (
|
||||
finalAttrs: previousAttrs: {
|
||||
version = "unstable-15-07-2025";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "astro";
|
||||
repo = "deadnix";
|
||||
rev = "d75457b95d7cfa82fcd60970939f76fccfce19e5";
|
||||
hash = "sha256-O/z2neAXL8JNkGosvxC+DyZnnJ8zYP9XHApxHVmlzfY=";
|
||||
};
|
||||
|
||||
doInstallCheck = false;
|
||||
|
||||
cargoDeps = pkgs.rustPlatform.fetchCargoVendor {
|
||||
inherit (new-deadnix) src;
|
||||
hash = "sha256-O8yhqyPflOvQXAA19k1XpbrHysgV5VNWLBX0l5Q5GkM=";
|
||||
};
|
||||
meta.mainProgram = "nil";
|
||||
}
|
||||
);
|
||||
in
|
||||
{
|
||||
language =
|
||||
let
|
||||
mark = 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 = mark "json";
|
||||
}
|
||||
{
|
||||
name = "markdown";
|
||||
auto-format = true;
|
||||
formatter = mark "md";
|
||||
language-servers = [ "taplo" ];
|
||||
}
|
||||
{
|
||||
name = "nix";
|
||||
language-servers = [ "nil" ];
|
||||
}
|
||||
{
|
||||
name = "qml";
|
||||
language-servers = [ "qmlls" ];
|
||||
}
|
||||
{
|
||||
name = "python";
|
||||
auto-format = true;
|
||||
language-servers = [
|
||||
"basedpyright"
|
||||
"ruff"
|
||||
];
|
||||
}
|
||||
{
|
||||
name = "typescript";
|
||||
auto-format = true;
|
||||
language-servers = [
|
||||
"dprint"
|
||||
"typescript-language-server"
|
||||
];
|
||||
}
|
||||
{
|
||||
name = "rust";
|
||||
}
|
||||
{
|
||||
name = "c";
|
||||
auto-format = true;
|
||||
language-servers = [ "clangd" ];
|
||||
}
|
||||
{
|
||||
name = "zig";
|
||||
auto-format = true;
|
||||
}
|
||||
{
|
||||
name = "c";
|
||||
}
|
||||
];
|
||||
|
||||
language-server = {
|
||||
bash-language-server = {
|
||||
command = getExe pkgs.bash-language-server;
|
||||
args = [ "start" ];
|
||||
};
|
||||
|
||||
rust-analyzer = {
|
||||
command = getExe pkgs.rust-analyzer;
|
||||
config.rust-analyzer = {
|
||||
checkOnSave.command = "clippy";
|
||||
procMacro.enable = true;
|
||||
cargo = {
|
||||
loadOutDirsFromCheck = true;
|
||||
features = "all";
|
||||
};
|
||||
assist = {
|
||||
preferSelf = true;
|
||||
};
|
||||
check = {
|
||||
command = "clippy";
|
||||
extraArgs = [
|
||||
"--"
|
||||
"-W"
|
||||
"clippy::pedantic"
|
||||
"-W"
|
||||
"clippy::nursery"
|
||||
"-W"
|
||||
"clippy::perf"
|
||||
];
|
||||
};
|
||||
lens = {
|
||||
references = true;
|
||||
methodReferences = true;
|
||||
};
|
||||
completion.autoimport.enable = true;
|
||||
experimental.procAttrMacros = true;
|
||||
interpret.tests = true;
|
||||
};
|
||||
};
|
||||
|
||||
clangd = {
|
||||
command = "${pkgs.clang-tools}/bin/clangd";
|
||||
clangd.fallbackFlags = [ "-std=c++2b" ];
|
||||
};
|
||||
|
||||
cmake-language-server = {
|
||||
command = getExe pkgs.cmake-language-server;
|
||||
};
|
||||
|
||||
deno-lsp = {
|
||||
command = getExe pkgs.deno;
|
||||
args = [ "lsp" ];
|
||||
environment.NO_COLOR = "1";
|
||||
config.deno = {
|
||||
enable = true;
|
||||
lint = true;
|
||||
unstable = true;
|
||||
suggest = {
|
||||
completeFunctionCalls = false;
|
||||
imports = {
|
||||
hosts."https://deno.land" = true;
|
||||
};
|
||||
};
|
||||
inlayHints = {
|
||||
enumMemberValues.enabled = true;
|
||||
functionLikeReturnTypes.enabled = true;
|
||||
parameterNames.enabled = "all";
|
||||
parameterTypes.enabled = true;
|
||||
propertyDeclarationTypes.enabled = true;
|
||||
variableTypes.enabled = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
dprint = {
|
||||
command = getExe pkgs.dprint;
|
||||
args = [ "lsp" ];
|
||||
};
|
||||
|
||||
nil = {
|
||||
command = getExe nil;
|
||||
config.nil = {
|
||||
formatting.command = [ "${getExe nixfmt}" ];
|
||||
diagnostics = {
|
||||
bindingEndHintMinLines = 3;
|
||||
};
|
||||
nix.flake = {
|
||||
autoArchive = true;
|
||||
# autoEvalInputs = true;
|
||||
nixpkgsInputName = "nixpkgs";
|
||||
};
|
||||
};
|
||||
};
|
||||
deadnix = {
|
||||
command = getExe new-deadnix;
|
||||
};
|
||||
|
||||
typescript-language-server = {
|
||||
command = getExe pkgs.typescript-language-server;
|
||||
args = [ "--stdio" ];
|
||||
config = {
|
||||
typescript-language-server.source = {
|
||||
addMissingImports.ts = true;
|
||||
fixAll.ts = true;
|
||||
organizeImports.ts = true;
|
||||
removeUnusedImports.ts = true;
|
||||
sortImports.ts = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
ruff = {
|
||||
command = getExe pkgs.ruff;
|
||||
args = [ "server" ];
|
||||
};
|
||||
|
||||
qmlls = {
|
||||
command = getExe' pkgs.kdePackages.qtdeclarative "qmlls";
|
||||
args = [ "-E" ];
|
||||
};
|
||||
basedpyright.command = "${pkgs.basedpyright}/bin/basedpyright-langserver";
|
||||
|
||||
vscode-css-language-server = {
|
||||
command = "${pkgs.vscode-langservers-extracted}/bin/vscode-css-language-server";
|
||||
args = [ "--stdio" ];
|
||||
config = {
|
||||
provideFormatter = true;
|
||||
css.validate.enable = true;
|
||||
scss.validate.enable = true;
|
||||
};
|
||||
};
|
||||
zls = {
|
||||
command = getExe pkgs.zls;
|
||||
config = {
|
||||
enable_build_on_save = true;
|
||||
build_on_save_args = [
|
||||
"check"
|
||||
"-fincremental"
|
||||
"--watch"
|
||||
];
|
||||
enable_autofix = false;
|
||||
warn_style = true;
|
||||
highlight_global_var_declarations = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
themes = {
|
||||
rose_pine_transparent = {
|
||||
inherits = "rose_pine";
|
||||
"ui.background" = { };
|
||||
};
|
||||
rose_pine_dawn_transparent = {
|
||||
inherits = "rose_pine_dawn";
|
||||
"ui.background" = { };
|
||||
};
|
||||
nightfox_transparent = {
|
||||
inherits = "nightfox";
|
||||
"ui.background" = { };
|
||||
};
|
||||
nord_transparent = {
|
||||
inherits = "nord";
|
||||
"ui.background" = { };
|
||||
};
|
||||
};
|
||||
|
||||
settings = {
|
||||
theme = "nord";
|
||||
editor = {
|
||||
cursorline = true;
|
||||
color-modes = true;
|
||||
true-color = true;
|
||||
indent-guides.render = true;
|
||||
lsp = {
|
||||
enable = true;
|
||||
auto-signature-help = true;
|
||||
display-inlay-hints = false;
|
||||
display-messages = true;
|
||||
snippets = true;
|
||||
};
|
||||
file-picker = {
|
||||
hidden = true;
|
||||
};
|
||||
line-number = "relative";
|
||||
auto-format = true;
|
||||
completion-timeout = 5;
|
||||
mouse = true;
|
||||
bufferline = "multiple";
|
||||
soft-wrap.enable = true;
|
||||
word-completion = {
|
||||
enable = true;
|
||||
trigger-length = 2;
|
||||
};
|
||||
cursor-shape = {
|
||||
insert = "bar";
|
||||
normal = "block";
|
||||
select = "underline";
|
||||
};
|
||||
statusline = {
|
||||
left = [
|
||||
"spinner"
|
||||
"version-control"
|
||||
"diagnostics"
|
||||
"file-name"
|
||||
];
|
||||
right = [
|
||||
"file-base-name"
|
||||
"file-type"
|
||||
"position"
|
||||
"file-encoding"
|
||||
];
|
||||
};
|
||||
gutters.layout = [
|
||||
"diff"
|
||||
"diagnostics"
|
||||
"line-numbers"
|
||||
"spacer"
|
||||
];
|
||||
inline-diagnostics = {
|
||||
cursor-line = "hint";
|
||||
other-lines = "error";
|
||||
};
|
||||
};
|
||||
keys = {
|
||||
normal = {
|
||||
space = {
|
||||
g = [
|
||||
":new"
|
||||
":buffer-close!"
|
||||
":redraw"
|
||||
];
|
||||
i = ":toggle lsp.display-inlay-hints";
|
||||
};
|
||||
esc = [
|
||||
"collapse_selection"
|
||||
"keep_primary_selection"
|
||||
"normal_mode"
|
||||
];
|
||||
A-H = "goto_previous_buffer";
|
||||
A-L = "goto_next_buffer";
|
||||
A-w = ":buffer-close";
|
||||
A-f = ":format";
|
||||
A-r = ":reload";
|
||||
A-x = "extend_to_line_bounds";
|
||||
X = [
|
||||
"extend_line_up"
|
||||
"extend_to_line_bounds"
|
||||
];
|
||||
";" = "flip_selections";
|
||||
"A-;" = "collapse_selection";
|
||||
|
||||
# Kakoune-like config
|
||||
H = "extend_char_left";
|
||||
J = "extend_line_down";
|
||||
K = "extend_line_up";
|
||||
L = "extend_char_right";
|
||||
};
|
||||
select = {
|
||||
A-x = "extend_to_line_bounds";
|
||||
X = [
|
||||
"extend_line_up"
|
||||
"extend_to_line_bounds"
|
||||
];
|
||||
g = {
|
||||
e = "goto_file_end";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
in
|
||||
{
|
||||
packages = builtins.attrValues {
|
||||
inherit helix;
|
||||
inherit (pkgs)
|
||||
tinymist
|
||||
taplo
|
||||
kdlfmt
|
||||
gopls
|
||||
;
|
||||
};
|
||||
|
||||
files = {
|
||||
".config/helix/config.toml".source = toml.generate "helix-config.toml" settings;
|
||||
".config/helix/languages.toml".source = toml.generate "helix-languages.toml" languages;
|
||||
|
||||
}
|
||||
// mapAttrs' (
|
||||
name: value:
|
||||
nameValuePair ".config/helix/themes/${name}.toml" {
|
||||
source = toml.generate "helix-theme-${name}.toml" value;
|
||||
}
|
||||
) themes;
|
||||
|
||||
}
|
|
@ -5,7 +5,6 @@
|
|||
}:
|
||||
let
|
||||
inherit (pkgs) lib;
|
||||
helix = pkgs.callPackage ./helix { };
|
||||
kakoune = pkgs.callPackage ./kakoune.nix { };
|
||||
fish = pkgs.callPackage ./fish { inherit lib; };
|
||||
nushell = pkgs.callPackage ./nushell { };
|
||||
|
@ -14,7 +13,6 @@ in
|
|||
inherit
|
||||
kakoune
|
||||
fish
|
||||
helix
|
||||
nushell
|
||||
;
|
||||
}
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
{
|
||||
inherits = "gruvbox_dark_hard";
|
||||
"ui.background" = { };
|
||||
}
|
|
@ -1,220 +0,0 @@
|
|||
{
|
||||
sources,
|
||||
basedpyright,
|
||||
bash-language-server,
|
||||
callPackage,
|
||||
clang-tools,
|
||||
clippy,
|
||||
cmake-format,
|
||||
cmake-language-server,
|
||||
deadnix,
|
||||
deno,
|
||||
dprint,
|
||||
fetchzip,
|
||||
formats,
|
||||
gdb,
|
||||
golangci-lint-langserver,
|
||||
gopls,
|
||||
helix,
|
||||
kdePackages,
|
||||
kdlfmt,
|
||||
lazygit,
|
||||
lib,
|
||||
lldb_19,
|
||||
makeWrapper,
|
||||
nixd,
|
||||
ruff,
|
||||
rust-analyzer,
|
||||
rustPlatform,
|
||||
rustfmt,
|
||||
shellcheck,
|
||||
shfmt,
|
||||
simple-completion-language-server,
|
||||
superhtml,
|
||||
symlinkJoin,
|
||||
taplo,
|
||||
tinymist,
|
||||
typescript-language-server,
|
||||
vscode-langservers-extracted,
|
||||
zls,
|
||||
...
|
||||
}:
|
||||
let
|
||||
inherit (lib.meta) getExe;
|
||||
|
||||
custom-helix = helix.overrideAttrs (
|
||||
finalAttrs: previousAttrs: {
|
||||
version = "25.07.2";
|
||||
src = fetchzip {
|
||||
url = "https://github.com/bloxx12/helix/releases/download/${finalAttrs.version}/helix-${finalAttrs.version}-source.tar.xz";
|
||||
hash = "sha256-ZNsQwFfPXe6oewajx1tl68W60kVo7q2SuvTgy/o1HKk=";
|
||||
stripRoot = false;
|
||||
};
|
||||
|
||||
doInstallCheck = false;
|
||||
|
||||
cargoDeps = rustPlatform.fetchCargoVendor {
|
||||
inherit (custom-helix) src;
|
||||
hash = "sha256-3poZSvIrkx8lguxxDeNfngW6+4hH8TV/LHcZx5W5aXg=";
|
||||
};
|
||||
}
|
||||
);
|
||||
|
||||
toml = formats.toml { };
|
||||
|
||||
helix-languages = callPackage ./languages.nix { inherit lib sources; };
|
||||
colorscheme = toml.generate "colorscheme.toml" (import ./colorscheme.nix);
|
||||
|
||||
helix-config = {
|
||||
theme = "theme_transparent";
|
||||
editor = {
|
||||
cursorline = false;
|
||||
color-modes = true;
|
||||
true-color = true;
|
||||
indent-guides.render = true;
|
||||
lsp = {
|
||||
enable = true;
|
||||
auto-signature-help = true;
|
||||
display-inlay-hints = false;
|
||||
display-messages = true;
|
||||
snippets = true;
|
||||
};
|
||||
file-picker = {
|
||||
hidden = true;
|
||||
};
|
||||
line-number = "relative";
|
||||
auto-format = true;
|
||||
completion-timeout = 5;
|
||||
mouse = true;
|
||||
bufferline = "multiple";
|
||||
soft-wrap.enable = true;
|
||||
word-completion = {
|
||||
enable = true;
|
||||
trigger-length = 2;
|
||||
};
|
||||
cursor-shape = {
|
||||
insert = "bar";
|
||||
normal = "block";
|
||||
select = "underline";
|
||||
};
|
||||
statusline = {
|
||||
left = [
|
||||
"spinner"
|
||||
"version-control"
|
||||
"diagnostics"
|
||||
"file-name"
|
||||
];
|
||||
right = [
|
||||
"file-base-name"
|
||||
"file-type"
|
||||
"position"
|
||||
"file-encoding"
|
||||
];
|
||||
};
|
||||
gutters.layout = [
|
||||
"diff"
|
||||
"diagnostics"
|
||||
"line-numbers"
|
||||
"spacer"
|
||||
];
|
||||
inline-diagnostics = {
|
||||
cursor-line = "hint";
|
||||
other-lines = "error";
|
||||
};
|
||||
};
|
||||
keys = {
|
||||
normal = {
|
||||
space = {
|
||||
g = [
|
||||
":new"
|
||||
":insert-output XDG_CONFIG_HOME=~/.config ${getExe lazygit}"
|
||||
":buffer-close!"
|
||||
":redraw"
|
||||
];
|
||||
i = ":toggle lsp.display-inlay-hints";
|
||||
};
|
||||
esc = [
|
||||
"collapse_selection"
|
||||
"keep_primary_selection"
|
||||
"normal_mode"
|
||||
];
|
||||
A-H = "goto_previous_buffer";
|
||||
A-L = "goto_next_buffer";
|
||||
A-w = ":buffer-close";
|
||||
A-f = ":format";
|
||||
A-r = ":reload";
|
||||
A-x = "extend_to_line_bounds";
|
||||
X = [
|
||||
"extend_line_up"
|
||||
"extend_to_line_bounds"
|
||||
];
|
||||
";" = "flip_selections";
|
||||
"A-;" = "collapse_selection";
|
||||
|
||||
# Kakoune-like config
|
||||
H = "extend_char_left";
|
||||
J = "extend_line_down";
|
||||
K = "extend_line_up";
|
||||
L = "extend_char_right";
|
||||
};
|
||||
select = {
|
||||
A-x = "extend_to_line_bounds";
|
||||
X = [
|
||||
"extend_line_up"
|
||||
"extend_to_line_bounds"
|
||||
];
|
||||
g = {
|
||||
e = "goto_file_end";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
wrapped-helix = symlinkJoin {
|
||||
name = "helix-wrapped";
|
||||
paths = [
|
||||
custom-helix
|
||||
|
||||
# Bash
|
||||
bash-language-server
|
||||
# C/C++
|
||||
clang-tools
|
||||
clippy
|
||||
golangci-lint-langserver
|
||||
gopls
|
||||
lldb_19
|
||||
# Markdown
|
||||
taplo
|
||||
|
||||
nixd
|
||||
rust-analyzer
|
||||
rustfmt
|
||||
# Shell
|
||||
shellcheck
|
||||
|
||||
kdlfmt
|
||||
|
||||
superhtml
|
||||
# toml
|
||||
taplo
|
||||
# typst
|
||||
tinymist
|
||||
# typst lsp
|
||||
vscode-langservers-extracted
|
||||
|
||||
kdlfmt
|
||||
|
||||
# zig language server
|
||||
zls
|
||||
];
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
postBuild = ''
|
||||
mkdir -p $out/config/helix/themes
|
||||
cp "${toml.generate "config.toml" helix-config}" $out/config/helix/config.toml
|
||||
cp "${helix-languages}" $out/config/helix/languages.toml
|
||||
cp "${colorscheme}" $out/config/helix/themes/theme_transparent.toml
|
||||
wrapProgram $out/bin/hx --set \
|
||||
XDG_CONFIG_HOME $out/config
|
||||
'';
|
||||
};
|
||||
in
|
||||
wrapped-helix
|
|
@ -1,339 +0,0 @@
|
|||
{
|
||||
sources,
|
||||
basedpyright,
|
||||
bash-language-server,
|
||||
callPackage,
|
||||
clang-tools,
|
||||
cmake-format,
|
||||
cmake-language-server,
|
||||
deadnix,
|
||||
deno,
|
||||
dprint,
|
||||
fetchFromGitHub,
|
||||
formats,
|
||||
gdb,
|
||||
kdePackages,
|
||||
lib,
|
||||
ruff,
|
||||
nixVersions,
|
||||
rustPlatform,
|
||||
shfmt,
|
||||
typescript-language-server,
|
||||
vscode-langservers-extracted,
|
||||
zls,
|
||||
...
|
||||
}:
|
||||
let
|
||||
inherit (lib.meta) getExe getExe';
|
||||
|
||||
toml = formats.toml { };
|
||||
|
||||
nixfmt = callPackage "${sources.nixfmt}/default.nix" { };
|
||||
|
||||
nil = rustPlatform.buildRustPackage {
|
||||
pname = "nil";
|
||||
version = "unstable";
|
||||
src = sources.nil;
|
||||
cargoLock = {
|
||||
lockFile = "${sources.nil}/Cargo.lock";
|
||||
allowBuiltinFetchGit = false;
|
||||
};
|
||||
nativeBuildInputs = [ nixVersions.latest ];
|
||||
|
||||
doInstallCheck = false;
|
||||
};
|
||||
|
||||
new-deadnix = deadnix.overrideAttrs (
|
||||
finalAttrs: previousAttrs: {
|
||||
version = "unstable-15-07-2025";
|
||||
src = fetchFromGitHub {
|
||||
owner = "astro";
|
||||
repo = "deadnix";
|
||||
rev = "d75457b95d7cfa82fcd60970939f76fccfce19e5";
|
||||
hash = "sha256-O/z2neAXL8JNkGosvxC+DyZnnJ8zYP9XHApxHVmlzfY=";
|
||||
};
|
||||
|
||||
doInstallCheck = false;
|
||||
|
||||
cargoDeps = rustPlatform.fetchCargoVendor {
|
||||
inherit (new-deadnix) src;
|
||||
hash = "sha256-O8yhqyPflOvQXAA19k1XpbrHysgV5VNWLBX0l5Q5GkM=";
|
||||
};
|
||||
meta.mainProgram = "nil";
|
||||
}
|
||||
);
|
||||
helix-languages = {
|
||||
language =
|
||||
let
|
||||
mark = lang: {
|
||||
command = getExe deno;
|
||||
args = [
|
||||
"fmt"
|
||||
"-"
|
||||
"--ext"
|
||||
lang
|
||||
];
|
||||
};
|
||||
in
|
||||
[
|
||||
{
|
||||
name = "bash";
|
||||
auto-format = true;
|
||||
formatter = {
|
||||
command = getExe 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 cmake-format;
|
||||
args = [ "-" ];
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "javascript";
|
||||
auto-format = true;
|
||||
language-servers = [
|
||||
"dprint"
|
||||
"typescript-language-server"
|
||||
];
|
||||
}
|
||||
{
|
||||
name = "json";
|
||||
formatter = mark "json";
|
||||
}
|
||||
{
|
||||
name = "markdown";
|
||||
auto-format = true;
|
||||
formatter = mark "md";
|
||||
language-servers = [ "taplo" ];
|
||||
}
|
||||
{
|
||||
name = "nix";
|
||||
language-servers = [ "nil" ];
|
||||
}
|
||||
{
|
||||
name = "qml";
|
||||
language-servers = [ "qmlls" ];
|
||||
}
|
||||
{
|
||||
name = "python";
|
||||
auto-format = true;
|
||||
language-servers = [
|
||||
"basedpyright"
|
||||
"ruff"
|
||||
];
|
||||
}
|
||||
{
|
||||
name = "typescript";
|
||||
auto-format = true;
|
||||
language-servers = [
|
||||
"dprint"
|
||||
"typescript-language-server"
|
||||
];
|
||||
}
|
||||
{
|
||||
name = "rust";
|
||||
}
|
||||
{
|
||||
name = "c";
|
||||
auto-format = true;
|
||||
language-servers = [ "clangd" ];
|
||||
}
|
||||
{
|
||||
name = "zig";
|
||||
auto-format = true;
|
||||
}
|
||||
{
|
||||
name = "c";
|
||||
debugger = {
|
||||
name = "gdb";
|
||||
command = getExe gdb;
|
||||
transport = "stdio";
|
||||
templates = [
|
||||
{
|
||||
name = "binary";
|
||||
request = "launch";
|
||||
completion = [
|
||||
{
|
||||
name = "binary";
|
||||
completion = "filename";
|
||||
}
|
||||
];
|
||||
args = {
|
||||
program = "{0}";
|
||||
runInTerminal = true;
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
];
|
||||
|
||||
language-server = {
|
||||
bash-language-server = {
|
||||
command = getExe bash-language-server;
|
||||
args = [ "start" ];
|
||||
};
|
||||
|
||||
rust-analyzer = {
|
||||
config.rust-analyzer = {
|
||||
checkOnSave.command = "clippy";
|
||||
procMacro.enable = true;
|
||||
cargo = {
|
||||
loadOutDirsFromCheck = true;
|
||||
features = "all";
|
||||
};
|
||||
assist = {
|
||||
preferSelf = true;
|
||||
};
|
||||
check = {
|
||||
command = "clippy";
|
||||
extraArgs = [
|
||||
"--"
|
||||
"-W"
|
||||
"clippy::pedantic"
|
||||
"-W"
|
||||
"clippy::nursery"
|
||||
"-W"
|
||||
"clippy::perf"
|
||||
];
|
||||
};
|
||||
lens = {
|
||||
references = true;
|
||||
methodReferences = true;
|
||||
};
|
||||
completion.autoimport.enable = true;
|
||||
experimental.procAttrMacros = true;
|
||||
interpret.tests = true;
|
||||
};
|
||||
};
|
||||
|
||||
clangd = {
|
||||
command = "${clang-tools}/bin/clangd";
|
||||
clangd.fallbackFlags = [ "-std=c++2b" ];
|
||||
};
|
||||
|
||||
cmake-language-server = {
|
||||
command = getExe cmake-language-server;
|
||||
};
|
||||
|
||||
deno-lsp = {
|
||||
command = getExe deno;
|
||||
args = [ "lsp" ];
|
||||
environment.NO_COLOR = "1";
|
||||
config.deno = {
|
||||
enable = true;
|
||||
lint = true;
|
||||
unstable = true;
|
||||
suggest = {
|
||||
completeFunctionCalls = false;
|
||||
imports = {
|
||||
hosts."https://deno.land" = true;
|
||||
};
|
||||
};
|
||||
inlayHints = {
|
||||
enumMemberValues.enabled = true;
|
||||
functionLikeReturnTypes.enabled = true;
|
||||
parameterNames.enabled = "all";
|
||||
parameterTypes.enabled = true;
|
||||
propertyDeclarationTypes.enabled = true;
|
||||
variableTypes.enabled = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
dprint = {
|
||||
command = getExe dprint;
|
||||
args = [ "lsp" ];
|
||||
};
|
||||
|
||||
nil = {
|
||||
command = getExe nil;
|
||||
config.nil = {
|
||||
formatting.command = [ "${getExe nixfmt}" ];
|
||||
diagnostics = {
|
||||
bindingEndHintMinLines = 3;
|
||||
};
|
||||
nix.flake = {
|
||||
autoArchive = true;
|
||||
# autoEvalInputs = true;
|
||||
nixpkgsInputName = "nixpkgs";
|
||||
};
|
||||
};
|
||||
};
|
||||
deadnix = {
|
||||
command = getExe new-deadnix;
|
||||
};
|
||||
|
||||
typescript-language-server = {
|
||||
command = getExe typescript-language-server;
|
||||
args = [ "--stdio" ];
|
||||
config = {
|
||||
typescript-language-server.source = {
|
||||
addMissingImports.ts = true;
|
||||
fixAll.ts = true;
|
||||
organizeImports.ts = true;
|
||||
removeUnusedImports.ts = true;
|
||||
sortImports.ts = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
ruff = {
|
||||
command = getExe ruff;
|
||||
args = [ "server" ];
|
||||
};
|
||||
|
||||
qmlls = {
|
||||
command = getExe' kdePackages.qtdeclarative "qmlls";
|
||||
args = [ "-E" ];
|
||||
};
|
||||
basedpyright.command = "${basedpyright}/bin/basedpyright-langserver";
|
||||
|
||||
vscode-css-language-server = {
|
||||
command = "${vscode-langservers-extracted}/bin/vscode-css-language-server";
|
||||
args = [ "--stdio" ];
|
||||
config = {
|
||||
provideFormatter = true;
|
||||
css.validate.enable = true;
|
||||
scss.validate.enable = true;
|
||||
};
|
||||
};
|
||||
zls = {
|
||||
command = getExe zls;
|
||||
config = {
|
||||
enable_build_on_save = true;
|
||||
build_on_save_args = [
|
||||
"check"
|
||||
"-fincremental"
|
||||
"--watch"
|
||||
];
|
||||
enable_autofix = false;
|
||||
warn_style = true;
|
||||
highlight_global_var_declarations = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
in
|
||||
toml.generate "languages.toml" helix-languages
|
Loading…
Add table
Add a link
Reference in a new issue