mirror of
				https://github.com/NotAShelf/nvf.git
				synced 2025-11-03 20:22:21 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			274 lines
		
	
	
	
		
			6.8 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			274 lines
		
	
	
	
		
			6.8 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
# This is the sample configuration for nvf, aiming to give you a feel of the default options
 | 
						|
# while certain plugins are enabled. While it may partially act as one, this is *not* quite
 | 
						|
# an overview of nvf's module options. To find a complete and curated list of nvf module
 | 
						|
# options, examples, instruction tutorials and more; please visit the online manual.
 | 
						|
# https://notashelf.github.io/nvf/options.html
 | 
						|
isMaximal: {
 | 
						|
  config.vim = {
 | 
						|
    viAlias = true;
 | 
						|
    vimAlias = true;
 | 
						|
    debugMode = {
 | 
						|
      enable = false;
 | 
						|
      level = 16;
 | 
						|
      logFile = "/tmp/nvim.log";
 | 
						|
    };
 | 
						|
 | 
						|
    spellcheck = {
 | 
						|
      enable = true;
 | 
						|
      programmingWordlist.enable = isMaximal;
 | 
						|
    };
 | 
						|
 | 
						|
    lsp = {
 | 
						|
      # This must be enabled for the language modules to hook into
 | 
						|
      # the LSP API.
 | 
						|
      enable = true;
 | 
						|
 | 
						|
      formatOnSave = true;
 | 
						|
      lspkind.enable = false;
 | 
						|
      lightbulb.enable = true;
 | 
						|
      lspsaga.enable = false;
 | 
						|
      trouble.enable = true;
 | 
						|
      lspSignature.enable = !isMaximal; # conflicts with blink in maximal
 | 
						|
      otter-nvim.enable = isMaximal;
 | 
						|
      nvim-docs-view.enable = isMaximal;
 | 
						|
    };
 | 
						|
 | 
						|
    debugger = {
 | 
						|
      nvim-dap = {
 | 
						|
        enable = true;
 | 
						|
        ui.enable = true;
 | 
						|
      };
 | 
						|
    };
 | 
						|
 | 
						|
    # This section does not include a comprehensive list of available language modules.
 | 
						|
    # To list all available language module options, please visit the nvf manual.
 | 
						|
    languages = {
 | 
						|
      enableFormat = true; #
 | 
						|
      enableTreesitter = true;
 | 
						|
      enableExtraDiagnostics = true;
 | 
						|
 | 
						|
      # Languages that will be supported in default and maximal configurations.
 | 
						|
      nix.enable = true;
 | 
						|
      markdown.enable = true;
 | 
						|
 | 
						|
      # Languages that are enabled in the maximal configuration.
 | 
						|
      bash.enable = isMaximal;
 | 
						|
      clang.enable = isMaximal;
 | 
						|
      css.enable = isMaximal;
 | 
						|
      html.enable = isMaximal;
 | 
						|
      sql.enable = isMaximal;
 | 
						|
      java.enable = isMaximal;
 | 
						|
      kotlin.enable = isMaximal;
 | 
						|
      ts.enable = isMaximal;
 | 
						|
      go.enable = isMaximal;
 | 
						|
      lua.enable = isMaximal;
 | 
						|
      zig.enable = isMaximal;
 | 
						|
      python.enable = isMaximal;
 | 
						|
      typst.enable = isMaximal;
 | 
						|
      rust = {
 | 
						|
        enable = isMaximal;
 | 
						|
        crates.enable = isMaximal;
 | 
						|
      };
 | 
						|
 | 
						|
      # Language modules that are not as common.
 | 
						|
      assembly.enable = false;
 | 
						|
      astro.enable = false;
 | 
						|
      nu.enable = false;
 | 
						|
      csharp.enable = false;
 | 
						|
      julia.enable = false;
 | 
						|
      vala.enable = false;
 | 
						|
      scala.enable = false;
 | 
						|
      r.enable = false;
 | 
						|
      gleam.enable = false;
 | 
						|
      dart.enable = false;
 | 
						|
      ocaml.enable = false;
 | 
						|
      elixir.enable = false;
 | 
						|
      haskell.enable = true;
 | 
						|
      hcl.enable = true;
 | 
						|
      ruby.enable = false;
 | 
						|
      fsharp.enable = false;
 | 
						|
 | 
						|
      tailwind.enable = false;
 | 
						|
      svelte.enable = false;
 | 
						|
 | 
						|
      # Nim LSP is broken on Darwin and therefore
 | 
						|
      # should be disabled by default. Users may still enable
 | 
						|
      # `vim.languages.vim` to enable it, this does not restrict
 | 
						|
      # that.
 | 
						|
      # See: <https://github.com/PMunch/nimlsp/issues/178#issue-2128106096>
 | 
						|
      nim.enable = false;
 | 
						|
    };
 | 
						|
 | 
						|
    visuals = {
 | 
						|
      nvim-scrollbar.enable = isMaximal;
 | 
						|
      nvim-web-devicons.enable = true;
 | 
						|
      nvim-cursorline.enable = true;
 | 
						|
      cinnamon-nvim.enable = true;
 | 
						|
      fidget-nvim.enable = true;
 | 
						|
 | 
						|
      highlight-undo.enable = true;
 | 
						|
      indent-blankline.enable = true;
 | 
						|
 | 
						|
      # Fun
 | 
						|
      cellular-automaton.enable = false;
 | 
						|
    };
 | 
						|
 | 
						|
    statusline = {
 | 
						|
      lualine = {
 | 
						|
        enable = true;
 | 
						|
        theme = "catppuccin";
 | 
						|
      };
 | 
						|
    };
 | 
						|
 | 
						|
    theme = {
 | 
						|
      enable = true;
 | 
						|
      name = "catppuccin";
 | 
						|
      style = "mocha";
 | 
						|
      transparent = false;
 | 
						|
    };
 | 
						|
 | 
						|
    autopairs.nvim-autopairs.enable = true;
 | 
						|
 | 
						|
    # nvf provides various autocomplete options. The tried and tested nvim-cmp
 | 
						|
    # is enabled in default package, because it does not trigger a build. We
 | 
						|
    # enable blink-cmp in maximal because it needs to build its rust fuzzy
 | 
						|
    # matcher library.
 | 
						|
    autocomplete = {
 | 
						|
      nvim-cmp.enable = !isMaximal;
 | 
						|
      blink-cmp.enable = isMaximal;
 | 
						|
    };
 | 
						|
 | 
						|
    snippets.luasnip.enable = true;
 | 
						|
 | 
						|
    filetree = {
 | 
						|
      neo-tree = {
 | 
						|
        enable = true;
 | 
						|
      };
 | 
						|
    };
 | 
						|
 | 
						|
    tabline = {
 | 
						|
      nvimBufferline.enable = true;
 | 
						|
    };
 | 
						|
 | 
						|
    treesitter.context.enable = true;
 | 
						|
 | 
						|
    binds = {
 | 
						|
      whichKey.enable = true;
 | 
						|
      cheatsheet.enable = true;
 | 
						|
      hardtime-nvim.enable = isMaximal;
 | 
						|
    };
 | 
						|
 | 
						|
    telescope.enable = true;
 | 
						|
 | 
						|
    git = {
 | 
						|
      enable = true;
 | 
						|
      gitsigns.enable = true;
 | 
						|
      gitsigns.codeActions.enable = false; # throws an annoying debug message
 | 
						|
      neogit.enable = isMaximal;
 | 
						|
    };
 | 
						|
 | 
						|
    minimap = {
 | 
						|
      minimap-vim.enable = false;
 | 
						|
      codewindow.enable = isMaximal; # lighter, faster, and uses lua for configuration
 | 
						|
    };
 | 
						|
 | 
						|
    dashboard = {
 | 
						|
      dashboard-nvim.enable = false;
 | 
						|
      alpha.enable = isMaximal;
 | 
						|
    };
 | 
						|
 | 
						|
    notify = {
 | 
						|
      nvim-notify.enable = true;
 | 
						|
    };
 | 
						|
 | 
						|
    projects = {
 | 
						|
      project-nvim.enable = isMaximal;
 | 
						|
    };
 | 
						|
 | 
						|
    utility = {
 | 
						|
      ccc.enable = false;
 | 
						|
      vim-wakatime.enable = false;
 | 
						|
      diffview-nvim.enable = true;
 | 
						|
      yanky-nvim.enable = false;
 | 
						|
      icon-picker.enable = isMaximal;
 | 
						|
      surround.enable = isMaximal;
 | 
						|
      leetcode-nvim.enable = isMaximal;
 | 
						|
      multicursors.enable = isMaximal;
 | 
						|
      smart-splits.enable = isMaximal;
 | 
						|
 | 
						|
      motion = {
 | 
						|
        hop.enable = true;
 | 
						|
        leap.enable = true;
 | 
						|
        precognition.enable = isMaximal;
 | 
						|
      };
 | 
						|
      images = {
 | 
						|
        image-nvim.enable = false;
 | 
						|
        img-clip.enable = isMaximal;
 | 
						|
      };
 | 
						|
    };
 | 
						|
 | 
						|
    notes = {
 | 
						|
      obsidian.enable = false; # FIXME: neovim fails to build if obsidian is enabled
 | 
						|
      neorg.enable = false;
 | 
						|
      orgmode.enable = false;
 | 
						|
      mind-nvim.enable = isMaximal;
 | 
						|
      todo-comments.enable = true;
 | 
						|
    };
 | 
						|
 | 
						|
    terminal = {
 | 
						|
      toggleterm = {
 | 
						|
        enable = true;
 | 
						|
        lazygit.enable = true;
 | 
						|
      };
 | 
						|
    };
 | 
						|
 | 
						|
    ui = {
 | 
						|
      borders.enable = true;
 | 
						|
      noice.enable = true;
 | 
						|
      colorizer.enable = true;
 | 
						|
      modes-nvim.enable = false; # the theme looks terrible with catppuccin
 | 
						|
      illuminate.enable = true;
 | 
						|
      breadcrumbs = {
 | 
						|
        enable = isMaximal;
 | 
						|
        navbuddy.enable = isMaximal;
 | 
						|
      };
 | 
						|
      smartcolumn = {
 | 
						|
        enable = true;
 | 
						|
        setupOpts.custom_colorcolumn = {
 | 
						|
          # this is a freeform module, it's `buftype = int;` for configuring column position
 | 
						|
          nix = "110";
 | 
						|
          ruby = "120";
 | 
						|
          java = "130";
 | 
						|
          go = ["90" "130"];
 | 
						|
        };
 | 
						|
      };
 | 
						|
      fastaction.enable = true;
 | 
						|
    };
 | 
						|
 | 
						|
    assistant = {
 | 
						|
      chatgpt.enable = false;
 | 
						|
      copilot = {
 | 
						|
        enable = false;
 | 
						|
        cmp.enable = isMaximal;
 | 
						|
      };
 | 
						|
      codecompanion-nvim.enable = false;
 | 
						|
      avante-nvim.enable = isMaximal;
 | 
						|
    };
 | 
						|
 | 
						|
    session = {
 | 
						|
      nvim-session-manager.enable = false;
 | 
						|
    };
 | 
						|
 | 
						|
    gestures = {
 | 
						|
      gesture-nvim.enable = false;
 | 
						|
    };
 | 
						|
 | 
						|
    comments = {
 | 
						|
      comment-nvim.enable = true;
 | 
						|
    };
 | 
						|
 | 
						|
    presence = {
 | 
						|
      neocord.enable = false;
 | 
						|
    };
 | 
						|
  };
 | 
						|
}
 |