{ pkgs, lib, theme, ... }: { catppuccin.helix = { enable = true; flavor = theme.flavor; }; programs = { fish.shellAliases.edit = "hx"; helix = let prettier = format: { command = "prettier"; args = [ "--stdin-filepath" "file.${format}" ]; }; in { 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 = prettier "css"; auto-format = true; } { name = "json"; language-servers = [ "vscode-json-language-server" ]; formatter = prettier "json"; auto-format = true; } { name = "jsonc"; language-servers = [ ]; formatter = prettier "jsonc"; file-types = [ "jsonc" ]; auto-format = true; } { name = "markdown"; formatter = prettier "md"; auto-format = true; } { name = "nix"; formatter.command = lib.getExe pkgs.nixfmt-rfc-style; auto-format = true; } { name = "yaml"; formatter = prettier "yaml"; auto-format = true; } ]; }; }; }