{ pkgs, ... }: {
  programs.nixvim.plugins = {
    lsp-format.enable = true;
    lsp = {
      enable = true;
      servers = {
        bashls.enable = true;
        clangd.enable = false;
        gopls.enable = false;
        nixd = {
          enable = true;
          extraOptions = { expr = "import <nixpkgs> {}"; };
        };
        tailwindcss.enable = true;
        html.enable = true;
        svelte.enable = false;
        marksman.enable = true;
        intelephense = {
          enable = true;
          package = pkgs.nodePackages.intelephense;
          settings = {
            init_options = {
              globalStoragePath = "~/.local/share/intelephense";
            };
          };
        };
        dockerls.enable = true;
        elmls.enable = true;
      };
      keymaps.lspBuf = {
        "gd" = "definition";
        "gD" = "references";
        "gt" = "type_definition";
        "gi" = "implementation";
        "K" = "hover";
      };
    };
    none-ls = {
      enable = true;
      sources = {
        diagnostics = {
          golangci_lint.enable = true;
          statix.enable = true;
        };
        formatting = {
          # gofmt.enable = true;
          # goimports.enable = true;
          nixfmt.enable = true;
          markdownlint.enable = true;
          tidy.enable = true;
          shellharden.enable = true;
          shfmt.enable = true;
          # golines.enable = true;
          # gofumpt.enable = true;
          phpcsfixer.enable = true;
          elm_format.enable = true;
        };
      };
    };
  };
}
