2024-09-29 06:04:17 +00:00
|
|
|
{ pkgs, ... }:
|
|
|
|
let
|
|
|
|
hx-pretty = pkgs.writeShellScript "hx-pretty.sh" ''
|
|
|
|
exec prettier --stdin-filepath "$HX_FILE"
|
|
|
|
'';
|
|
|
|
|
|
|
|
prettier-formats = map
|
|
|
|
(name: {
|
|
|
|
inherit name;
|
|
|
|
auto-format = true;
|
|
|
|
indent = { tab-width = 4; unit = "\t"; };
|
|
|
|
formatter.command = hx-pretty;
|
|
|
|
})
|
|
|
|
[
|
|
|
|
"css"
|
|
|
|
"html"
|
|
|
|
"javascript"
|
2024-10-27 22:44:01 +00:00
|
|
|
"json"
|
2024-09-29 06:04:17 +00:00
|
|
|
"typescript"
|
|
|
|
];
|
|
|
|
|
|
|
|
in
|
|
|
|
{
|
|
|
|
environment.etc."bck-helix/config.toml".source =
|
|
|
|
(pkgs.formats.toml { }).generate "config.toml" {
|
|
|
|
theme = "dark_plus";
|
|
|
|
editor = {
|
|
|
|
auto-format = true;
|
|
|
|
bufferline = "multiple";
|
|
|
|
indent-guides.render = true;
|
|
|
|
line-number = "relative";
|
|
|
|
mouse = false;
|
|
|
|
scrolloff = 10;
|
|
|
|
true-color = true;
|
|
|
|
};
|
|
|
|
keys = {
|
2024-09-29 22:42:56 +00:00
|
|
|
normal.A-j = ":buffer-previous";
|
|
|
|
normal.A-k = ":buffer-next";
|
2024-09-29 06:04:17 +00:00
|
|
|
normal.space.e = ":w";
|
|
|
|
normal.space.x = ":q";
|
|
|
|
normal.space.backspace = ":reset-diff-change";
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
environment.etc."bck-helix/languages.toml".source =
|
|
|
|
(pkgs.formats.toml { }).generate "languages.toml" {
|
|
|
|
language = prettier-formats ++ [
|
|
|
|
{
|
|
|
|
name = "bash";
|
|
|
|
auto-format = true;
|
|
|
|
indent = { tab-width = 4; unit = "\t"; };
|
|
|
|
}
|
|
|
|
{
|
|
|
|
name = "lua";
|
|
|
|
auto-format = true;
|
|
|
|
indent = { tab-width = 4; unit = "\t"; };
|
|
|
|
}
|
|
|
|
{
|
|
|
|
name = "nix";
|
|
|
|
auto-format = true;
|
2024-11-08 03:51:20 +00:00
|
|
|
formatter = { command = "nixfmt"; args = [ "--verify" ]; };
|
2024-09-29 06:04:17 +00:00
|
|
|
}
|
|
|
|
{
|
|
|
|
name = "python";
|
|
|
|
auto-format = true;
|
|
|
|
language-servers = [ "pyright" ];
|
|
|
|
formatter = { command = "black"; args = [ "--quiet" "-" ]; };
|
|
|
|
}
|
|
|
|
{
|
|
|
|
name = "yaml";
|
|
|
|
auto-format = true;
|
|
|
|
formatter.command = hx-pretty;
|
|
|
|
}
|
|
|
|
];
|
|
|
|
language-server = {
|
|
|
|
pyright = {
|
|
|
|
command = "pyright-langserver";
|
|
|
|
args = [ "--stdio" ];
|
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
environment.systemPackages = with pkgs; [
|
|
|
|
(helix.overrideAttrs ({ patches ? [ ], ... }: {
|
|
|
|
# Patch required for .editorconfig to work properly with formatters
|
|
|
|
patches = patches ++ [ ./format-filepath.patch ];
|
|
|
|
postPatch = ''
|
|
|
|
sed 's/tab-width = .,/tab-width = 4,/' -i languages.toml
|
|
|
|
'';
|
|
|
|
}))
|
|
|
|
];
|
|
|
|
|
|
|
|
environment.etc."bck-settings.sh".text = ''
|
|
|
|
mkdir -p ~/.config && ln -nTfs /etc/bck-helix ~/.config/helix
|
|
|
|
'';
|
|
|
|
}
|