{config, ...}: {
  programs.nvf = {
    enable = true;
    settings = {
      vim = {
        theme = {
          enable = true;
          name = "base16";
        };
        viAlias = true;
        vimAlias = true;
        lsp = {
          enable = true;
        };
        languages = {
          enableLSP = true;
          enableDAP = true;
          enableExtraDiagnostics = true;
          enableFormat = true;
          enableTreesitter = true;

          rust.enable = true;
          nix.enable = true;
          markdown.enable = true;
          java.enable = true;
        };
        autocomplete.nvim-cmp = {
          enable = true;
        };
        
      };
    };
  };
  # Pulls stylix base16 colours into nvf for use in the vim theme.
  # This works for colours generated from the wallpaper, colours set manually and colours pulled from a base16Scheme yaml file.
  programs.nvf.settings.vim.theme.base16-colors = {
    base00 = "${config.lib.stylix.colors.base00}";
    base01 = "${config.lib.stylix.colors.base01}";
    base02 = "${config.lib.stylix.colors.base02}";
    base03 = "${config.lib.stylix.colors.base03}";
    base04 = "${config.lib.stylix.colors.base04}";
    base05 = "${config.lib.stylix.colors.base05}";
    base06 = "${config.lib.stylix.colors.base06}";
    base07 = "${config.lib.stylix.colors.base07}";
    base08 = "${config.lib.stylix.colors.base08}";
    base09 = "${config.lib.stylix.colors.base09}";
    base0A = "${config.lib.stylix.colors.base0A}";
    base0B = "${config.lib.stylix.colors.base0B}";
    base0C = "${config.lib.stylix.colors.base0C}";
    base0D = "${config.lib.stylix.colors.base0D}";
    base0E = "${config.lib.stylix.colors.base0E}";
    base0F = "${config.lib.stylix.colors.base0F}";
  };
}