{ pkgs, lib, theme, ... }: { catppuccin.helix = { enable = true; flavor = theme.flavor; }; programs = { fish.shellAliases.edit = "hx"; helix = { enable = true; defaultEditor = true; extraPackages = with pkgs; [ # Markdown marksman markdown-oxide # Html, css, Json, Eslint vscode-langservers-extracted # Yaml ansible-language-server yaml-language-server ]; settings = { editor = { auto-save = { after-delay.enable = true; focus-lost = true; }; cursor-shape = { normal = "block"; insert = "bar"; select = "underline"; }; lsp = { display-inlay-hints = true; display-messages = true; }; }; keys.normal = { C-f = ":format"; }; }; languages.language = [ { name = "css"; formatter = { command = "prettier"; args = [ "--stdin-filepath" "file.css" ]; }; auto-format = true; } { name = "json"; language-servers = [ { name = "vscode-json-language-server"; except-features = [ "format" ]; } ]; formatter = { command = "prettier"; args = [ "--stdin-filepath" "file.json" ]; }; auto-format = true; } { name = "jsonc"; language-servers = [ { name = "vscode-json-language-server"; except-features = [ "format" ]; } ]; formatter = { command = "prettier"; args = [ "--stdin-filepath" "file.jsonc" ]; }; file-types = [ "jsonc" ]; auto-format = true; } { name = "markdown"; formatter = { command = "prettier"; args = [ "--stdin-filepath" "file.md" ]; }; auto-format = true; } { name = "nix"; formatter.command = lib.getExe pkgs.nixfmt-rfc-style; auto-format = true; } { name = "yaml"; formatter = { command = "prettier"; args = [ "--stdin-filepath" "file.yaml" ]; }; auto-format = true; } ]; }; }; }