Initial commit
This commit is contained in:
@@ -0,0 +1,130 @@
|
||||
{pkgs, ...}: let
|
||||
formatters = {
|
||||
alejandra = "${pkgs.alejandra}/bin/alejandra";
|
||||
biome = "${pkgs.biome}/bin/biome";
|
||||
oxfmt = "${pkgs.oxfmt}/bin/oxfmt";
|
||||
shfmt = "${pkgs.shfmt}/bin/shfmt";
|
||||
};
|
||||
|
||||
languageServers = {
|
||||
astro-ls = "${pkgs.astro-language-server}/bin/astro-ls";
|
||||
biome = "${pkgs.biome}/bin/biome";
|
||||
marksman = "${pkgs.marksman}/bin/marksman";
|
||||
nil = "${pkgs.nil}/bin/nil";
|
||||
tailwindcss = "${pkgs.tailwindcss-language-server}/bin/tailwindcss-language-server";
|
||||
volar = "${pkgs.vue-language-server}/bin/vue-language-server";
|
||||
};
|
||||
|
||||
# Helper function to create external formatter config
|
||||
mkExternalFormatter = command: args: {
|
||||
external = {
|
||||
inherit command;
|
||||
arguments = args;
|
||||
};
|
||||
};
|
||||
in {
|
||||
languages = {
|
||||
YAML = {
|
||||
tab_size = 2;
|
||||
formatter = mkExternalFormatter formatters.oxfmt ["--stdin-filepath" "{buffer_path}"];
|
||||
format_on_save = "on";
|
||||
};
|
||||
Astro = {
|
||||
tab_size = 2;
|
||||
formatter = mkExternalFormatter formatters.biome ["format" "--stdin-file-path" "{buffer_path}"];
|
||||
format_on_save = "on";
|
||||
language_servers = ["astro-ls" "tailwindcss-language-server"];
|
||||
};
|
||||
JavaScript = {
|
||||
tab_size = 2;
|
||||
formatter = mkExternalFormatter formatters.oxfmt ["--stdin-filepath" "{buffer_path}"];
|
||||
format_on_save = "on";
|
||||
language_servers = ["biome" "tailwindcss-language-server"];
|
||||
};
|
||||
JSON = {
|
||||
tab_size = 2;
|
||||
formatter = mkExternalFormatter formatters.oxfmt ["--stdin-filepath" "{buffer_path}"];
|
||||
format_on_save = "on";
|
||||
language_servers = ["biome"];
|
||||
};
|
||||
Markdown = {
|
||||
tab_size = 2;
|
||||
formatter = mkExternalFormatter formatters.oxfmt ["--stdin-filepath" "{buffer_path}"];
|
||||
format_on_save = "on";
|
||||
language_servers = ["marksman"];
|
||||
};
|
||||
TypeScript = {
|
||||
tab_size = 2;
|
||||
formatter = mkExternalFormatter formatters.oxfmt ["--stdin-filepath" "{buffer_path}"];
|
||||
format_on_save = "on";
|
||||
language_servers = ["biome" "tailwindcss-language-server"];
|
||||
};
|
||||
TSX = {
|
||||
tab_size = 2;
|
||||
formatter = mkExternalFormatter formatters.oxfmt ["--stdin-filepath" "{buffer_path}"];
|
||||
format_on_save = "on";
|
||||
language_servers = ["biome" "tailwindcss-language-server"];
|
||||
};
|
||||
CSS = {
|
||||
tab_size = 2;
|
||||
formatter = mkExternalFormatter formatters.oxfmt ["--stdin-filepath" "{buffer_path}"];
|
||||
format_on_save = "on";
|
||||
language_servers = ["biome" "tailwindcss-language-server"];
|
||||
};
|
||||
HTML = {
|
||||
tab_size = 2;
|
||||
formatter = mkExternalFormatter formatters.oxfmt ["--stdin-filepath" "{buffer_path}"];
|
||||
format_on_save = "on";
|
||||
language_servers = ["tailwindcss-language-server"];
|
||||
};
|
||||
"Vue.js" = {
|
||||
tab_size = 2;
|
||||
formatter = mkExternalFormatter formatters.oxfmt ["--stdin-filepath" "{buffer_path}"];
|
||||
format_on_save = "on";
|
||||
language_servers = ["vue-language-server" "tailwindcss-language-server"];
|
||||
};
|
||||
Nix = {
|
||||
tab_size = 2;
|
||||
formatter = mkExternalFormatter formatters.alejandra ["-q"];
|
||||
format_on_save = "on";
|
||||
language_servers = ["nil"];
|
||||
};
|
||||
};
|
||||
|
||||
lsp = {
|
||||
"astro-language-server" = {
|
||||
binary = {
|
||||
path = languageServers.astro-ls;
|
||||
arguments = ["--stdio"];
|
||||
};
|
||||
};
|
||||
biome = {
|
||||
binary = {
|
||||
path = languageServers.biome;
|
||||
arguments = ["lsp-proxy"];
|
||||
};
|
||||
};
|
||||
nil = {
|
||||
binary = {
|
||||
path = languageServers.nil;
|
||||
};
|
||||
initialization_options = {
|
||||
formatting = {
|
||||
command = [formatters.alejandra "-q"];
|
||||
};
|
||||
};
|
||||
};
|
||||
"tailwindcss-language-server" = {
|
||||
binary = {
|
||||
path = languageServers.tailwindcss;
|
||||
arguments = ["--stdio"];
|
||||
};
|
||||
};
|
||||
"vue-language-server" = {
|
||||
binary = {
|
||||
path = languageServers.volar;
|
||||
arguments = ["--stdio"];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,152 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
configFile = "zed/settings.json";
|
||||
languageConfig = import ./_settings.nix {inherit pkgs lib;};
|
||||
settingsJSON = builtins.toJSON ({
|
||||
node = {
|
||||
path = "${pkgs.nodejs}/bin/node";
|
||||
npm_path = "${pkgs.nodejs}/bin/npm";
|
||||
};
|
||||
audio = {"experimental.rodio_audio" = true;};
|
||||
calls.mute_on_join = true;
|
||||
terminal.font_size = 11;
|
||||
window_decorations = "client";
|
||||
use_system_window_tabs = false;
|
||||
tabs.git_status = false;
|
||||
title_bar = {
|
||||
show_menus = false;
|
||||
show_user_picture = false;
|
||||
show_user_menu = false;
|
||||
show_sign_in = true;
|
||||
show_onboarding_banner = false;
|
||||
show_project_items = true;
|
||||
show_branch_name = true;
|
||||
show_branch_icon = false;
|
||||
};
|
||||
debugger.button = false;
|
||||
colorize_brackets = true;
|
||||
inlay_hints = {
|
||||
show_background = true;
|
||||
enabled = true;
|
||||
};
|
||||
show_whitespaces = "selection";
|
||||
gutter.runnables = true;
|
||||
indent_guides = {
|
||||
background_coloring = "disabled";
|
||||
coloring = "fixed";
|
||||
};
|
||||
relative_line_numbers = "enabled";
|
||||
which_key.enabled = true;
|
||||
helix_mode = true;
|
||||
current_line_highlight = "all";
|
||||
hide_mouse = "never";
|
||||
multi_cursor_modifier = "cmd_or_ctrl";
|
||||
agent_ui_font_size = 15;
|
||||
agent_buffer_font_size = 11;
|
||||
session.trust_all_worktrees = true;
|
||||
redact_private_values = true;
|
||||
ui_font_family = "GT Pressura Mono Trial";
|
||||
buffer_font_features = {
|
||||
calt = true;
|
||||
dlig = true;
|
||||
liga = true;
|
||||
ss13 = true;
|
||||
ss15 = true;
|
||||
};
|
||||
buffer_font_fallbacks = ["Symbols Nerd Font"];
|
||||
buffer_font_size = 12;
|
||||
scrollbar.show = "never";
|
||||
tab_bar.show = false;
|
||||
toolbar = {
|
||||
agent_review = false;
|
||||
quick_actions = false;
|
||||
};
|
||||
vim_mode = false;
|
||||
theme = {
|
||||
mode = "system";
|
||||
light = "Noctalia Light";
|
||||
dark = "Noctalia Dark";
|
||||
};
|
||||
icon_theme = "Catppuccin Mocha";
|
||||
project_panel.dock = "left";
|
||||
unnecessary_code_fade = 0.9;
|
||||
restore_on_startup = "last_session";
|
||||
auto_update = false;
|
||||
telemetry = {
|
||||
diagnostics = false;
|
||||
metrics = false;
|
||||
};
|
||||
edit_predictions_disabled_in = ["comments"];
|
||||
preview_tabs.enabled = false;
|
||||
format_on_save = "on";
|
||||
tab_size = 2;
|
||||
features.edit_prediction_provider = "copilot";
|
||||
agent = {
|
||||
play_sound_when_agent_done = false;
|
||||
default_profile = "write";
|
||||
always_allow_tool_actions = false;
|
||||
dock = "right";
|
||||
default_model = {
|
||||
provider = "openrouter";
|
||||
model = "mistralai/devstral-2512:free";
|
||||
};
|
||||
commit_message_model = {
|
||||
provider = "openrouter";
|
||||
model = "mistralai/devstral-2512:free";
|
||||
};
|
||||
thread_summary_model = {
|
||||
provider = "openrouter";
|
||||
model = "mistralai/devstral-2512:free";
|
||||
};
|
||||
};
|
||||
}
|
||||
// languageConfig);
|
||||
lspPackages = with pkgs; [
|
||||
# Language Server Protocol
|
||||
astro-language-server
|
||||
biome
|
||||
marksman
|
||||
nil
|
||||
tailwindcss-language-server
|
||||
vue-language-server
|
||||
# Formatters
|
||||
alejandra
|
||||
oxfmt
|
||||
shfmt
|
||||
# Node.js (required for Zed LSP node integration)
|
||||
nodejs
|
||||
];
|
||||
lspBinPath = pkgs.buildEnv {
|
||||
name = "zed-lsp-env";
|
||||
paths = lspPackages;
|
||||
pathsToLink = ["/bin"];
|
||||
};
|
||||
zedWithLSP = pkgs.symlinkJoin {
|
||||
name = "zed-with-lsp";
|
||||
paths = [pkgs.zed-editor];
|
||||
buildInputs = [pkgs.makeWrapper];
|
||||
postBuild = ''
|
||||
rm -rf $out/bin
|
||||
mkdir -p $out/bin
|
||||
makeWrapper ${pkgs.zed-editor}/bin/zeditor $out/bin/zeditor \
|
||||
--prefix PATH : ${lspBinPath}/bin
|
||||
for bin in ${pkgs.zed-editor}/bin/*; do
|
||||
if [ "$(basename $bin)" != "zeditor" ]; then
|
||||
ln -s $bin $out/bin/$(basename $bin)
|
||||
fi
|
||||
done
|
||||
'';
|
||||
};
|
||||
in {
|
||||
users.users.someone.packages = [
|
||||
zedWithLSP
|
||||
];
|
||||
xdg.configFile."${configFile}" = {
|
||||
text = settingsJSON;
|
||||
mutable = true;
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user