{ pkgs, lib, stdenv, ... }: let actualPkgs = pkgs.unstablePkgs; pythonPkgs = with actualPkgs.python3Packages; [ python-lsp-server python-lsp-ruff pylsp-mypy ]; nodePkgs = with actualPkgs.nodePackages; [ vscode-langservers-extracted typescript svelte-language-server yaml-language-server typescript-language-server bash-language-server pyright ]; aichatConfigDir = "$HOME/.config/aichat"; aichatConfig = '' model: ollama clients: - type: ollama api_base: https://ollama.giugl.io api_key: null models: - name: pino-coder-fast max_input_tokens: null - name: pino-coder max_input_tokens: null - name: pino-fast max_input_tokens: null - name: pino max_input_tokens: null - name: code-commenter max_input_tokens: null - name: git-commit-message max_input_tokens: null ''; in { home = { packages = with actualPkgs; [ black helix clang-tools rust-analyzer nil texlab nixpkgs-fmt ruff ruff-lsp mypy shellcheck shfmt gopls # ] ++ pythonPkgs ++ nodePkgs; ] ++ nodePkgs; sessionVariables = { EDITOR = "hx"; VISUAL = "hx"; AICHAT_CONFIG_DIR = aichatConfigDir; }; file = { ".config/helix/config.toml".text = '' theme = "monokai_pro_spectrum" [editor] cursorline = true true-color = true gutters = ["diff", "diagnostics", "line-numbers", "spacer"] [editor.cursor-shape] insert = "bar" normal = "block" select = "underline" [editor.lsp] display-messages = true [editor.indent-guides] render = true [editor.statusline] left = ["mode", "spinner"] center = ["file-name"] [keys.select.l] c = ":pipe ${pkgs.unstablePkgs.aichat}/bin/aichat -m ollama:pino-coder-fast -c -r comment" C = ":pipe ${pkgs.unstablePkgs.aichat}/bin/aichat -m ollama:pino-coder -c -r comment" ''; ".config/aichat/config.yaml".text = aichatConfig; }; }; }