{ lib, config, options, ... }: let cfg = config.plugins.none-ls.sources.formatting.prettier; ts-ls-cfg = config.plugins.lsp.servers.ts_ls; opt = options.plugins.none-ls.sources.formatting.prettier; defaultPrio = (lib.mkOptionDefault null).priority; in { options.plugins.none-ls.sources.formatting.prettier = { disableTsServerFormatter = lib.mkOption { type = lib.types.bool; description = '' Disables the formatting capability of the `ts_ls` language server if it is enabled. ''; default = false; example = true; }; }; config = lib.mkIf cfg.enable { warnings = lib.optional (opt.disableTsServerFormatter.highestPrio == defaultPrio && ts-ls-cfg.enable) '' You have enabled the `prettier` formatter in none-ls. You have also enabled the `ts_ls` language server which also brings a formatting feature. - To disable the formatter built-in the `ts_ls` language server, set `plugins.none-ls.sources.formatting.prettier.disableTsServerFormatter` to `true`. - Else, to silence this warning, explicitly set the option to `false`. ''; plugins.lsp.servers.ts_ls = lib.mkIf (cfg.enable && ts-ls-cfg.enable && cfg.disableTsServerFormatter) { onAttach.function = '' client.server_capabilities.documentFormattingProvider = false ''; }; }; }