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

let
  inherit (lib) mkEnableOption mkIf readFile;
in
{
  home-manager.users.moritz = {
    xdg.configFile."nvim/snippets" = {
      recursive = true;
      source = ../snippets;
    };
    programs.nixvim = {
      plugins.luasnip = {
        lazyLoad.settings.event = [ "InsertEnter" ];
        lazyLoad.settings.after = /* lua */ ''
          function()
            require("luasnip.loaders.from_lua").load({ paths = "~/.config/nvim/snippets" })
            require("luasnip.loaders.from_snipmate").lazy_load({ paths = "~/.config/nvim/snippets" })
            require("luasnip.loaders.from_vscode").lazy_load()
          end
        '';
        enable = true;
        settings = {
          history = true;
          update_events = "TextChanged,TextChangedI";
          delete_check_events = "TextChanged";
          ext_opts.__raw = ''
            {
              [require("luasnip.util.types").choiceNode] = {
                active = {
                  virt_text = { { "<--", "Error" } },
                },
              },
            }
          '';
          ft_func.__raw = ''require("luasnip.extras.filetype_functions").from_pos_or_filetype'';
        };
      };
    };
  };
}
