{ config, lib, pkgs, inputs, ... }:

let
  inherit (lib) mkEnableOption mkIf readFile;
in
{
  home-manager.users.moritz = {
    programs.nixvim = lib.mkMerge [
      { plugins.which-key.enable = true; }
      { plugins.lastplace.enable = true; }
      { plugins.comment.enable = true; }
      { plugins.ts-context-commentstring.enable = true; }
      {
        plugins.vimtex = {
          enable = true;
          settings.view_method = "zathura";
        };
      }
      {
        plugins.todo-comments = {
          enable = true;
          keymaps.todoTelescope.key = "<leader>fc";
        };
      }

      {
        keymaps = [
          { key = "<esc>"; action = "<cmd>noh<cr><esc>"; options.desc = "Escape and clear hlsearch"; mode = [ "i" "n" ]; }
        ];
      }
      { plugins.oil.enable = true; }
      { plugins.nvim-autopairs.enable = true; }
      { plugins.vim-surround.enable = true; }
      {
        plugins.lint.enable = true;
        # TODO: add linters
        plugins.lint.lintersByFt = { };
      }
      {
        plugins.marks.enable = true;
        plugins.marks.defaultMappings = false;
      }
      {
        plugins.hmts.enable = true;
        performance.combinePlugins.standalonePlugins = [ "hmts.nvim" ];
      }
      { plugins.gitsigns.enable = true; }
      { plugins.fugitive.enable = true; }
      { plugins.friendly-snippets.enable = true; }
      { plugins.direnv.enable = true; }
      { plugins.crates-nvim.enable = true; }
      {
        plugins.helpview.enable = true;
        performance.combinePlugins.standalonePlugins = [ "helpview.nvim" ];
      }
    ];
  };
}