mirror of
https://github.com/davegallant/nix-config
synced 2025-10-06 16:46:00 +00:00
Migrate to nixvim
This commit is contained in:
237
home/default.nix
237
home/default.nix
@@ -377,38 +377,215 @@ in {
|
||||
enableZshIntegration = true;
|
||||
};
|
||||
|
||||
neovim = {
|
||||
nixvim = {
|
||||
enable = true;
|
||||
viAlias = true;
|
||||
vimAlias = true;
|
||||
|
||||
# home-manager doesn't yet support `init.lua`
|
||||
extraConfig = "lua require('init')";
|
||||
|
||||
plugins = with pkgs.vimPlugins; [
|
||||
cmp-nvim-lsp
|
||||
cmp-path
|
||||
cmp-treesitter
|
||||
diffview-nvim
|
||||
git-blame-nvim
|
||||
gitsigns-nvim
|
||||
gruvbox-nvim
|
||||
lualine-nvim
|
||||
luasnip
|
||||
nvim-cmp
|
||||
colorschemes.gruvbox.enable = true;
|
||||
plugins = {
|
||||
cmp-path.enable = true;
|
||||
cmp-treesitter.enable = true;
|
||||
commentary.enable = true;
|
||||
diffview.enable = true;
|
||||
gitblame.enable = true;
|
||||
gitsigns.enable = true;
|
||||
lualine.enable = true;
|
||||
nvim-cmp.enable = true;
|
||||
rainbow-delimiters.enable = true;
|
||||
treesitter.enable = true;
|
||||
telescope = {
|
||||
enable = true;
|
||||
defaults = {
|
||||
layout_strategy = "vertical";
|
||||
layout_config = {
|
||||
vertical = {
|
||||
width = 0.9;
|
||||
};
|
||||
};
|
||||
};
|
||||
package = pkgs.vimPlugins.telescope-fzy-native-nvim;
|
||||
keymaps = {
|
||||
"<leader>ff" = {
|
||||
action = "git_files";
|
||||
desc = "Telescope Git Files";
|
||||
};
|
||||
"<leader>fg" = "live_grep";
|
||||
};
|
||||
keymapsSilent = true;
|
||||
};
|
||||
};
|
||||
extraPlugins = with pkgs.vimPlugins; [
|
||||
nvim-lspconfig
|
||||
nvim-tree-lua
|
||||
nvim-treesitter.withAllGrammars
|
||||
nvim-ts-rainbow
|
||||
nvim-web-devicons
|
||||
plenary-nvim
|
||||
telescope-fzy-native-nvim
|
||||
vim-commentary
|
||||
vim-markdown
|
||||
vim-repeat
|
||||
vim-sneak
|
||||
vim-surround
|
||||
];
|
||||
options = {
|
||||
autoindent = true;
|
||||
backup = false;
|
||||
belloff = "all";
|
||||
completeopt = [
|
||||
"menuone"
|
||||
"noselect"
|
||||
];
|
||||
cursorline = true;
|
||||
expandtab = true;
|
||||
fillchars = {
|
||||
diff = "∙";
|
||||
eob = " ";
|
||||
vert = "┃";
|
||||
};
|
||||
hlsearch = true;
|
||||
ignorecase = true;
|
||||
incsearch = true;
|
||||
modelines = 5;
|
||||
mouse = "a";
|
||||
number = true;
|
||||
pumblend = 10;
|
||||
scrolloff = 3;
|
||||
shell = "bash";
|
||||
shiftround = false;
|
||||
shiftwidth = 2;
|
||||
showbreak = "↳ ";
|
||||
showcmd = true;
|
||||
sidescroll = 0;
|
||||
sidescrolloff = 3;
|
||||
smartcase = true;
|
||||
smarttab = true;
|
||||
spellcapcheck = "";
|
||||
splitbelow = true;
|
||||
splitright = true;
|
||||
swapfile = false;
|
||||
switchbuf = "usetab";
|
||||
tabstop = 2;
|
||||
termguicolors = true;
|
||||
wildmenu = true;
|
||||
};
|
||||
|
||||
extraConfigLua = ''
|
||||
-- Format JSON
|
||||
vim.cmd([[command! JsonFormat execute "::%!jq '.'"]])
|
||||
|
||||
-- Tab shortcuts
|
||||
vim.api.nvim_set_keymap("n", "<C-n>", "<cmd>tabnew<cr>", { noremap = true })
|
||||
|
||||
-- Copy to OS clipboard
|
||||
vim.api.nvim_set_keymap("v", "<leader>y", '"+y', { noremap = true })
|
||||
|
||||
-- Folding
|
||||
vim.api.nvim_set_keymap("n", "<space>", "za", { silent = true, noremap = true })
|
||||
|
||||
-- Remember line number
|
||||
vim.cmd([[au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$") | exe "normal! g`\"" | endif]])
|
||||
|
||||
-- Replace visual selection
|
||||
vim.cmd([[vnoremap <C-r> "hy:%s/<C-r>h//g<left><left>]])
|
||||
|
||||
-- Indent YAML
|
||||
vim.cmd([[au FileType yaml setlocal ts=2 sts=2 sw=2 expandtab]])
|
||||
|
||||
-- Indent Python
|
||||
vim.cmd([[au BufNewFile,BufRead *.py set tabstop=4 softtabstop=4 shiftwidth=4 textwidth=79 expandtab autoindent fileformat=unix]])
|
||||
|
||||
-- Highlight whitespace
|
||||
vim.cmd([[highlight ExtraWhitespace ctermbg=red guibg=red]])
|
||||
vim.cmd([[match ExtraWhitespace /\s\+$/]])
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
-- LSP {{{1 -------------------------------------------------------------------
|
||||
-------------------------------------------------------------------------------
|
||||
-- See `:help vim.lsp.*` for documentation on any of the below functions
|
||||
|
||||
local opts = { noremap=true, silent=true }
|
||||
vim.api.nvim_set_keymap('n', 'gD', '<cmd>lua vim.lsp.buf.declaration()<CR>', opts)
|
||||
vim.api.nvim_set_keymap('n', 'gd', '<cmd>lua vim.lsp.buf.definition()<CR>', opts)
|
||||
vim.api.nvim_set_keymap('n', 'K', '<cmd>lua vim.lsp.buf.hover()<CR>', opts)
|
||||
vim.api.nvim_set_keymap('n', 'gi', '<cmd>lua vim.lsp.buf.implementation()<CR>', opts)
|
||||
vim.api.nvim_set_keymap('n', 'gr', '<cmd>lua vim.lsp.buf.references()<CR>', opts)
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
-- completion {{{1 -------------------------------------------------------------------
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
local has_words_before = function()
|
||||
local line, col = unpack(vim.api.nvim_win_get_cursor(0))
|
||||
return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil
|
||||
end
|
||||
|
||||
local cmp = require("cmp")
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
-- lsp {{{1 -------------------------------------------------------------------
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
local lspconfig = require "lspconfig"
|
||||
|
||||
lspconfig.ansiblels.setup({
|
||||
capabilities = capabilities,
|
||||
cmd = {os.getenv("HOME") .. "/.npm-packages/bin/ansible-language-server", "--stdio"};
|
||||
})
|
||||
|
||||
lspconfig.bashls.setup({
|
||||
capabilities = capabilities,
|
||||
})
|
||||
|
||||
lspconfig.gopls.setup({
|
||||
capabilities = capabilities,
|
||||
})
|
||||
|
||||
|
||||
lspconfig.pyright.setup({
|
||||
capabilities = capabilities,
|
||||
})
|
||||
|
||||
lspconfig.rls.setup({
|
||||
capabilities = capabilities,
|
||||
})
|
||||
|
||||
lspconfig.rnix.setup({
|
||||
capabilities = capabilities,
|
||||
})
|
||||
|
||||
lspconfig.solargraph.setup({
|
||||
capabilities = capabilities,
|
||||
})
|
||||
|
||||
lspconfig.terraformls.setup({
|
||||
filetypes={"terraform","tf","hcl"},
|
||||
capabilities = capabilities,
|
||||
})
|
||||
|
||||
lspconfig.tflint.setup({
|
||||
capabilities = capabilities,
|
||||
})
|
||||
|
||||
lspconfig.yamlls.setup({
|
||||
capabilities = capabilities,
|
||||
})
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
-- Plugins {{{1 ---------------------------------------------------------------
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
-- status line
|
||||
require("lualine").setup({
|
||||
options = {
|
||||
theme = "gruvbox",
|
||||
},
|
||||
})
|
||||
|
||||
-- folding
|
||||
vim.api.nvim_exec(
|
||||
[[
|
||||
set foldmethod=expr
|
||||
set foldlevel=20
|
||||
set nofoldenable
|
||||
set foldexpr=nvim_treesitter#foldexpr()
|
||||
]],
|
||||
true
|
||||
)
|
||||
|
||||
-- vim-prettier
|
||||
vim.g["prettier#autoformat"] = 1
|
||||
|
||||
-- git-blame
|
||||
vim.g.gitblame_enabled = 1
|
||||
'';
|
||||
};
|
||||
|
||||
vscode = {
|
||||
@@ -455,7 +632,7 @@ in {
|
||||
};
|
||||
|
||||
home.file = {
|
||||
".config/nvim/lua".source = ./nvim/lua;
|
||||
# ".config/nvim/lua".source = ./nvim/lua;
|
||||
".aws/config".source = ./.aws/config;
|
||||
};
|
||||
}
|
||||
|
Reference in New Issue
Block a user