{ pkgs, ... }:
{
  programs.nvf = {
    enable = true;
    settings = {
      vim = {
        theme = {
          enable = true;
          name = "base16";
        };

        statusline.lualine.enable = true; # statusline
        telescope.enable = true; # fuzzy finder
        filetree.neo-tree.enable = true; # filetree
        binds.cheatsheet.enable = true; # telescope-searchable cheatsheet
        binds.hardtime-nvim.enable = true; # stops you using arrow keys for navigation and recommends vim motions

        viAlias = true;
        vimAlias = true;
        lsp.enable = true;
        globals.mapleader = " ";
        utility.sleuth.enable = true; # makes vim use consistent indentations style
        clipboard = {
          enable = true;
          providers.wl-copy.enable = true;
          registers = "unnamedplus"; # uses system clipboard
        };
        languages = {
          enableDAP = true;
          enableExtraDiagnostics = true;
          enableFormat = true;
          enableTreesitter = true;

          rust.enable = true;
          nix.enable = true;
          markdown.enable = true;
          java.enable = true;
        };
        autocomplete.blink-cmp.enable = true;
        notes.neorg = {
          enable = true;
          treesitter = {
            enable = true;
            norgPackage = pkgs.tree-sitter-grammars.tree-sitter-norg;
          };
          setupOpts.load = {
            "core.defaults".enable = true;
            "core.concealer".config = {
              conceallevel = 3;
            };
          };
        };
      };
    };
  };
}