forked from aylac.top/nixcfg
this repo has no description

lalalalalal this stuff is hard

aylac.top 7698c108 7e1a05d7

verified
Changed files
+73 -39
modules
home
programs
helix
zed-editor
snippets
editor
+2 -1
modules/home/programs/helix/default.nix
···
}
else {name = srvName;}
)
-
lang.language-servers
+
(lang.language-servers
+
++ lang.helix-only-language-servers)
else map (srvName: {name = srvName;}) lang.language-servers;
in
lib.filterAttrs (_: v: v != null) (
+33 -23
modules/home/programs/zed-editor/default.nix
···
mkZedLanguage = name: lang:
lib.filterAttrs (_: v: v != null) {
formatter = mkZedFormatter lang.formatter;
-
language_servers = lang.language-servers;
+
language_servers = lang.language-servers ++ lang.zed-only-language-servers;
code_actions_on_format = lang.code-actions-on-format;
};
···
cfg = srv.config or {};
hasArgs = args != [];
hasSettings = lib.isAttrs cfg && (builtins.length (builtins.attrNames cfg) > 0);
-
isHelixOnly = srv.helix-only or false;
in
-
if isHelixOnly
-
then null
-
else
-
lib.filterAttrs (_: v: v != null) (
-
{
-
binary = lib.filterAttrs (_: v: v != null) (
-
{path = srv.command;}
-
// (
-
if hasArgs
-
then {arguments = args;}
-
else {}
-
)
-
);
-
}
-
// (
-
if hasSettings
-
then {settings = cfg;}
-
else {}
-
)
-
);
+
lib.filterAttrs (_: v: v != null) (
+
{
+
binary = lib.filterAttrs (_: v: v != null) (
+
{path = srv.command;}
+
// (
+
if hasArgs
+
then {arguments = args;}
+
else {}
+
)
+
);
+
}
+
// (
+
if hasSettings
+
then {settings = cfg;}
+
else {}
+
)
+
);
in {
options.myHome.programs.zed-editor.enable = lib.mkEnableOption "zed editor";
···
editorCfg.languages
)
);
-
lsp = lib.filterAttrs (_: v: v != null) (lib.mapAttrs mkZedLsp editorCfg.languageServers);
+
lsp = lib.mapAttrs mkZedLsp editorCfg.languageServers;
};
userTasks = [
{
···
allow_concurrent_runs = false;
shell = {
program = "fish";
+
};
+
}
+
];
+
userKeymaps = [
+
{
+
context = "Workspace";
+
bindings = {
+
ctrl-g = [
+
"task::Spawn"
+
{
+
task_name = "jjui";
+
reveal_target = "center";
+
}
+
];
};
}
];
+38 -15
modules/home/snippets/editor/default.nix
···
command,
args ? [],
config ? {},
-
helix-only ? false,
}: {
-
inherit name command args config helix-only;
+
inherit name command args config;
};
# Helper function to create formatter definitions
···
auto-format ? true,
file-types ? [],
language-servers ? [],
+
zed-only-language-servers ? [],
+
helix-only-language-servers ? [],
formatter ? null,
helix-formatter ? null,
code-actions-on-format ? {},
}: {
-
inherit name full-name auto-format file-types language-servers formatter helix-formatter code-actions-on-format;
+
inherit name full-name auto-format file-types language-servers zed-only-language-servers helix-only-language-servers formatter helix-formatter code-actions-on-format;
};
in {
options.mySnippets.editor = lib.mkOption {
···
echo = "${pkgs.uutils-coreutils-noprefix}/bin/echo";
bun = lib.getExe pkgs.bun;
twls = lib.getExe pkgs.tailwindcss-language-server;
+
printf = "${pkgs.uutils-coreutils-noprefix}/bin/printf";
in
pkgs.writeScript "tailwindcss-language-server-bun" ''
#!${lib.getExe pkgs.bash} -e
if ! ${fd} -H -I -E "node_modules" "package\\.json$" . | \
${xargs} ${grep} -q '"tailwindcss"'; then
-
${echo} "No tailwindcss found in project; skipping tailwindcss-language-server." >&2
-
exec tail -f /dev/null
+
${echo} "No tailwindcss found in project; faking clean LSP exit." >&2
+
+
# Send a fake LSP shutdown + exit sequence to stdout.
+
${printf} 'Content-Length: 47\r\n\r\n{"jsonrpc":"2.0","id":1,"method":"shutdown"}'
+
${printf} 'Content-Length: 41\r\n\r\n{"jsonrpc":"2.0","method":"exit"}'
+
+
# Exit with success so the client treats this as a normal termination.
+
exit 0
fi
exec ${bun} ${twls}
'';
args = [];
config = {provideFormatter = false;};
-
helix-only = true;
};
vscode-html-language-server = mkLspServer "vscode-html-language-server" {
···
args = ["${pkgs.vscode-json-languageserver}/lib/node_modules/vscode-json-languageserver/bin/vscode-json-languageserver" "--stdio"];
};
-
typescript-language-server = mkLspServer "typescript-language-server" {
+
vtsls = mkLspServer "vtsls" {
command = lib.getExe pkgs.bun;
-
args = ["${pkgs.nodePackages.typescript-language-server}/lib/node_modules/typescript-language-server/lib/cli.mjs" "--stdio"];
+
args = ["${pkgs.vtsls}/bin/vtsls" "--stdio"];
};
svelte-language-server = mkLspServer "svelte-language-server" {
···
languages = {
html = mkLanguage "html" {
full-name = "HTML";
-
language-servers = ["vscode-html-language-server" "superhtml" "biome"];
+
language-servers = ["vscode-html-language-server" "biome"];
+
zed-only-language-servers = ["!eslint" "..."];
+
helix-only-language-servers = ["tailwindcss-language-server"];
formatter = "biome";
helix-formatter = "biomeHtml";
code-actions-on-format = {
···
css = mkLanguage "css" {
full-name = "CSS";
language-servers = ["css-language-server" "biome"];
+
zed-only-language-servers = ["..."];
+
helix-only-language-servers = ["tailwindcss-language-server"];
formatter = "biome";
code-actions-on-format = {
"source.fixAll.biome" = true;
···
javascript = mkLanguage "javascript" {
full-name = "JavaScript";
-
language-servers = ["typescript-language-server" "biome"];
+
language-servers = ["vtsls" "biome"];
+
zed-only-language-servers = ["!eslint" "!typescript-language-server" "..."];
+
helix-only-language-servers = ["tailwindcss-language-server"];
formatter = "biome";
code-actions-on-format = {
"source.fixAll.biome" = true;
···
typescript = mkLanguage "typescript" {
full-name = "TypeScript";
-
language-servers = ["typescript-language-server" "biome"];
+
language-servers = ["vtsls" "biome"];
+
zed-only-language-servers = ["!eslint" "!typescript-language-server" "..."];
+
helix-only-language-servers = ["tailwindcss-language-server"];
formatter = "biome";
code-actions-on-format = {
"source.fixAll.biome" = true;
···
jsx = mkLanguage "jsx" {
full-name = "JSX";
-
language-servers = ["typescript-language-server" "biome"];
+
language-servers = ["vtsls" "biome"];
+
zed-only-language-servers = ["!eslint" "!typescript-language-server" "..."];
+
helix-only-language-servers = ["tailwindcss-language-server"];
formatter = "biome";
code-actions-on-format = {
"source.fixAll.biome" = true;
···
tsx = mkLanguage "tsx" {
full-name = "TSX";
-
language-servers = ["typescript-language-server" "biome"];
+
language-servers = ["vtsls" "biome"];
+
zed-only-language-servers = ["!eslint" "!typescript-language-server" "..."];
+
helix-only-language-servers = ["tailwindcss-language-server"];
formatter = "biome";
code-actions-on-format = {
"source.fixAll.biome" = true;
···
svelte = mkLanguage "svelte" {
full-name = "Svelte";
-
language-servers = ["svelte-language-server" "typescript-language-server" "biome"];
+
language-servers = ["svelte-language-server" "vtsls" "biome"];
+
zed-only-language-servers = ["!eslint" "!typescript-language-server" "..."];
+
helix-only-language-servers = ["tailwindcss-language-server"];
formatter = "biome";
code-actions-on-format = {
"source.fixAll.biome" = true;
···
vue = mkLanguage "vue" {
full-name = "Vue.js";
language-servers = ["vue-language-server" "biome"];
+
zed-only-language-servers = ["!eslint" "!typescript-language-server" "..."];
+
helix-only-language-servers = ["tailwindcss-language-server"];
formatter = "biome";
code-actions-on-format = {
"source.fixAll.biome" = true;
···
};
bash = mkLanguage "bash" {
-
full-name = "Bash";
+
full-name = "Shell Script";
file-types = ["sh" "bash" "dash" "ksh" "mksh"];
language-servers = ["bash-language-server"];
formatter = "shfmt";