101 lines
3.6 KiB
Nix
101 lines
3.6 KiB
Nix
{
|
|
config,
|
|
lib,
|
|
inputs,
|
|
pkgs,
|
|
...
|
|
}: let
|
|
cfg = config.myOptions.programs.helix;
|
|
inherit (config.myOptions.other.system) username;
|
|
|
|
inherit (lib) getExe getExe' mkEnableOption mkIf;
|
|
|
|
clangd = getExe' pkgs.clang-tools "clangd";
|
|
css-languageserver = getExe pkgs.vscode-langservers-extracted;
|
|
in {
|
|
options.myOptions.programs.helix.enable = mkEnableOption "helix";
|
|
|
|
config = mkIf cfg.enable {
|
|
home-manager.users.${username} = {
|
|
programs.helix = {
|
|
enable = true;
|
|
package = inputs.helix.packages.${pkgs.system}.default.overrideAttrs (self: {
|
|
makeWrapperArgs = with pkgs;
|
|
self.makeWrapperArgs
|
|
or []
|
|
++ [
|
|
"--suffix"
|
|
"PATH"
|
|
":"
|
|
(lib.makeBinPath [
|
|
rustfmt
|
|
rust-analyzer
|
|
nil
|
|
clang-tools
|
|
nodePackages.bash-language-server
|
|
vscode-langservers-extracted
|
|
])
|
|
];
|
|
});
|
|
settings = {
|
|
theme = "catppuccin_mocha";
|
|
editor = {
|
|
scrolloff = 7;
|
|
mouse = false;
|
|
middle-click-paste = false;
|
|
line-number = "relative";
|
|
auto-completion = false;
|
|
auto-format = false;
|
|
completion-replace = true;
|
|
true-color = true;
|
|
undercurl = true;
|
|
rulers = [ 80 ];
|
|
bufferline = "multiple";
|
|
color-modes = true;
|
|
lsp = {
|
|
display-messages = true;
|
|
display-inlay-hints = true;
|
|
};
|
|
cursor-shape = {
|
|
normal = "block";
|
|
insert = "bar";
|
|
select = "underline";
|
|
};
|
|
auto-pairs = false;
|
|
whitespace.render.newline = "all";
|
|
indent-guides.render = true;
|
|
};
|
|
};
|
|
languages = {
|
|
language-server = {
|
|
nil = {
|
|
command = lib.getExe pkgs.nil;
|
|
config.nil.formatting.command = [ "${lib.getExe pkgs.alejandra}" "-q" ];
|
|
};
|
|
clangd = {
|
|
command = clangd;
|
|
clangd.fallbackFlags = [ "-std=c++2b" ];
|
|
};
|
|
vscode-css-language-server = {
|
|
command = "${css-languageserver}";
|
|
args = [ "--stdio" ];
|
|
};
|
|
};
|
|
language = [
|
|
{
|
|
name = "rust";
|
|
auto-format = false;
|
|
}
|
|
{
|
|
name = "html";
|
|
file-types = [ "html" ];
|
|
}
|
|
{
|
|
name = "c";
|
|
}
|
|
];
|
|
};
|
|
};
|
|
};
|
|
};
|
|
}
|