{...}: {
  imports = [
    ./keymaps.nix
  ];

  programs.nixvim.plugins = {
    lspkind.enable = true;

    cmp-nvim-lsp-signature-help.enable = true;

    cmp = {
      enable = true;
      autoEnableSources = true;
      autoLoad = true;

      settings.sources = [
        {name = "nvim_lsp";}
        {name = "nvim_lsp_signature_help";}
        {name = "path";}
      ];

      settings.mapping = {
        "<Tab>" = "cmp.mapping.select_next_item()";
        "<S-Tab>" = "cmp.mapping.select_prev_item()";
        "<C-Space>" = "cmp.mapping.complete()";
        "<C-S-Space>" = "cmp.mapping.close()";
        "<CR>" = "cmp.mapping.confirm({ behavior = cmp.ConfirmBehavior.Insert, select = true })";
      };
    };

    lsp-format.enable = true;

    none-ls = {
      enable = true;
      enableLspFormat = true;
      sources.formatting = {
        alejandra.enable = true;
        nixpkgs_fmt.enable = true;
      };
    };
  };
}
