2025-11-18 11:15:08 +01:00

153 lines
3.7 KiB
Nix

{
config,
lib,
pkgs,
...
}:
with lib; let
cfg = config.features.desktop.coding;
in {
options.features.desktop.coding.enable =
mkEnableOption "install coding related stuff";
config = mkIf cfg.enable {
home.packages = with pkgs; [
nur.repos.charmbracelet.crush
bruno
filezilla
insomnia
opencode
];
programs.zed-editor = {
enable = true;
userSettings = {
agent_servers = {
your_agent = {
command = "path_to_executable";
args = [];
env = {};
};
};
auto_update = false;
buffer_font_family = "FiraCode Nerd Font";
buffer_font_size = 16;
context_servers = {
browsermcp = {
source = "custom";
enabled = true;
command = "npx";
args = ["@browsermcp/mcp@latest"];
};
some-context-server = {
source = "custom";
command = "some-command";
args = ["arg-1" "arg-2"];
env = {};
settings = {};
};
};
features = {
copilot = false;
edit_prediction_provider = "zed";
inline_prediction_provider = "zed";
};
format_on_save = "on";
language_models = {
openai_compatible = {
AZ = {
api_url = "https://llm.az-gruppe.com";
available_models = [
{
name = "claude-4-5-sonnet";
display_name = null;
max_tokens = 200000;
max_output_tokens = 32000;
max_completion_tokens = 200000;
capabilities = {
tools = true;
images = false;
parallel_tool_calls = false;
prompt_cache_key = false;
};
}
];
};
};
anthropic = {
api_url = "https://api.anthropic.com";
};
ollama = {
api_url = "http://localhost:11434";
};
openai = {
api_url = "https://api.openai.com/v1";
};
};
languages = {
Nix = {
formatter = {
external = {
arguments = ["-q" "-"];
command = "alejandra";
};
};
language_servers = ["nixd"];
};
Python = {
formatter = {
external = {
arguments = ["-"];
command = "black";
};
};
language_servers = ["pyrefly"];
};
};
load_direnv = "shell_hook";
lsp = {
pyrefly = {
command = {
args = ["--lsp"];
env = {};
path = "pyrefly";
};
settings = {};
};
rust_analyzer = {
binary = {
path_lookup = true;
};
};
};
show_edit_predictions = true;
ssh_connections = [
{
args = ["-i" "~/.ssh/sascha.koenig"];
host = "152.53.186.119";
port = 2022;
nickname = "AZ-CLD-1";
"projects" = [
{
paths = ["/home/sascha.koenig/AZ-NIX"];
}
];
}
];
telemetry = {
metrics = false;
};
theme = "Dracula";
ui_font_size = 16;
vim_mode = true;
agent = {
default_model = {
model = "Claude 3.7 Sonnet";
provider = "anthropic";
};
};
};
};
};
}