nixos-config/modules/editors/nvim/default.nix

156 lines
5.0 KiB
Nix
Raw Normal View History

2022-09-17 16:50:50 +02:00
#
# Neovim
#
{ pkgs, ... }:
{
programs = {
neovim = {
enable = true;
viAlias = true;
vimAlias = true;
2022-10-22 16:31:30 +02:00
vimdiffAlias = true;
#withNodeJS = true;
2022-09-17 16:50:50 +02:00
plugins = with pkgs.vimPlugins; [
# Syntax
#vim-nix
#vim-markdown
2022-09-17 16:50:50 +02:00
# Quality of life
vim-lastplace # Opens document where you left it
auto-pairs # Print double quotes/brackets/etc.
vim-gitgutter # See uncommitted changes of file :GitGutterEnable
# File Tree
2022-09-19 17:47:24 +02:00
nerdtree # File Manager - set in extraConfig to F6
2022-09-17 16:50:50 +02:00
# Customization
wombat256-vim # Color scheme for lightline
srcery-vim # Color scheme for text
lightline-vim # Info bar at bottom
2022-09-19 17:47:24 +02:00
indent-blankline-nvim # Indentation lines
# Syntax
nvim-treesitter.withAllGrammars
# finder
telescope-nvim
# completion
nvim-cmp
# status line
lualine-nvim
# indent
indent-blankline-nvim
];
extraPackages = with pkgs; [
ripgrep
fd
2022-09-17 16:50:50 +02:00
];
2022-10-22 16:31:30 +02:00
extraConfig = ''
set expandtab
set shiftwidth=4
set tabstop=4
'';
extraLuaConfig = ''
vim.g.mapleader = ' '
vim.g.maplocalleader = ' '
-- Set highlight on search
vim.o.hlsearch = false
-- Make line numbers default
vim.wo.number = true
-- Enable mouse mode
vim.o.mouse = 'a'
-- Sync clipboard between OS and Neovim.
-- Remove this option if you want your OS clipboard to remain independent.
-- See `:help 'clipboard'`
vim.o.clipboard = 'unnamedplus'
-- Enable break indent
vim.o.breakindent = true
-- Save undo history
vim.o.undofile = true
-- Case insensitive searching UNLESS /C or capital in search
vim.o.ignorecase = true
vim.o.smartcase = true
-- Keep signcolumn on by default
vim.wo.signcolumn = 'yes'
-- Decrease update time
vim.o.updatetime = 250
vim.o.timeout = true
vim.o.timeoutlen = 300
-- Set completeopt to have a better completion experience
vim.o.completeopt = 'menuone,noselect'
-- NOTE: You should make sure your terminal supports this
vim.o.termguicolors = true
-- [[ Highlight on yank ]]
-- See `:help vim.highlight.on_yank()`
local highlight_group = vim.api.nvim_create_augroup('YankHighlight', { clear = true })
vim.api.nvim_create_autocmd('TextYankPost', {
callback = function()
vim.highlight.on_yank()
end,
group = highlight_group,
pattern = '*',
})
-- [[ Configure Telescope ]]
-- See `:help telescope` and `:help telescope.setup()`
require('telescope').setup {
defaults = {
mappings = {
i = {
['<C-u>'] = false,
['<C-d>'] = false,
},
},
},
}
-- Enable telescope fzf native, if installed
pcall(require('telescope').load_extension, 'fzf')
-- See `:help telescope.builtin`
vim.keymap.set('n', '<leader>?', require('telescope.builtin').oldfiles, { desc = '[?] Find recently opened files' })
vim.keymap.set('n', '<leader><space>', require('telescope.builtin').buffers, { desc = '[ ] Find existing buffers' })
vim.keymap.set('n', '<leader>/', function()
-- You can pass additional configuration to telescope to change theme, layout, etc.
require('telescope.builtin').current_buffer_fuzzy_find(require('telescope.themes').get_dropdown {
winblend = 10,
previewer = false,
})
end, { desc = '[/] Fuzzily search in current buffer' })
vim.keymap.set('n', '<leader>gf', require('telescope.builtin').git_files, { desc = 'Search [G]it [F]iles' })
vim.keymap.set('n', '<leader>sf', require('telescope.builtin').find_files, { desc = '[S]earch [F]iles' })
vim.keymap.set('n', '<leader>sh', require('telescope.builtin').help_tags, { desc = '[S]earch [H]elp' })
vim.keymap.set('n', '<leader>sw', require('telescope.builtin').grep_string, { desc = '[S]earch current [W]ord' })
vim.keymap.set('n', '<leader>sg', require('telescope.builtin').live_grep, { desc = '[S]earch by [G]rep' })
vim.keymap.set('n', '<leader>sd', require('telescope.builtin').diagnostics, { desc = '[S]earch [D]iagnostics' })
require("indent_blankline").setup {
-- for example, context is off by default, use this to turn it on
show_current_context = true,
show_current_context_start = true,
}
2022-10-22 16:31:30 +02:00
'';
2022-09-17 16:50:50 +02:00
};
};
}