Initial import
This commit is contained in:
commit
a40e6a9735
57 changed files with 2634 additions and 0 deletions
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
.DS_Store
|
1
config/nvim/after/ftplugin/NvimTree.vim
Normal file
1
config/nvim/after/ftplugin/NvimTree.vim
Normal file
|
@ -0,0 +1 @@
|
|||
setlocal signcolumn=no
|
6
config/nvim/after/ftplugin/elixir.vim
Normal file
6
config/nvim/after/ftplugin/elixir.vim
Normal file
|
@ -0,0 +1,6 @@
|
|||
setlocal comments=:#
|
||||
setlocal commentstring=#\ %s
|
||||
|
||||
setlocal spell
|
||||
setlocal textwidth=120
|
||||
setlocal colorcolumn=+1
|
1
config/nvim/after/ftplugin/erlang.vim
Normal file
1
config/nvim/after/ftplugin/erlang.vim
Normal file
|
@ -0,0 +1 @@
|
|||
iabbrev <buffer> <= =<
|
2
config/nvim/after/ftplugin/gitcommit.vim
Normal file
2
config/nvim/after/ftplugin/gitcommit.vim
Normal file
|
@ -0,0 +1,2 @@
|
|||
setlocal spell
|
||||
setlocal colorcolumn=+1
|
6
config/nvim/after/ftplugin/list.vim
Normal file
6
config/nvim/after/ftplugin/list.vim
Normal file
|
@ -0,0 +1,6 @@
|
|||
setlocal nonumber norelativenumber
|
||||
|
||||
nnoremap <buffer> <silent> <esc> :q!<CR>
|
||||
nnoremap <buffer> <silent> q :q!<CR>
|
||||
|
||||
let b:toggle_line_style = v:false
|
3
config/nvim/after/ftplugin/make.vim
Normal file
3
config/nvim/after/ftplugin/make.vim
Normal file
|
@ -0,0 +1,3 @@
|
|||
setlocal noexpandtab
|
||||
setlocal shiftwidth=2
|
||||
setlocal softtabstop=0
|
1
config/nvim/after/ftplugin/markdown.vim
Normal file
1
config/nvim/after/ftplugin/markdown.vim
Normal file
|
@ -0,0 +1 @@
|
|||
setlocal spell
|
1
config/nvim/after/ftplugin/pandoc.vim
Normal file
1
config/nvim/after/ftplugin/pandoc.vim
Normal file
|
@ -0,0 +1 @@
|
|||
setlocal spell
|
6
config/nvim/after/ftplugin/qf.vim
Normal file
6
config/nvim/after/ftplugin/qf.vim
Normal file
|
@ -0,0 +1,6 @@
|
|||
setlocal nonumber norelativenumber
|
||||
|
||||
nnoremap <buffer> <silent> <esc> :q!<CR>
|
||||
nnoremap <buffer> <silent> q :q!<CR>
|
||||
|
||||
let b:toggle_line_style = v:false
|
1
config/nvim/after/ftplugin/text.vim
Normal file
1
config/nvim/after/ftplugin/text.vim
Normal file
|
@ -0,0 +1 @@
|
|||
setlocal spell
|
36
config/nvim/after/queries/elixir/matchup.scm
Normal file
36
config/nvim/after/queries/elixir/matchup.scm
Normal file
|
@ -0,0 +1,36 @@
|
|||
; Function definition
|
||||
(call target: ((identifier) @open.def (#any-of? @open.def "def" "defp"))
|
||||
(do_block
|
||||
[(rescue_block "rescue" @mid.def.1)
|
||||
(catch_block "catch" @mid.def.2)]?
|
||||
"end" @close.def)) @scope.def
|
||||
|
||||
; case/cond clause
|
||||
(call target: ((identifier) @open.case (#any-of? @open.case "case" "cond"))
|
||||
(do_block
|
||||
"end" @close.case)) @scope.case
|
||||
|
||||
; if/with clause
|
||||
(call target: ((identifier) @open.if (#any-of? @open.if "if" "with"))
|
||||
(do_block
|
||||
(else_block "else" @mid.else.1)?
|
||||
"end" @close.if)) @scope.if
|
||||
|
||||
; try clause
|
||||
(call target: ((identifier) @open.try (#eq? @open.try "try"))
|
||||
(do_block
|
||||
[(rescue_block "rescue" @mid.try.1)
|
||||
(catch_block "catch" @mid.try.2)
|
||||
(after_block "after" @mid.try.3)]?
|
||||
"end" @close.try)) @scope.try
|
||||
|
||||
; receive clause
|
||||
(call target: ((identifier) @open.receive (#eq? @open.receive "receive"))
|
||||
(do_block
|
||||
(after_block "after" @mid.receive.1)?
|
||||
"end" @close.receive)) @scope.receive
|
||||
|
||||
; for comprehension
|
||||
(call target: ((identifier) @open.for (#eq? @open.for "for"))
|
||||
(do_block
|
||||
"end" @close.for)) @scope.for
|
78
config/nvim/efm.yml
Normal file
78
config/nvim/efm.yml
Normal file
|
@ -0,0 +1,78 @@
|
|||
version: 2
|
||||
root-markers:
|
||||
- .git/
|
||||
- flake.nix
|
||||
lint-debounce: '200ms'
|
||||
|
||||
tools:
|
||||
dockerfile-hadolint: &dockerfile-hadolint
|
||||
lint-command: 'efm-hadolint'
|
||||
lint-formats:
|
||||
- '%f:%l:%trror: %m'
|
||||
- '%f:%l:%tarning: %m'
|
||||
- '%f:%l:%tnfo: %m'
|
||||
- '%f:%l:%ttyle: %m'
|
||||
|
||||
elixir-credo: &elixir-credo
|
||||
lint-command: >
|
||||
mix credo suggest --all-priorities --format flycheck --read-from-stdin ${INPUT} |
|
||||
sed "s/ R:/ H:/; s/ D:/ I:/; s/ C:/ W:/"
|
||||
lint-stdin: true
|
||||
lint-formats:
|
||||
- '%f:%l:%c: %t: %m'
|
||||
- '%f:%l: %t: %m'
|
||||
root-markers:
|
||||
- mix.lock
|
||||
- mix.exs
|
||||
|
||||
eruby-erb: &eruby-erb
|
||||
lint-command: 'erb -x -T - | ruby -c'
|
||||
lint-stdin: true
|
||||
lint-offset: 1
|
||||
|
||||
fish-indent: &fish-indent
|
||||
format-command: 'fish_indent'
|
||||
format-stdin: true
|
||||
|
||||
javascript-eslint: &javascript-eslint
|
||||
lint-command: 'eslint_d -f visualstudio --stdin --stdin-filename ${INPUT}'
|
||||
lint-ignore-exit-code: true
|
||||
lint-stdin: true
|
||||
lint-formats:
|
||||
- "%f(%l,%c): %tarning %m"
|
||||
- "%f(%l,%c): %rror %m"
|
||||
format-command: 'eslint_d --fix-to-stdout --stdin --stdin-filename=${INPUT}'
|
||||
format-stdin: true
|
||||
root-markers:
|
||||
- .eslintrc.js
|
||||
|
||||
sh-shfmt: &sh-shfmt
|
||||
format-command: 'shfmt -i 2'
|
||||
format-stdin: true
|
||||
|
||||
sh-shellcheck: &sh-shellcheck
|
||||
lint-command: 'shellcheck -f gcc -x'
|
||||
lint-formats:
|
||||
- '%f:%l:%c: %trror: %m'
|
||||
- '%f:%l:%c: %tarning: %m'
|
||||
- '%f:%l:%c: %tote: %m'
|
||||
|
||||
languages:
|
||||
dockerfile:
|
||||
- <<: *dockerfile-hadolint
|
||||
|
||||
elixir:
|
||||
- <<: *elixir-credo
|
||||
|
||||
eruby:
|
||||
- <<: *eruby-erb
|
||||
|
||||
fish:
|
||||
- <<: *fish-indent
|
||||
|
||||
javascript:
|
||||
- <<: *javascript-eslint
|
||||
|
||||
sh:
|
||||
- <<: *sh-shellcheck
|
||||
- <<: *sh-shfmt
|
5
config/nvim/lua/nifoc/config/autopairs.lua
Normal file
5
config/nvim/lua/nifoc/config/autopairs.lua
Normal file
|
@ -0,0 +1,5 @@
|
|||
local npairs = require('nvim-autopairs')
|
||||
|
||||
npairs.setup({
|
||||
check_ts = true,
|
||||
})
|
5
config/nvim/lua/nifoc/config/bufferline.lua
Normal file
5
config/nvim/lua/nifoc/config/bufferline.lua
Normal file
|
@ -0,0 +1,5 @@
|
|||
require('bufferline').setup{
|
||||
options = {
|
||||
show_close_icon = false,
|
||||
}
|
||||
}
|
7
config/nvim/lua/nifoc/config/colorizer.lua
Normal file
7
config/nvim/lua/nifoc/config/colorizer.lua
Normal file
|
@ -0,0 +1,7 @@
|
|||
require('colorizer').setup {
|
||||
'css';
|
||||
'html';
|
||||
'lua';
|
||||
'svelte';
|
||||
'vim'
|
||||
}
|
3
config/nvim/lua/nifoc/config/comments.lua
Normal file
3
config/nvim/lua/nifoc/config/comments.lua
Normal file
|
@ -0,0 +1,3 @@
|
|||
require('Comment').setup {
|
||||
padding = true,
|
||||
}
|
132
config/nvim/lua/nifoc/config/completion.lua
Normal file
132
config/nvim/lua/nifoc/config/completion.lua
Normal file
|
@ -0,0 +1,132 @@
|
|||
local cmp = require('cmp')
|
||||
local luasnip = require('luasnip')
|
||||
local lspkind = require('lspkind')
|
||||
local cmp_autopairs = require('nvim-autopairs.completion.cmp')
|
||||
|
||||
-- Helper functions
|
||||
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
|
||||
|
||||
cmp.setup {
|
||||
sources = cmp.config.sources({
|
||||
{ name = 'nvim_lsp' },
|
||||
{ name = 'luasnip' },
|
||||
{ name = 'nvim_lua' },
|
||||
}, {
|
||||
{ name = 'treesitter' },
|
||||
{ name = 'buffer' },
|
||||
{ name = 'path' },
|
||||
}),
|
||||
|
||||
mapping = {
|
||||
['<C-e>'] = cmp.mapping({
|
||||
i = cmp.mapping.abort(),
|
||||
c = cmp.mapping.close(),
|
||||
}),
|
||||
|
||||
['<Tab>'] = cmp.mapping({
|
||||
c = function()
|
||||
if cmp.visible() then
|
||||
cmp.select_next_item({ behavior = cmp.SelectBehavior.Insert })
|
||||
else
|
||||
cmp.complete()
|
||||
end
|
||||
end,
|
||||
|
||||
i = function(fallback)
|
||||
if cmp.visible() then
|
||||
cmp.select_next_item()
|
||||
elseif luasnip.expand_or_jumpable() then
|
||||
luasnip.expand_or_jump()
|
||||
elseif has_words_before() then
|
||||
cmp.complete()
|
||||
else
|
||||
fallback()
|
||||
end
|
||||
end,
|
||||
|
||||
s = function(fallback)
|
||||
if cmp.visible() then
|
||||
cmp.select_next_item()
|
||||
elseif luasnip.expand_or_jumpable() then
|
||||
luasnip.expand_or_jump()
|
||||
elseif has_words_before() then
|
||||
cmp.complete()
|
||||
else
|
||||
fallback()
|
||||
end
|
||||
end,
|
||||
}),
|
||||
|
||||
['<S-Tab>'] = cmp.mapping({
|
||||
c = function()
|
||||
if cmp.visible() then
|
||||
cmp.select_prev_item({ behavior = cmp.SelectBehavior.Insert })
|
||||
else
|
||||
cmp.complete()
|
||||
end
|
||||
end,
|
||||
|
||||
i = function(fallback)
|
||||
if cmp.visible() then
|
||||
cmp.select_prev_item()
|
||||
elseif luasnip.jumpable(-1) then
|
||||
luasnip.jump(-1)
|
||||
else
|
||||
fallback()
|
||||
end
|
||||
end,
|
||||
|
||||
s = function(fallback)
|
||||
if cmp.visible() then
|
||||
cmp.select_prev_item()
|
||||
elseif luasnip.jumpable(-1) then
|
||||
luasnip.jump(-1)
|
||||
else
|
||||
fallback()
|
||||
end
|
||||
end,
|
||||
}),
|
||||
|
||||
['<CR>'] = cmp.mapping.confirm({ select = true }),
|
||||
},
|
||||
|
||||
completion = {
|
||||
keyword_length = 2,
|
||||
completeopt = 'menu,menuone,noinsert',
|
||||
},
|
||||
|
||||
documentation = {
|
||||
border = { '╭', '─', '╮', '│', '╯', '─', '╰', '│' },
|
||||
},
|
||||
|
||||
snippet = {
|
||||
expand = function(args)
|
||||
luasnip.lsp_expand(args.body)
|
||||
end
|
||||
},
|
||||
|
||||
formatting = {
|
||||
format = lspkind.cmp_format(),
|
||||
},
|
||||
}
|
||||
|
||||
cmp.setup.cmdline('/', {
|
||||
sources = cmp.config.sources({
|
||||
{ name = 'nvim_lsp_document_symbol' }
|
||||
}, {
|
||||
{ name = 'buffer' }
|
||||
})
|
||||
})
|
||||
|
||||
cmp.setup.cmdline(':', {
|
||||
sources = cmp.config.sources({
|
||||
{ name = 'path' }
|
||||
}, {
|
||||
{ name = 'cmdline' }
|
||||
})
|
||||
})
|
||||
|
||||
cmp.event:on('confirm_done', cmp_autopairs.on_confirm_done())
|
5
config/nvim/lua/nifoc/config/cursorline.lua
Normal file
5
config/nvim/lua/nifoc/config/cursorline.lua
Normal file
|
@ -0,0 +1,5 @@
|
|||
vim.cmd('augroup nifoc_cusorline')
|
||||
vim.cmd('autocmd!')
|
||||
vim.cmd('autocmd FileType TelescopePrompt setlocal nocursorline')
|
||||
vim.cmd('autocmd FileType NvimTree let b:auto_cursorline_disabled = 1')
|
||||
vim.cmd('augroup end')
|
3
config/nvim/lua/nifoc/config/fterm.lua
Normal file
3
config/nvim/lua/nifoc/config/fterm.lua
Normal file
|
@ -0,0 +1,3 @@
|
|||
require('FTerm').setup {
|
||||
border = { '╭', '─', '╮', '│', '╯', '─', '╰', '│' }
|
||||
}
|
24
config/nvim/lua/nifoc/config/gitsigns.lua
Normal file
24
config/nvim/lua/nifoc/config/gitsigns.lua
Normal file
|
@ -0,0 +1,24 @@
|
|||
local ns = require('nifoc.utils.statusline')
|
||||
|
||||
--local theme_config = require('tokyonight.config')
|
||||
--local theme_colors = require('tokyonight.colors').setup(theme_config)
|
||||
|
||||
--vim.cmd('highlight GitSignsStatuslineAdd guifg=' .. theme_colors.git.add .. ' guibg=#3b4261')
|
||||
--vim.cmd('highlight GitSignsStatuslineChange guifg=' .. theme_colors.git.change .. ' guibg=#3b4261')
|
||||
--vim.cmd('highlight GitSignsStatuslineDelete guifg=' .. theme_colors.red .. ' guibg=#3b4261')
|
||||
|
||||
require('gitsigns').setup {
|
||||
signs = {
|
||||
add = {hl = 'GitSignsAdd', text = '│', numhl='GitSignsAddNr', linehl='GitSignsAddLn'},
|
||||
change = {hl = 'GitSignsChange', text = '│', numhl='GitSignsChangeNr', linehl='GitSignsChangeLn'},
|
||||
delete = {hl = 'GitSignsDelete', text = '_', numhl='GitSignsDeleteNr', linehl='GitSignsDeleteLn'},
|
||||
topdelete = {hl = 'GitSignsDelete', text = '‾', numhl='GitSignsDeleteNr', linehl='GitSignsDeleteLn'},
|
||||
changedelete = {hl = 'GitSignsChange', text = '~', numhl='GitSignsChangeNr', linehl='GitSignsChangeLn'},
|
||||
},
|
||||
numhl = false,
|
||||
linehl = false,
|
||||
status_formatter = ns.gitsigns_formatter,
|
||||
diff_opts = {
|
||||
internal = true,
|
||||
},
|
||||
}
|
6
config/nvim/lua/nifoc/config/illuminate.lua
Normal file
6
config/nvim/lua/nifoc/config/illuminate.lua
Normal file
|
@ -0,0 +1,6 @@
|
|||
vim.g.Illuminate_ftblacklist = {
|
||||
'minimap',
|
||||
'netrw',
|
||||
'NvimTree',
|
||||
'packer',
|
||||
}
|
25
config/nvim/lua/nifoc/config/indent_line.lua
Normal file
25
config/nvim/lua/nifoc/config/indent_line.lua
Normal file
|
@ -0,0 +1,25 @@
|
|||
require('indent_blankline').setup {
|
||||
char = '¦',
|
||||
show_first_indent_level = false,
|
||||
use_treesitter = true,
|
||||
show_current_context = true,
|
||||
|
||||
context_patterns = {
|
||||
'class',
|
||||
'function',
|
||||
'method',
|
||||
'do_block',
|
||||
'stab_clause',
|
||||
},
|
||||
|
||||
buftype_exclude = {
|
||||
'help',
|
||||
'nofile',
|
||||
'terminal',
|
||||
},
|
||||
|
||||
filetype_exclude = {
|
||||
'minimap',
|
||||
'packer',
|
||||
},
|
||||
}
|
184
config/nvim/lua/nifoc/config/lsp.lua
Normal file
184
config/nvim/lua/nifoc/config/lsp.lua
Normal file
|
@ -0,0 +1,184 @@
|
|||
local lsp = require('lspconfig')
|
||||
local lsp_status = require('lsp-status')
|
||||
local illuminate = require('illuminate')
|
||||
local keymap = require('nifoc.keymap')
|
||||
|
||||
local function enable_lsp_fixer(_)
|
||||
vim.cmd [[
|
||||
augroup nifoc_lsp_formatting
|
||||
autocmd! * <buffer>
|
||||
autocmd BufWritePre <buffer> lua vim.lsp.buf.formatting_sync(nil, 1000)
|
||||
augroup end
|
||||
]]
|
||||
end
|
||||
|
||||
local function custom_attach(client, bufnr)
|
||||
-- Plugin attachments
|
||||
lsp_status.on_attach(client)
|
||||
keymap.lsp_attach(client, bufnr)
|
||||
|
||||
if client.resolved_capabilities.document_highlight then
|
||||
illuminate.on_attach(client)
|
||||
end
|
||||
|
||||
if vim.b.nifoc_lsp_enabled == nil then
|
||||
vim.api.nvim_buf_set_var(bufnr, 'nifoc_lsp_enabled', 1)
|
||||
vim.cmd("setlocal omnifunc=v:lua.vim.lsp.omnifunc")
|
||||
end
|
||||
|
||||
if client.resolved_capabilities.document_formatting and vim.b.nifoc_fixer_enabled == nil then
|
||||
vim.api.nvim_buf_set_var(bufnr, 'nifoc_fixer_enabled', 1)
|
||||
|
||||
enable_lsp_fixer(client)
|
||||
end
|
||||
|
||||
vim.api.nvim_command('doautocmd <nomodeline> User NifocLspAttached')
|
||||
end
|
||||
|
||||
-- Setup
|
||||
|
||||
vim.cmd('sign define LspDiagnosticsSignError text= texthl=LspDiagnosticsSignError linehl= numhl=')
|
||||
vim.cmd('sign define LspDiagnosticsSignWarning text= texthl=LspDiagnosticsSignWarning linehl= numhl=')
|
||||
vim.cmd('sign define LspDiagnosticsSignInformation text= texthl=LspDiagnosticsSignInformation linehl= numhl=')
|
||||
vim.cmd('sign define LspDiagnosticsSignHint text= texthl=LspDiagnosticsSignHint linehl= numhl=')
|
||||
|
||||
vim.lsp.handlers["textDocument/publishDiagnostics"] = vim.lsp.with(
|
||||
vim.lsp.diagnostic.on_publish_diagnostics, {
|
||||
underline = true,
|
||||
virtual_text = {
|
||||
prefix = '■ ',
|
||||
spacing = 4,
|
||||
},
|
||||
signs = false,
|
||||
update_in_insert = false,
|
||||
}
|
||||
)
|
||||
|
||||
lsp_status.register_progress()
|
||||
|
||||
-- Default configuration
|
||||
|
||||
local capabilities = vim.lsp.protocol.make_client_capabilities()
|
||||
capabilities = require('cmp_nvim_lsp').update_capabilities(capabilities)
|
||||
capabilities = vim.tbl_extend('keep', capabilities, lsp_status.capabilities)
|
||||
|
||||
local flags = {
|
||||
allow_incremental_sync = true,
|
||||
debounce_text_changes = 700,
|
||||
}
|
||||
|
||||
local default_config = {
|
||||
on_attach = custom_attach,
|
||||
capabilities = capabilities,
|
||||
flags = flags,
|
||||
}
|
||||
|
||||
local default_servers = {
|
||||
'angularls',
|
||||
'bashls',
|
||||
'cssls',
|
||||
'dockerls',
|
||||
'html',
|
||||
'rnix',
|
||||
'sqls',
|
||||
'taplo',
|
||||
'yamlls'
|
||||
}
|
||||
|
||||
for _, name in ipairs(default_servers) do
|
||||
lsp[name].setup(default_config)
|
||||
end
|
||||
|
||||
-- Default configuration without formatting
|
||||
|
||||
local default_servers_no_formatting = {
|
||||
'tsserver'
|
||||
}
|
||||
|
||||
for _, name in ipairs(default_servers_no_formatting) do
|
||||
lsp[name].setup(vim.tbl_extend('force', default_config, {
|
||||
on_attach = function(client, bufnr)
|
||||
client.resolved_capabilities.document_formatting = false
|
||||
custom_attach(client, bufnr)
|
||||
end,
|
||||
}))
|
||||
end
|
||||
|
||||
-- Custom configuration
|
||||
|
||||
lsp.elixirls.setup(vim.tbl_extend('force', default_config, {
|
||||
cmd = { 'elixir-ls' },
|
||||
}))
|
||||
|
||||
lsp.jsonls.setup(vim.tbl_extend('force', default_config, {
|
||||
cmd = { 'vscode-json-language-server', '--stdio' },
|
||||
}))
|
||||
|
||||
lsp.solargraph.setup(vim.tbl_extend('force', default_config, {
|
||||
settings = {
|
||||
solargraph = {
|
||||
diagnostics = true,
|
||||
},
|
||||
},
|
||||
}))
|
||||
|
||||
lsp.sumneko_lua.setup(vim.tbl_extend('force', default_config, {
|
||||
cmd = {
|
||||
vim.fn.globpath('~', 'Code/LSP/lua/bin/macOS/lua-language-server'),
|
||||
'-E',
|
||||
vim.fn.globpath('~', 'Code/LSP/lua/main.lua')
|
||||
},
|
||||
root_dir = lsp.util.root_pattern("init.vim", "init.lua", ".git") or vim.loop.os_homedir(),
|
||||
settings = {
|
||||
Lua = {
|
||||
runtime = {
|
||||
version = 'LuaJIT',
|
||||
path = vim.split(package.path, ';'),
|
||||
},
|
||||
diagnostics = {
|
||||
globals = {'vim', 'use'},
|
||||
},
|
||||
workspace = {
|
||||
library = {
|
||||
[vim.fn.expand('$VIMRUNTIME/lua')] = true,
|
||||
[vim.fn.expand('$VIMRUNTIME/lua/vim/lsp')] = true,
|
||||
},
|
||||
},
|
||||
telemetry = {enable = false},
|
||||
},
|
||||
},
|
||||
}))
|
||||
|
||||
-- Try to start efm as the last language server
|
||||
|
||||
lsp.efm.setup(vim.tbl_extend('force', default_config, {
|
||||
cmd = {
|
||||
'efm-langserver',
|
||||
'-c',
|
||||
vim.fn.globpath('~', '.config/nvim/efm.yml'),
|
||||
},
|
||||
filetypes = {
|
||||
'dockerfile',
|
||||
'elixir',
|
||||
'fish',
|
||||
'javascript',
|
||||
'sh',
|
||||
},
|
||||
on_attach = function(client, bufnr)
|
||||
local disable_formatter_ft = { 'dockerfile', 'elixir' }
|
||||
local slow_ft = {}
|
||||
|
||||
if vim.tbl_contains(disable_formatter_ft, vim.bo.filetype) then
|
||||
client.resolved_capabilities.document_formatting = false
|
||||
end
|
||||
|
||||
if vim.tbl_contains(slow_ft, vim.bo.filetype) then
|
||||
client.resolved_capabilities.text_document_did_change = vim.lsp.protocol.TextDocumentSyncKind.None
|
||||
end
|
||||
|
||||
client.resolved_capabilities.document_symbol = false
|
||||
client.resolved_capabilities.workspace_symbol = false
|
||||
|
||||
custom_attach(client, bufnr)
|
||||
end,
|
||||
}))
|
7
config/nvim/lua/nifoc/config/lsp_trouble.lua
Normal file
7
config/nvim/lua/nifoc/config/lsp_trouble.lua
Normal file
|
@ -0,0 +1,7 @@
|
|||
require('trouble').setup {
|
||||
action_keys = {
|
||||
previous = "<Up>",
|
||||
next = "<Down>",
|
||||
},
|
||||
use_lsp_diagnostic_signs = true
|
||||
}
|
37
config/nvim/lua/nifoc/config/lualine.lua
Normal file
37
config/nvim/lua/nifoc/config/lualine.lua
Normal file
|
@ -0,0 +1,37 @@
|
|||
local ns = require('nifoc.utils.statusline')
|
||||
|
||||
--local theme_config = require('tokyonight.config')
|
||||
--local theme_colors = require('tokyonight.colors').setup(theme_config)
|
||||
|
||||
require('lualine').setup {
|
||||
options = {
|
||||
theme = 'dracula-nvim',
|
||||
-- section_separators = {'', ''},
|
||||
section_separators = '',
|
||||
-- component_separators = {'', ''},
|
||||
component_separators = '|',
|
||||
icons_enabled = true,
|
||||
},
|
||||
|
||||
sections = {
|
||||
lualine_a = {'mode'},
|
||||
lualine_b = {
|
||||
'b:gitsigns_status',
|
||||
{
|
||||
'diagnostics',
|
||||
sources = {'nvim_lsp'},
|
||||
--color_error = {fg =theme_colors.error},
|
||||
--color_warn = {fg = theme_colors.warning},
|
||||
--color_info = {fg = theme_colors.info},
|
||||
symbols = {error = ' ', warn = ' ', info = ' '}
|
||||
},
|
||||
},
|
||||
lualine_c = {ns.current_function},
|
||||
|
||||
lualine_x = {'filetype', ns.lsp_enabled, ns.treesitter_enabled, ns.fixer_enabled, ns.spell_enabled},
|
||||
lualine_y = {ns.current_line_percent},
|
||||
lualine_z = {ns.line_column},
|
||||
},
|
||||
|
||||
extensions = { 'nvim-tree' },
|
||||
}
|
5
config/nvim/lua/nifoc/config/matchup.lua
Normal file
5
config/nvim/lua/nifoc/config/matchup.lua
Normal file
|
@ -0,0 +1,5 @@
|
|||
vim.g.matchup_matchparen_deferred = true
|
||||
|
||||
vim.g.matchup_matchparen_offscreen = {
|
||||
method = 'popup',
|
||||
}
|
30
config/nvim/lua/nifoc/config/nvim_tree.lua
Normal file
30
config/nvim/lua/nifoc/config/nvim_tree.lua
Normal file
|
@ -0,0 +1,30 @@
|
|||
require('nvim-tree').setup {
|
||||
open_on_setup = false,
|
||||
auto_close = true,
|
||||
|
||||
update_cwd = true,
|
||||
update_focused_file = {
|
||||
enable = true,
|
||||
update_cwd = true
|
||||
},
|
||||
|
||||
git = {
|
||||
enable = true,
|
||||
ignore = true,
|
||||
timeout = 500,
|
||||
},
|
||||
}
|
||||
|
||||
vim.g.nvim_tree_quit_on_open = 0
|
||||
vim.g.nvim_tree_respect_buf_cwd = 1
|
||||
vim.g.nvim_tree_git_hl = 1
|
||||
vim.g.nvim_tree_show_icons = {
|
||||
git = 1,
|
||||
folders = 1,
|
||||
files = 1,
|
||||
}
|
||||
|
||||
vim.cmd('augroup nifoc_nvim_tree_telescope')
|
||||
vim.cmd('autocmd!')
|
||||
vim.cmd('autocmd User TelescopeFindPre NvimTreeClose')
|
||||
vim.cmd('augroup end')
|
17
config/nvim/lua/nifoc/config/project.lua
Normal file
17
config/nvim/lua/nifoc/config/project.lua
Normal file
|
@ -0,0 +1,17 @@
|
|||
require('project_nvim').setup {
|
||||
detection_methods = { "pattern", "lsp" },
|
||||
|
||||
patterns = {
|
||||
".git",
|
||||
"_darcs",
|
||||
".hg",
|
||||
".bzr",
|
||||
".svn",
|
||||
".gitlab-ci.yml",
|
||||
"flake.nix",
|
||||
"init.lua",
|
||||
"Makefile",
|
||||
"mix.exs",
|
||||
"package.json",
|
||||
},
|
||||
}
|
41
config/nvim/lua/nifoc/config/telescope.lua
Normal file
41
config/nvim/lua/nifoc/config/telescope.lua
Normal file
|
@ -0,0 +1,41 @@
|
|||
local telescope = require('telescope')
|
||||
local actions = require('telescope.actions')
|
||||
|
||||
telescope.setup {
|
||||
defaults = {
|
||||
prompt_prefix = ' ',
|
||||
selection_caret = ' ',
|
||||
set_env = { ['COLORTERM'] = 'truecolor' },
|
||||
|
||||
layout_strategy = 'horizontal',
|
||||
layout_config = {
|
||||
horizontal = {
|
||||
preview_width = 0.50,
|
||||
},
|
||||
},
|
||||
|
||||
path_display = {'smart', 'absolute'},
|
||||
|
||||
mappings = {
|
||||
i = {
|
||||
["<esc>"] = actions.close
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
extensions = {
|
||||
fzf = {
|
||||
fuzzy = true,
|
||||
override_generic_sorter = true,
|
||||
override_file_sorter = true,
|
||||
case_mode = 'smart_case',
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
telescope.load_extension('fzf')
|
||||
|
||||
vim.cmd('augroup nifoc_telescope')
|
||||
vim.cmd('autocmd!')
|
||||
vim.cmd('autocmd User TelescopePreviewerLoaded let w:is_telescope=v:true')
|
||||
vim.cmd('augroup end')
|
9
config/nvim/lua/nifoc/config/themes.lua
Normal file
9
config/nvim/lua/nifoc/config/themes.lua
Normal file
|
@ -0,0 +1,9 @@
|
|||
-- tokyonight
|
||||
|
||||
vim.g.tokyonight_style = 'night'
|
||||
vim.g.tokyonight_hide_inactive_statusline = true
|
||||
vim.g.tokyonight_sidebars = { "qf", "packer" }
|
||||
|
||||
-- dracula
|
||||
|
||||
vim.g.dracula_show_end_of_buffer = false
|
3
config/nvim/lua/nifoc/config/todo_comments.lua
Normal file
3
config/nvim/lua/nifoc/config/todo_comments.lua
Normal file
|
@ -0,0 +1,3 @@
|
|||
require('todo-comments').setup {
|
||||
signs = false,
|
||||
}
|
48
config/nvim/lua/nifoc/config/treesitter.lua
Normal file
48
config/nvim/lua/nifoc/config/treesitter.lua
Normal file
|
@ -0,0 +1,48 @@
|
|||
local treesitter = require('nvim-treesitter')
|
||||
local treesitter_config = require('nvim-treesitter.configs')
|
||||
|
||||
-- Custom module
|
||||
treesitter.define_modules {
|
||||
nifoc_hooks = {
|
||||
enable = false,
|
||||
attach = function(bufnr)
|
||||
vim.api.nvim_buf_set_var(bufnr, 'nifoc_treesitter_enabled', 1)
|
||||
end,
|
||||
detach = function(bufnr)
|
||||
vim.api.nvim_buf_set_var(bufnr, 'nifoc_treesitter_enabled', 0)
|
||||
end,
|
||||
is_supported = function()
|
||||
return true
|
||||
end
|
||||
}
|
||||
}
|
||||
|
||||
treesitter_config.setup {
|
||||
ensure_installed = "maintained",
|
||||
highlight = {
|
||||
enable = true,
|
||||
},
|
||||
indent = {
|
||||
enable = true,
|
||||
},
|
||||
textobjects = {
|
||||
select = {
|
||||
enable = true,
|
||||
keymaps = {
|
||||
["af"] = "@function.outer",
|
||||
["if"] = "@function.inner",
|
||||
["ac"] = "@conditional.outer",
|
||||
["ic"] = "@conditional.inner",
|
||||
},
|
||||
},
|
||||
},
|
||||
matchup = {enable = true},
|
||||
autopairs = {enable = true},
|
||||
autotag = {enable = true},
|
||||
context_commentstring = {
|
||||
enable = true,
|
||||
enable_autocmd = false,
|
||||
},
|
||||
playground = {enable = true},
|
||||
nifoc_hooks = {enable = true},
|
||||
}
|
1
config/nvim/lua/nifoc/config/virt_column.lua
Normal file
1
config/nvim/lua/nifoc/config/virt_column.lua
Normal file
|
@ -0,0 +1 @@
|
|||
require('virt-column').setup()
|
20
config/nvim/lua/nifoc/config/visual_eof.lua
Normal file
20
config/nvim/lua/nifoc/config/visual_eof.lua
Normal file
|
@ -0,0 +1,20 @@
|
|||
require('visual-eof').setup {
|
||||
text_EOL = '↵',
|
||||
text_NOEOL = '✗↵',
|
||||
ft_ng = {
|
||||
'fugitive.*',
|
||||
'git.*',
|
||||
'LspTrouble',
|
||||
'minimap',
|
||||
'netrw',
|
||||
'NvimTree',
|
||||
'packer',
|
||||
'TelescopePrompt',
|
||||
};
|
||||
buf_filter = function(bufnr)
|
||||
local disable_buftypes = {'terminal', 'nofile'}
|
||||
local buftype = vim.api.nvim_buf_get_option(bufnr, 'buftype')
|
||||
|
||||
return not vim.tbl_contains(disable_buftypes, buftype)
|
||||
end;
|
||||
}
|
1
config/nvim/lua/nifoc/config/whichkey.lua
Normal file
1
config/nvim/lua/nifoc/config/whichkey.lua
Normal file
|
@ -0,0 +1 @@
|
|||
require('which-key').setup {}
|
193
config/nvim/lua/nifoc/keymap.lua
Normal file
193
config/nvim/lua/nifoc/keymap.lua
Normal file
|
@ -0,0 +1,193 @@
|
|||
local wk = require('which-key')
|
||||
local npairs = require('nvim-autopairs')
|
||||
|
||||
local telescope = require('telescope')
|
||||
local telescope_builtin = require('telescope.builtin')
|
||||
local telescope_themes = require('telescope.themes')
|
||||
|
||||
-- Global key function
|
||||
_G.nifoc_keymap_cr_complete = function()
|
||||
return npairs.autopairs_cr()
|
||||
end
|
||||
|
||||
local M = {}
|
||||
|
||||
function M.setup()
|
||||
vim.api.nvim_set_keymap('n', '<space>', '<nop>', {noremap = true})
|
||||
vim.g.mapleader = ' '
|
||||
vim.opt.timeoutlen = 500
|
||||
|
||||
-- <leader> mappings
|
||||
local leader = {
|
||||
n = {
|
||||
"<cmd>NvimTreeToggle<CR>",
|
||||
"Toggle nvim-tree"
|
||||
},
|
||||
o = {
|
||||
function() require('nifoc.utils.telescope').project_files() end,
|
||||
"Find Files"
|
||||
},
|
||||
s = {
|
||||
function() telescope_builtin.live_grep(telescope_themes.get_ivy()) end,
|
||||
"Live Grep"
|
||||
},
|
||||
["ut"] = {
|
||||
"<cmd>UndotreeToggle<CR>",
|
||||
"Undotree"
|
||||
},
|
||||
f = {
|
||||
name = "file",
|
||||
n = {
|
||||
"<cmd>enew<cr>",
|
||||
"New File"
|
||||
},
|
||||
},
|
||||
b = {
|
||||
name = "buffer",
|
||||
l = {
|
||||
function() telescope_builtin.buffers(telescope_themes.get_dropdown()) end,
|
||||
"List Buffers"
|
||||
},
|
||||
n = {
|
||||
"<cmd>BufferLineCycleNext<CR>",
|
||||
"Next Buffer"
|
||||
},
|
||||
p = {
|
||||
"<cmd>BufferLineCyclePrev<CR>",
|
||||
"Previous Buffer"
|
||||
},
|
||||
f = {
|
||||
function() telescope_builtin.current_buffer_fuzzy_find(telescope_themes.get_dropdown()) end,
|
||||
"Find In Buffer"
|
||||
},
|
||||
t = {
|
||||
function() telescope_builtin.treesitter(telescope_themes.get_dropdown()) end,
|
||||
"Find Via Treesitter"
|
||||
},
|
||||
},
|
||||
p = {
|
||||
name = "project",
|
||||
t = {
|
||||
"<cmd>TodoTelescope<CR>",
|
||||
"TODO Comments"
|
||||
},
|
||||
},
|
||||
v = {
|
||||
name = "vcs",
|
||||
s = {
|
||||
function() telescope_builtin.git_status(telescope_themes.get_ivy()) end,
|
||||
"Status"
|
||||
},
|
||||
b = {
|
||||
function() telescope_builtin.git_branches(telescope_themes.get_ivy()) end,
|
||||
"List Branches"
|
||||
},
|
||||
l = {
|
||||
function() require('gitsigns').blame_line() end,
|
||||
"Blame Line"
|
||||
},
|
||||
},
|
||||
d = {
|
||||
name = "debug",
|
||||
l = {
|
||||
name = "lsp",
|
||||
i = {
|
||||
"<cmd>LspInfo<CR>",
|
||||
"Info"
|
||||
},
|
||||
r = {
|
||||
"<cmd>LspRestart<CR>",
|
||||
"Restart"
|
||||
}
|
||||
},
|
||||
t = {
|
||||
"<cmd>TSPlaygroundToggle<CR>",
|
||||
"TS Playground"
|
||||
},
|
||||
n = {
|
||||
function() telescope.extensions.notify.notify() end,
|
||||
"Notifications"
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
-- Register which-key mappings
|
||||
wk.register(leader, {prefix = "<leader>", noremap = false, silent = true})
|
||||
|
||||
-- Other mappings
|
||||
vim.api.nvim_set_keymap('n', '<CR>', ':noh<CR><CR>', {noremap = true, silent = true})
|
||||
|
||||
vim.api.nvim_set_keymap('i', '<CR>', 'v:lua.nifoc_keymap_cr_complete()', {noremap = true, expr = true, silent = true})
|
||||
|
||||
vim.api.nvim_set_keymap('n', '<A-Left>', 'b', {noremap = true})
|
||||
vim.api.nvim_set_keymap('n', '<A-Right>', 'w', {noremap = true})
|
||||
vim.api.nvim_set_keymap('n', '<S-Left>', '^', {noremap = true})
|
||||
vim.api.nvim_set_keymap('n', '<S-Right>', '$', {noremap = true})
|
||||
vim.api.nvim_set_keymap('i', '<A-Left>', '<C-o>b', {noremap = true})
|
||||
vim.api.nvim_set_keymap('i', '<A-Right>', '<C-o>w', {noremap = true})
|
||||
vim.api.nvim_set_keymap('i', '<S-Left>', '<C-o>^', {noremap = true})
|
||||
vim.api.nvim_set_keymap('i', '<S-Right>', '<C-o>$', {noremap = true})
|
||||
|
||||
vim.api.nvim_set_keymap('v', 'p', '"_dP', {noremap = true})
|
||||
vim.api.nvim_set_keymap('n', 'd', '"_d', {noremap = true})
|
||||
vim.api.nvim_set_keymap('v', 'd', '"_d', {noremap = true})
|
||||
|
||||
vim.api.nvim_set_keymap('n', '<C-t>', '<cmd>lua require("FTerm").toggle()<CR>', {noremap = true, silent = true})
|
||||
vim.api.nvim_set_keymap('t', '<C-t>', '<C-\\><C-n><cmd>lua require("FTerm").toggle()<CR>', {noremap = true, silent = true})
|
||||
end
|
||||
|
||||
function M.lsp_attach(client, bufnr)
|
||||
-- <leader> mappings
|
||||
local leader = {
|
||||
t = {
|
||||
"<cmd>Telescope lsp_document_symbols theme=get_dropdown<CR>",
|
||||
"LSP Document Tags"
|
||||
},
|
||||
l = {
|
||||
name = "lsp",
|
||||
d = {
|
||||
name = "diagnostics",
|
||||
d = {
|
||||
"<cmd>LspTroubleToggle lsp_document_diagnostics<CR>",
|
||||
"Document Diagnostics"
|
||||
},
|
||||
w = {
|
||||
"<cmd>LspTroubleToggle lsp_workspace_diagnostics<CR>",
|
||||
"Workspace Diagnostics"
|
||||
},
|
||||
},
|
||||
c = {
|
||||
name = "code action",
|
||||
a = {
|
||||
"<cmd>Telescope lsp_code_actions theme=get_dropdown<CR>",
|
||||
"Code Action"
|
||||
},
|
||||
},
|
||||
f = {
|
||||
name = "find",
|
||||
r = {
|
||||
"<cmd>LspTroubleToggle lsp_references<CR>",
|
||||
"References"
|
||||
},
|
||||
d = {
|
||||
"<cmd>LspTroubleToggle lsp_definitions<CR>",
|
||||
"Definitions"
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
-- Top-level mappings
|
||||
local top = {
|
||||
K = {
|
||||
"<cmd>lua vim.lsp.buf.hover()<CR>",
|
||||
"Show Documentation"
|
||||
},
|
||||
}
|
||||
|
||||
-- Register which-key mappings
|
||||
wk.register(leader, {prefix = "<leader>", noremap = true, silent = true, buffer = bufnr})
|
||||
wk.register(top, {noremap = true, silent = true, buffer = bufnr})
|
||||
end
|
||||
|
||||
return M
|
69
config/nvim/lua/nifoc/plugins.lua
Normal file
69
config/nvim/lua/nifoc/plugins.lua
Normal file
|
@ -0,0 +1,69 @@
|
|||
-- Disable some built-in plugins
|
||||
vim.g.loaded_matchit = 1
|
||||
vim.g.loaded_matchparen = 1
|
||||
vim.g.loaded_gzip = 1
|
||||
vim.g.loaded_rrhelper = 1
|
||||
vim.g.loaded_tarPlugin = 1
|
||||
vim.g.loaded_zipPlugin = 1
|
||||
vim.g.loaded_netrwPlugin = 1
|
||||
vim.g.loaded_netrwFileHandlers = 1
|
||||
vim.g.loaded_netrwSettings = 1
|
||||
vim.g.loaded_2html_plugin = 1
|
||||
vim.g.loaded_vimballPlugin = 1
|
||||
vim.g.loaded_getscriptPlugin = 1
|
||||
vim.g.loaded_logipat = 1
|
||||
vim.g.loaded_tutor_mode_plugin = 1
|
||||
|
||||
vim.g.loaded_python_provider = 0
|
||||
vim.g.loaded_python3_provider = 0
|
||||
vim.g.loaded_ruby_provider = 0
|
||||
vim.g.loaded_node_provider = 0
|
||||
vim.g.loaded_perl_provider = 0
|
||||
|
||||
-- Require Plugin Configuration
|
||||
|
||||
-- Fixes
|
||||
require('nifoc.config.cursorline')
|
||||
|
||||
-- Keybindings
|
||||
require('nifoc.config.whichkey')
|
||||
|
||||
-- Syntax
|
||||
require('nifoc.config.treesitter')
|
||||
|
||||
-- Telescope
|
||||
require('nifoc.config.telescope')
|
||||
require('nifoc.config.project')
|
||||
require('nifoc.config.todo_comments')
|
||||
|
||||
-- LSP
|
||||
require('nifoc.config.lsp')
|
||||
require('nifoc.config.lsp_trouble')
|
||||
require('nifoc.config.illuminate')
|
||||
|
||||
-- cmp
|
||||
require('nifoc.config.completion')
|
||||
|
||||
-- Pairs
|
||||
require('nifoc.config.autopairs')
|
||||
require('nvim-ts-autotag').setup()
|
||||
require('nifoc.config.matchup')
|
||||
|
||||
-- Comments
|
||||
require('nifoc.config.comments')
|
||||
|
||||
-- Textobjects
|
||||
require('surround').setup({})
|
||||
|
||||
-- UI
|
||||
require('nifoc.config.lualine')
|
||||
require('nifoc.config.bufferline')
|
||||
require('nifoc.config.nvim_tree')
|
||||
require('nifoc.config.indent_line')
|
||||
require('nifoc.config.virt_column')
|
||||
require('nifoc.config.colorizer')
|
||||
require('nifoc.config.gitsigns')
|
||||
require('spellsitter').setup()
|
||||
vim.notify = require('notify')
|
||||
require('nifoc.config.visual_eof')
|
||||
require('nifoc.config.fterm')
|
37
config/nvim/lua/nifoc/utils/line_style.lua
Normal file
37
config/nvim/lua/nifoc/utils/line_style.lua
Normal file
|
@ -0,0 +1,37 @@
|
|||
local M = {}
|
||||
|
||||
local check_disable = function()
|
||||
local buftype = vim.bo.buftype
|
||||
return buftype == 'terminal' or buftype == 'nofile'
|
||||
end
|
||||
|
||||
local check_toggle = function()
|
||||
if check_disable() then
|
||||
return false
|
||||
elseif vim.w.is_telescope then
|
||||
return false
|
||||
else
|
||||
local toggle_line_style = vim.b.toggle_line_style
|
||||
return toggle_line_style == nil or toggle_line_style == 1
|
||||
end
|
||||
end
|
||||
|
||||
function M.maybe_set_special_style()
|
||||
if check_disable() then
|
||||
vim.opt_local.number = false
|
||||
vim.opt_local.relativenumber = false
|
||||
end
|
||||
|
||||
if vim.w.is_telescope then
|
||||
vim.opt_local.number = true
|
||||
vim.opt_local.relativenumber = false
|
||||
end
|
||||
end
|
||||
|
||||
function M.maybe_set_relativenumber(value)
|
||||
if check_toggle() then
|
||||
vim.opt_local.relativenumber = value
|
||||
end
|
||||
end
|
||||
|
||||
return M
|
135
config/nvim/lua/nifoc/utils/statusline.lua
Normal file
135
config/nvim/lua/nifoc/utils/statusline.lua
Normal file
|
@ -0,0 +1,135 @@
|
|||
local M = {}
|
||||
|
||||
local buffer_not_empty = function()
|
||||
if vim.fn.empty(vim.fn.expand('%:t')) ~= 1 then
|
||||
return true
|
||||
end
|
||||
|
||||
return false
|
||||
end
|
||||
|
||||
local buffer_variable_exists = function(key)
|
||||
return buffer_not_empty() and vim.b[key] ~= nil
|
||||
end
|
||||
|
||||
local buffer_has_lsp = function()
|
||||
return buffer_not_empty() and #vim.lsp.buf_get_clients() > 0
|
||||
end
|
||||
|
||||
function M.line_column()
|
||||
local line = tostring(vim.fn.line('.'))
|
||||
local column = tostring(vim.fn.col('.'))
|
||||
|
||||
return string.format("%3s:%-3s", line, column)
|
||||
end
|
||||
|
||||
function M.current_line_percent()
|
||||
local current_line = vim.fn.line('.')
|
||||
local total_line = vim.fn.line('$')
|
||||
|
||||
if current_line == 1 then
|
||||
return 'Top'
|
||||
elseif current_line == total_line then
|
||||
return 'Bot'
|
||||
end
|
||||
|
||||
return [[%2p%%]]
|
||||
end
|
||||
|
||||
function M.filetype()
|
||||
local f_name = vim.fn.expand('%:t')
|
||||
local f_extension = vim.fn.expand('%:e')
|
||||
local f_type = vim.bo.filetype
|
||||
|
||||
if f_type:len() > 0 then
|
||||
return f_type .. ' ' .. require('nvim-web-devicons').get_icon(f_name, f_extension, {default = true})
|
||||
else
|
||||
return 'no ft'
|
||||
end
|
||||
end
|
||||
|
||||
function M.diagnostics_status()
|
||||
if buffer_has_lsp() then
|
||||
local status = require('lsp-status').diagnostics()
|
||||
local errors, warnings, info, hints = status.errors, status.warnings, status.info, status.hints
|
||||
local status_txt = {}
|
||||
|
||||
if errors > 0 then table.insert(status_txt, ' ' .. errors) end
|
||||
if warnings > 0 then table.insert(status_txt, ' ' .. warnings) end
|
||||
if info > 0 then table.insert(status_txt, ' ' .. info) end
|
||||
if hints > 0 then table.insert(status_txt, ' ' .. hints) end
|
||||
|
||||
local formatted_status = table.concat(status_txt, ' ')
|
||||
|
||||
if formatted_status:len() > 0 then
|
||||
return formatted_status
|
||||
else
|
||||
return ''
|
||||
end
|
||||
else
|
||||
return ''
|
||||
end
|
||||
end
|
||||
|
||||
function M.gitsigns_formatter(status)
|
||||
local added, changed, removed = status.added, status.changed, status.removed
|
||||
local result = {}
|
||||
|
||||
if added ~= nil and added > 0 then
|
||||
table.insert(result, string.format("%%#GitSignsStatuslineAdd# %s", added))
|
||||
end
|
||||
|
||||
if changed ~= nil and changed > 0 then
|
||||
table.insert(result, string.format("%%#GitSignsStatuslineChange# %s", changed))
|
||||
end
|
||||
|
||||
if removed ~= nil and removed > 0 then
|
||||
table.insert(result, string.format("%%#GitSignsStatuslineDelete# %s", removed))
|
||||
end
|
||||
|
||||
return table.concat(result, ' ')
|
||||
end
|
||||
|
||||
function M.current_function()
|
||||
local fn = vim.b.lsp_current_function
|
||||
|
||||
if fn ~= nil and fn:len() > 0 then
|
||||
return ' ' .. fn
|
||||
else
|
||||
return ''
|
||||
end
|
||||
end
|
||||
|
||||
function M.spell_enabled()
|
||||
if buffer_not_empty() and vim.wo.spell then
|
||||
return 'ﮒ'
|
||||
else
|
||||
return ''
|
||||
end
|
||||
end
|
||||
|
||||
function M.fixer_enabled()
|
||||
if buffer_variable_exists('nifoc_fixer_enabled') then
|
||||
return ''
|
||||
else
|
||||
return ''
|
||||
end
|
||||
end
|
||||
|
||||
function M.treesitter_enabled()
|
||||
if buffer_variable_exists('nifoc_treesitter_enabled') then
|
||||
return ''
|
||||
else
|
||||
return ''
|
||||
end
|
||||
end
|
||||
|
||||
function M.lsp_enabled()
|
||||
if buffer_variable_exists('nifoc_lsp_enabled') then
|
||||
return ''
|
||||
else
|
||||
return ''
|
||||
end
|
||||
end
|
||||
|
||||
return M
|
18
config/nvim/lua/nifoc/utils/telescope.lua
Normal file
18
config/nvim/lua/nifoc/utils/telescope.lua
Normal file
|
@ -0,0 +1,18 @@
|
|||
local telescope_themes = require('telescope.themes')
|
||||
|
||||
local M = {}
|
||||
|
||||
M.project_files = function()
|
||||
local git_opts = telescope_themes.get_ivy()
|
||||
local ok = pcall(require'telescope.builtin'.git_files, git_opts)
|
||||
|
||||
if not ok then
|
||||
local find_opts = telescope_themes.get_ivy({
|
||||
find_command = { 'rg', '--files', '--hidden', '-L', '-g', '!.git/*' }
|
||||
})
|
||||
|
||||
require('telescope.builtin').find_files(find_opts)
|
||||
end
|
||||
end
|
||||
|
||||
return M
|
116
config/nvim/lua/nix_init.lua
Normal file
116
config/nvim/lua/nix_init.lua
Normal file
|
@ -0,0 +1,116 @@
|
|||
-- Preamble
|
||||
pcall(require, 'impatient')
|
||||
vim.cmd('syntax enable')
|
||||
vim.cmd('filetype plugin indent on')
|
||||
vim.opt.compatible = false
|
||||
vim.opt.hidden = true
|
||||
vim.opt.shell = '/bin/sh'
|
||||
|
||||
-- Options
|
||||
vim.opt.encoding = 'utf-8'
|
||||
vim.opt.synmaxcol = 500
|
||||
vim.opt.showmode = false
|
||||
vim.opt.ruler = false
|
||||
vim.opt.ttyfast = true
|
||||
vim.opt.lazyredraw = true
|
||||
vim.opt.cursorline = true
|
||||
vim.opt.list = true
|
||||
vim.opt.listchars = {tab = '»·', trail = '·'}
|
||||
vim.opt.showbreak = '↪ '
|
||||
vim.opt.backspace = {'indent', 'eol', 'start'}
|
||||
vim.opt.showtabline = 2
|
||||
vim.opt.signcolumn = 'yes:1'
|
||||
vim.opt.wildoptions = 'pum'
|
||||
vim.opt.modeline = false
|
||||
vim.opt.startofline = false
|
||||
vim.opt.synmaxcol = 300
|
||||
|
||||
vim.opt.incsearch = true
|
||||
vim.opt.grepprg = 'rg --vimgrep --no-heading'
|
||||
vim.opt.grepformat = '%f:%l:%c:%m,%f:%l:%m'
|
||||
vim.opt.inccommand = 'nosplit'
|
||||
|
||||
vim.opt.completeopt = {'menu', 'menuone', 'noselect'}
|
||||
|
||||
vim.opt.wrap = true
|
||||
vim.opt.tabstop = 2
|
||||
vim.opt.shiftwidth = 2
|
||||
vim.opt.softtabstop = 2
|
||||
vim.opt.expandtab = true
|
||||
|
||||
vim.opt.viewoptions = {'cursor', 'folds', 'slash', 'unix'}
|
||||
|
||||
vim.opt.foldenable = false
|
||||
|
||||
vim.opt.splitbelow = true
|
||||
vim.opt.splitright = true
|
||||
|
||||
vim.opt.autoread = true
|
||||
|
||||
vim.opt.diffopt = {'filler', 'internal', 'algorithm:histogram', 'indent-heuristic'}
|
||||
|
||||
vim.opt.spelllang = {'en', 'de'}
|
||||
|
||||
-- UI
|
||||
vim.opt.number = true
|
||||
vim.opt.relativenumber = true
|
||||
|
||||
vim.opt.conceallevel = 2
|
||||
vim.opt.concealcursor = 'niv'
|
||||
|
||||
-- See: https://github.com/antoinemadec/FixCursorHold.nvim
|
||||
vim.opt.updatetime = 750
|
||||
vim.g.cursorhold_updatetime = 100
|
||||
|
||||
vim.opt.shortmess:append('c')
|
||||
vim.opt.shortmess:remove('S')
|
||||
|
||||
vim.opt.termguicolors = true
|
||||
vim.cmd('set mouse=a mousemodel=popup_setpos')
|
||||
|
||||
-- Plugins
|
||||
require('nifoc.config.themes')
|
||||
require('nifoc.plugins')
|
||||
|
||||
-- Theme
|
||||
vim.opt.background = 'dark'
|
||||
vim.cmd('colorscheme dracula')
|
||||
|
||||
-- Backups
|
||||
vim.opt.backup = false
|
||||
vim.opt.swapfile = false
|
||||
vim.opt.undofile = true
|
||||
vim.opt.undodir = os.getenv('HOME') .. '/.local/share/nvim/undo//'
|
||||
|
||||
-- Clipboard
|
||||
vim.g.clipboard = {
|
||||
name = 'pbcopy',
|
||||
copy = {
|
||||
['+'] = 'pbcopy',
|
||||
['*'] = 'pbcopy',
|
||||
},
|
||||
paste = {
|
||||
['+'] = 'pbpaste',
|
||||
['*'] = 'pbpaste',
|
||||
},
|
||||
cache_enabled = 0,
|
||||
}
|
||||
|
||||
vim.cmd('set clipboard+=unnamedplus')
|
||||
|
||||
-- Keymap
|
||||
require('nifoc.keymap').setup()
|
||||
|
||||
-- Autocmds
|
||||
vim.cmd('augroup nifoc_numbertoggle')
|
||||
vim.cmd('autocmd!')
|
||||
vim.cmd("autocmd BufEnter,BufWinEnter * lua require('nifoc.utils.line_style').maybe_set_special_style()")
|
||||
vim.cmd('autocmd TermOpen * setlocal nonumber norelativenumber')
|
||||
vim.cmd("autocmd BufEnter,InsertLeave * lua require('nifoc.utils.line_style').maybe_set_relativenumber(true)")
|
||||
vim.cmd("autocmd BufLeave,InsertEnter * lua require('nifoc.utils.line_style').maybe_set_relativenumber(false)")
|
||||
vim.cmd('augroup end')
|
||||
|
||||
vim.cmd('augroup nifoc_yank')
|
||||
vim.cmd('autocmd!')
|
||||
vim.cmd('autocmd TextYankPost * silent! lua vim.highlight.on_yank{higroup="IncSearch", timeout=500}')
|
||||
vim.cmd('augroup end')
|
6
config/yt-dlp.nix
Normal file
6
config/yt-dlp.nix
Normal file
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
xdg.configFile.yt-dlp = {
|
||||
source = ./yt-dlp;
|
||||
recursive = true;
|
||||
};
|
||||
}
|
21
config/yt-dlp/config
Normal file
21
config/yt-dlp/config
Normal file
|
@ -0,0 +1,21 @@
|
|||
# Add metadata and other things to the video
|
||||
--add-metadata
|
||||
--embed-subs
|
||||
#--embed-thumbnail
|
||||
--xattrs
|
||||
|
||||
# Prefer best mp4 video
|
||||
-f 'bestvideo+bestaudio/best'
|
||||
|
||||
# Subtitles
|
||||
--write-sub
|
||||
--sub-format best
|
||||
--sub-lang en,de
|
||||
|
||||
# Download using aria2
|
||||
#--external-downloader aria2c
|
||||
#--external-downloader-args "-j 8 -s 8 -x 8 -k 1M --file-allocation none"
|
||||
|
||||
# Other
|
||||
--no-overwrites
|
||||
--no-call-home
|
140
flake.lock
Normal file
140
flake.lock
Normal file
|
@ -0,0 +1,140 @@
|
|||
{
|
||||
"nodes": {
|
||||
"flake-compat": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1627913399,
|
||||
"narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=",
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils": {
|
||||
"locked": {
|
||||
"lastModified": 1629481132,
|
||||
"narHash": "sha256-JHgasjPR0/J1J3DRm4KxM4zTyAj4IOJY8vIl75v/kPI=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "997f7efcb746a9c140ce1f13c72263189225f482",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"home-manager": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1638571010,
|
||||
"narHash": "sha256-KSO7u13VRLdklQTKYJaBSfVcurEvw+HifAsHR7V2i5E=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "781d25b315def05cd7ede3765226c54216f0b1fe",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"neovim-flake": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils",
|
||||
"nixpkgs": [
|
||||
"neovim-nightly-overlay",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"dir": "contrib",
|
||||
"lastModified": 1638765202,
|
||||
"narHash": "sha256-eW/ZDUrfP8rD8a5Rotqo8i5PKiK7UFWe75DgMLAtenY=",
|
||||
"owner": "neovim",
|
||||
"repo": "neovim",
|
||||
"rev": "523f03b506bf577811c0e136bc852cdb89f92c00",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"dir": "contrib",
|
||||
"owner": "neovim",
|
||||
"repo": "neovim",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"neovim-nightly-overlay": {
|
||||
"inputs": {
|
||||
"flake-compat": "flake-compat",
|
||||
"neovim-flake": "neovim-flake",
|
||||
"nixpkgs": "nixpkgs"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1638778450,
|
||||
"narHash": "sha256-C5UoHcRk5YjKNz9bVv+Kp28PjT/A+R49rUlpa1hFxvU=",
|
||||
"owner": "nix-community",
|
||||
"repo": "neovim-nightly-overlay",
|
||||
"rev": "740f1503ca2e5c066507e836bac13aa21c87da3b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "neovim-nightly-overlay",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1638535497,
|
||||
"narHash": "sha256-tk5LNbdkUhALp00+r5ZmQ3t7n2d5M7YUQB+MznWvVOg=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "c71f061c68ba8ce53471b767d5049cbd0f3d8490",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_2": {
|
||||
"locked": {
|
||||
"lastModified": 1638761670,
|
||||
"narHash": "sha256-LywnGCbjfMHp4lwAmIXozB/rAqPkCG0J8HhMPwXsR1U=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "02336c5c5f719cd6bd4cfc5a091a1ccee6f06b1d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixpkgs-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"home-manager": "home-manager",
|
||||
"neovim-nightly-overlay": "neovim-nightly-overlay",
|
||||
"nixpkgs": "nixpkgs_2"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
"version": 7
|
||||
}
|
38
flake.nix
Normal file
38
flake.nix
Normal file
|
@ -0,0 +1,38 @@
|
|||
{
|
||||
inputs = {
|
||||
nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
|
||||
|
||||
home-manager.url = "github:nix-community/home-manager";
|
||||
home-manager.inputs.nixpkgs.follows = "nixpkgs";
|
||||
|
||||
neovim-nightly-overlay.url = "github:nix-community/neovim-nightly-overlay";
|
||||
};
|
||||
|
||||
outputs = inputs@{ self, nixpkgs, home-manager, ... }: {
|
||||
homeConfigurations = {
|
||||
daniel = inputs.home-manager.lib.homeManagerConfiguration {
|
||||
system = "x86_64-darwin";
|
||||
homeDirectory = "/Users/daniel";
|
||||
username = "daniel";
|
||||
stateVersion = "21.11";
|
||||
|
||||
configuration = { config, pkgs, ... }:
|
||||
let
|
||||
overlay-neovim = inputs.neovim-nightly-overlay.overlay;
|
||||
in
|
||||
{
|
||||
nixpkgs.overlays = [
|
||||
overlay-neovim
|
||||
];
|
||||
|
||||
nixpkgs.config = {
|
||||
allowUnfree = true;
|
||||
allowBroken = true;
|
||||
};
|
||||
|
||||
imports = [ ./home.nix ];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
55
home.nix
Normal file
55
home.nix
Normal file
|
@ -0,0 +1,55 @@
|
|||
{ config, pkgs, ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
./programs/fish.nix
|
||||
./programs/starship.nix
|
||||
|
||||
./programs/nvim
|
||||
|
||||
./programs/git.nix
|
||||
|
||||
./programs/bat.nix
|
||||
|
||||
./programs/jq.nix
|
||||
|
||||
# ./config/nvim.nix
|
||||
./config/yt-dlp.nix
|
||||
];
|
||||
|
||||
home = {
|
||||
packages = with pkgs; [
|
||||
aria2
|
||||
arp-scan
|
||||
atomicparsley
|
||||
cachix
|
||||
dogdns
|
||||
exa
|
||||
fd
|
||||
ffmpeg
|
||||
fzf
|
||||
gallery-dl
|
||||
hexyl
|
||||
hyperfine
|
||||
# neovim-nightly
|
||||
nix-prefetch-github
|
||||
parallel
|
||||
procs
|
||||
ripgrep
|
||||
rtmpdump
|
||||
tokei
|
||||
yt-dlp
|
||||
];
|
||||
};
|
||||
|
||||
programs = {
|
||||
home-manager.enable = true;
|
||||
|
||||
direnv = {
|
||||
enable = true;
|
||||
nix-direnv.enable = true;
|
||||
};
|
||||
|
||||
zoxide.enable = true;
|
||||
};
|
||||
}
|
9
programs/bat.nix
Normal file
9
programs/bat.nix
Normal file
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
programs.bat = {
|
||||
enable = true;
|
||||
|
||||
config = {
|
||||
theme = "Dracula";
|
||||
};
|
||||
};
|
||||
}
|
67
programs/fish.nix
Normal file
67
programs/fish.nix
Normal file
|
@ -0,0 +1,67 @@
|
|||
{ pkgs, ... }:
|
||||
|
||||
{
|
||||
programs.fish = {
|
||||
enable = true;
|
||||
|
||||
plugins = [
|
||||
{
|
||||
name = "foreign-env";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "oh-my-fish";
|
||||
repo = "plugin-foreign-env";
|
||||
rev = "dddd9213272a0ab848d474d0cbde12ad034e65bc";
|
||||
sha256 = "00xqlyl3lffc5l0viin1nyp819wf81fncqyz87jx8ljjdhilmgbs";
|
||||
};
|
||||
}
|
||||
|
||||
{
|
||||
name = "dracula";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "dracula";
|
||||
repo = "fish";
|
||||
rev = "28db361b55bb49dbfd7a679ebec9140be8c2d593";
|
||||
sha256 = "vdqYlEyYvlPVgTkwXbE8GVZo0UBBT88JyMSWYykhfx4=";
|
||||
};
|
||||
}
|
||||
];
|
||||
|
||||
shellAliases = {
|
||||
hmsw = "home-manager switch --flake ~/.config/nixpkgs/#$USER";
|
||||
j = "z";
|
||||
ji = "zi";
|
||||
la = "exa --long --all --group --header --group-directories-first --sort=type --icons";
|
||||
lg = "exa --long --all --group --header --git";
|
||||
lt = "exa --long --all --group --header --tree --level ";
|
||||
upa = "nix flake update ~/.config/nixpkgs -v";
|
||||
upp = "nix flake update ./ -v";
|
||||
upn = "$HOME/.config/nixpkgs/programs/nvim/update-plugins.sh";
|
||||
ucl = "nix-collect-garbage -d && nix-store --gc && nix-store --optimise -v";
|
||||
};
|
||||
|
||||
shellInit = ''
|
||||
if test -e /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh
|
||||
fenv source /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh
|
||||
end
|
||||
|
||||
if test -d "$HOME/bin"
|
||||
set -gx PATH "$HOME/bin" $PATH
|
||||
end
|
||||
|
||||
# Vendor Configuration
|
||||
if test -d "$HOME/.nix-profile/share/fish/vendor_conf.d"
|
||||
for vendor_conf in $HOME/.nix-profile/share/fish/vendor_conf.d/*.fish
|
||||
source "$vendor_conf"
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
# Custom Scripts
|
||||
if test -d "$HOME/.config/fish/custom-scripts"
|
||||
for custom_script in $HOME/.config/fish/custom-scripts/*.fish
|
||||
source "$custom_script"
|
||||
end
|
||||
end
|
||||
'';
|
||||
};
|
||||
}
|
57
programs/git.nix
Normal file
57
programs/git.nix
Normal file
|
@ -0,0 +1,57 @@
|
|||
{
|
||||
programs.git = {
|
||||
enable = true;
|
||||
lfs.enable = true;
|
||||
delta.enable = true;
|
||||
|
||||
userName = "Daniel Kempkens";
|
||||
userEmail = "daniel+git@kempkens.io";
|
||||
|
||||
aliases = {
|
||||
lg = "log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative";
|
||||
};
|
||||
|
||||
extraConfig = {
|
||||
core = {
|
||||
editor = "nvim";
|
||||
whitespace = "trailing-space,space-before-tab";
|
||||
autocrlf = "input";
|
||||
};
|
||||
|
||||
pull = {
|
||||
rebase = true;
|
||||
};
|
||||
|
||||
push = {
|
||||
default = "simple";
|
||||
};
|
||||
|
||||
diff = {
|
||||
indentheuristic = true;
|
||||
algorithm = "histogram";
|
||||
};
|
||||
|
||||
apply = {
|
||||
whitespace = "fix";
|
||||
};
|
||||
|
||||
rerere = {
|
||||
enabled = true;
|
||||
};
|
||||
|
||||
color = {
|
||||
ui = "auto";
|
||||
};
|
||||
};
|
||||
|
||||
ignores = [
|
||||
"*~"
|
||||
"*.swp"
|
||||
".DS_Store"
|
||||
];
|
||||
|
||||
delta.options = {
|
||||
theme = "Dracula";
|
||||
};
|
||||
};
|
||||
}
|
15
programs/jq.nix
Normal file
15
programs/jq.nix
Normal file
|
@ -0,0 +1,15 @@
|
|||
{
|
||||
programs.jq = {
|
||||
enable = true;
|
||||
|
||||
colors = {
|
||||
null = "1;32";
|
||||
false = "1;35";
|
||||
true = "1;35";
|
||||
numbers = "0;35";
|
||||
strings = "0;33";
|
||||
arrays = "1;37";
|
||||
objects = "1;37";
|
||||
};
|
||||
};
|
||||
}
|
115
programs/nvim/default.nix
Normal file
115
programs/nvim/default.nix
Normal file
|
@ -0,0 +1,115 @@
|
|||
{ pkgs, ... }:
|
||||
|
||||
let
|
||||
customPlugins = import ./plugins.nix { inherit pkgs; };
|
||||
in
|
||||
{
|
||||
programs.neovim = {
|
||||
enable = true;
|
||||
package = pkgs.neovim-nightly;
|
||||
|
||||
extraConfig = ''
|
||||
lua require('nix_init')
|
||||
'';
|
||||
|
||||
extraPackages = with pkgs; [
|
||||
tree-sitter
|
||||
|
||||
# LSP
|
||||
efm-langserver
|
||||
nodePackages.bash-language-server
|
||||
nodePackages.dockerfile-language-server-nodejs
|
||||
nodePackages.vscode-langservers-extracted
|
||||
nodePackages.yaml-language-server
|
||||
rnix-lsp
|
||||
sqls
|
||||
taplo-lsp
|
||||
|
||||
# LSP Tools
|
||||
hadolint
|
||||
shellcheck
|
||||
shfmt
|
||||
];
|
||||
|
||||
plugins = with customPlugins; [
|
||||
# Fixes
|
||||
impatient-nvim
|
||||
FixCursorHold-nvim
|
||||
vim-auto-cursorline
|
||||
|
||||
# Utils
|
||||
popup-nvim
|
||||
plenary-nvim
|
||||
nvim-web-devicons
|
||||
|
||||
# Keybindings
|
||||
which-key-nvim
|
||||
|
||||
# Themes
|
||||
tokyonight-nvim
|
||||
dracula-nvim
|
||||
|
||||
# Syntax
|
||||
nvim-treesitter
|
||||
playground
|
||||
Jenkinsfile-vim-syntax
|
||||
|
||||
# Telescope
|
||||
telescope-nvim
|
||||
telescope-fzf-native-nvim
|
||||
project-nvim
|
||||
todo-comments-nvim
|
||||
|
||||
# LSP
|
||||
nvim-lspconfig
|
||||
lsp-trouble-nvim
|
||||
lspkind-nvim
|
||||
lsp-status-nvim
|
||||
vim-illuminate
|
||||
|
||||
# cmp
|
||||
nvim-cmp
|
||||
cmp-nvim-lsp
|
||||
LuaSnip
|
||||
cmp_luasnip
|
||||
cmp-nvim-lua
|
||||
cmp-path
|
||||
cmp-buffer
|
||||
cmp-treesitter
|
||||
cmp-cmdline
|
||||
cmp-nvim-lsp-document-symbol
|
||||
|
||||
# Pairs
|
||||
nvim-autopairs
|
||||
nvim-ts-autotag
|
||||
vim-matchup
|
||||
|
||||
# Comments
|
||||
Comment-nvim
|
||||
|
||||
# Textobjects
|
||||
nvim-treesitter-textobjects
|
||||
surround-nvim
|
||||
|
||||
# UI
|
||||
undotree
|
||||
lualine-nvim
|
||||
nvim-bufferline-lua
|
||||
nvim-tree-lua
|
||||
indent-blankline-nvim
|
||||
virt-column-nvim
|
||||
nvim-colorizer-lua
|
||||
gitsigns-nvim
|
||||
spellsitter-nvim
|
||||
nvim-notify
|
||||
nvim-visual-eof-lua
|
||||
FTerm-nvim
|
||||
editorconfig-vim
|
||||
];
|
||||
};
|
||||
|
||||
xdg.configFile.nvim = {
|
||||
source = ../../config/nvim;
|
||||
recursive = true;
|
||||
};
|
||||
}
|
605
programs/nvim/plugins.nix
Normal file
605
programs/nvim/plugins.nix
Normal file
|
@ -0,0 +1,605 @@
|
|||
# This file has been auto-generated
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
impatient-nvim = pkgs.vimUtils.buildVimPluginFrom2Nix {
|
||||
pname = "impatient.nvim";
|
||||
version = "282b99b";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "lewis6991";
|
||||
repo = "impatient.nvim";
|
||||
rev = "282b99b817d61e6c6860addf5629b641925a937a";
|
||||
sha256 = "RtXtmtfpPAtZuDSn/eKaX12w1BybqUeWoKVGV2yEMCM=";
|
||||
fetchSubmodules = false;
|
||||
};
|
||||
meta.homepage = "https://github.com/lewis6991/impatient.nvim";
|
||||
};
|
||||
FixCursorHold-nvim = pkgs.vimUtils.buildVimPluginFrom2Nix {
|
||||
pname = "FixCursorHold.nvim";
|
||||
version = "0e4e22d";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "antoinemadec";
|
||||
repo = "FixCursorHold.nvim";
|
||||
rev = "0e4e22d21975da60b0fd2d302285b3b603f9f71e";
|
||||
sha256 = "v56qtPGa8MkEPpQpzA+XHH/TsV1q4p65wSuvF140LuM=";
|
||||
fetchSubmodules = false;
|
||||
};
|
||||
meta.homepage = "https://github.com/antoinemadec/FixCursorHold.nvim";
|
||||
};
|
||||
vim-auto-cursorline = pkgs.vimUtils.buildVimPluginFrom2Nix {
|
||||
pname = "vim-auto-cursorline";
|
||||
version = "ee22b15";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "delphinus";
|
||||
repo = "vim-auto-cursorline";
|
||||
rev = "ee22b1589809f1b1aaaaef15997a0a84585d667f";
|
||||
sha256 = "+ajtZm9pJrl49fI7zFqBJ49SL1XqfOoTp0ICelEknYc=";
|
||||
fetchSubmodules = false;
|
||||
};
|
||||
meta.homepage = "https://github.com/delphinus/vim-auto-cursorline";
|
||||
};
|
||||
which-key-nvim = pkgs.vimUtils.buildVimPluginFrom2Nix {
|
||||
pname = "which-key.nvim";
|
||||
version = "d3032b6";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "folke";
|
||||
repo = "which-key.nvim";
|
||||
rev = "d3032b6d3e0adb667975170f626cb693bfc66baa";
|
||||
sha256 = "mgLmwP8ci9VjRiwBedZDPXi6CjNtJy3iOJDbmSXtisk=";
|
||||
fetchSubmodules = false;
|
||||
};
|
||||
meta.homepage = "https://github.com/folke/which-key.nvim";
|
||||
};
|
||||
tokyonight-nvim = pkgs.vimUtils.buildVimPluginFrom2Nix {
|
||||
pname = "tokyonight.nvim";
|
||||
version = "b3a829d";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "folke";
|
||||
repo = "tokyonight.nvim";
|
||||
rev = "b3a829d2ba6344b5364fda71b5b7501f707d1bdf";
|
||||
sha256 = "n00mEFtTbN8XAmlOcjtToagaUqROJ8Id4E4kAPXpEVk=";
|
||||
fetchSubmodules = false;
|
||||
};
|
||||
meta.homepage = "https://github.com/folke/tokyonight.nvim";
|
||||
};
|
||||
dracula-nvim = pkgs.vimUtils.buildVimPluginFrom2Nix {
|
||||
pname = "dracula.nvim";
|
||||
version = "aa9d195";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "Mofiqul";
|
||||
repo = "dracula.nvim";
|
||||
rev = "aa9d195ab856b1c8e9d3afca0768cdc2d992a4a7";
|
||||
sha256 = "qRwhrXwpcasr8JC2W7oBiKLsywUzYgSDL8n9rAeQWkk=";
|
||||
fetchSubmodules = false;
|
||||
};
|
||||
meta.homepage = "https://github.com/Mofiqul/dracula.nvim";
|
||||
};
|
||||
nvim-treesitter = pkgs.vimUtils.buildVimPluginFrom2Nix {
|
||||
pname = "nvim-treesitter";
|
||||
version = "d6a0a26";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "nvim-treesitter";
|
||||
repo = "nvim-treesitter";
|
||||
rev = "d6a0a26b8563409d4660def7320a4f4bc23954df";
|
||||
sha256 = "WqTxPlN39/IoDh7/nWbY+yArkkDYD8IRADhSt0X0yZs=";
|
||||
fetchSubmodules = false;
|
||||
};
|
||||
meta.homepage = "https://github.com/nvim-treesitter/nvim-treesitter";
|
||||
};
|
||||
playground = pkgs.vimUtils.buildVimPluginFrom2Nix {
|
||||
pname = "playground";
|
||||
version = "787a7a8";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "nvim-treesitter";
|
||||
repo = "playground";
|
||||
rev = "787a7a8d4444e58467d6b3d4b88a497e7d494643";
|
||||
sha256 = "YMINv064VzuzZLuQNY6HN3oCZvYjNQi6IMliQPTijfg=";
|
||||
fetchSubmodules = false;
|
||||
};
|
||||
meta.homepage = "https://github.com/nvim-treesitter/playground";
|
||||
};
|
||||
Jenkinsfile-vim-syntax = pkgs.vimUtils.buildVimPluginFrom2Nix {
|
||||
pname = "Jenkinsfile-vim-syntax";
|
||||
version = "0d05729";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "martinda";
|
||||
repo = "Jenkinsfile-vim-syntax";
|
||||
rev = "0d05729168ea44d60862f17cffa80024ab30bcc9";
|
||||
sha256 = "/qUlzGfo2OhHEBGaoTH8K4VVT0Zg9ocJBb84orMD4xc=";
|
||||
fetchSubmodules = false;
|
||||
};
|
||||
meta.homepage = "https://github.com/martinda/Jenkinsfile-vim-syntax";
|
||||
};
|
||||
popup-nvim = pkgs.vimUtils.buildVimPluginFrom2Nix {
|
||||
pname = "popup.nvim";
|
||||
version = "b7404d3";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "nvim-lua";
|
||||
repo = "popup.nvim";
|
||||
rev = "b7404d35d5d3548a82149238289fa71f7f6de4ac";
|
||||
sha256 = "dNWz/xovUg55fDZUpVs/2kLphk3lqQyvPtc9ATwbeSQ=";
|
||||
fetchSubmodules = false;
|
||||
};
|
||||
meta.homepage = "https://github.com/nvim-lua/popup.nvim";
|
||||
};
|
||||
plenary-nvim = pkgs.vimUtils.buildVimPluginFrom2Nix {
|
||||
pname = "plenary.nvim";
|
||||
version = "5d4a65a";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "nvim-lua";
|
||||
repo = "plenary.nvim";
|
||||
rev = "5d4a65a84d2eb2ee035c667d01ef8e7cafb8a549";
|
||||
sha256 = "ctluRYRvuOR/LmRmtQoztY1BuOezU1zdTlKrARuN/J0=";
|
||||
fetchSubmodules = false;
|
||||
};
|
||||
meta.homepage = "https://github.com/nvim-lua/plenary.nvim";
|
||||
};
|
||||
telescope-nvim = pkgs.vimUtils.buildVimPluginFrom2Nix {
|
||||
pname = "telescope.nvim";
|
||||
version = "82e3cc3";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "nvim-telescope";
|
||||
repo = "telescope.nvim";
|
||||
rev = "82e3cc322ad87b262aef092cb7475e769740e83a";
|
||||
sha256 = "72Ff7d4f7EHRG9+r/U9BV5XbN1vMkyVoZcfrZ6uVQuA=";
|
||||
fetchSubmodules = false;
|
||||
};
|
||||
meta.homepage = "https://github.com/nvim-telescope/telescope.nvim";
|
||||
};
|
||||
telescope-fzf-native-nvim = pkgs.vimUtils.buildVimPluginFrom2Nix {
|
||||
pname = "telescope-fzf-native.nvim";
|
||||
version = "b8662b0";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "nvim-telescope";
|
||||
repo = "telescope-fzf-native.nvim";
|
||||
rev = "b8662b076175e75e6497c59f3e2799b879d7b954";
|
||||
sha256 = "gd/nNgMhvHdJWOlHMdYxY8Hi8Qo4F66TjKSewNKNR3I=";
|
||||
fetchSubmodules = false;
|
||||
};
|
||||
buildPhase = "make";
|
||||
meta.homepage = "https://github.com/nvim-telescope/telescope-fzf-native.nvim";
|
||||
};
|
||||
project-nvim = pkgs.vimUtils.buildVimPluginFrom2Nix {
|
||||
pname = "project.nvim";
|
||||
version = "71d0e23";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "ahmedkhalf";
|
||||
repo = "project.nvim";
|
||||
rev = "71d0e23dcfc43cfd6bb2a97dc5a7de1ab47a6538";
|
||||
sha256 = "RUPbmMPfa1lT2fIslC9vZR3e23IkOyPpYnWDytxkvUs=";
|
||||
fetchSubmodules = false;
|
||||
};
|
||||
meta.homepage = "https://github.com/ahmedkhalf/project.nvim";
|
||||
};
|
||||
nvim-lspconfig = pkgs.vimUtils.buildVimPluginFrom2Nix {
|
||||
pname = "nvim-lspconfig";
|
||||
version = "22b21bc";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "neovim";
|
||||
repo = "nvim-lspconfig";
|
||||
rev = "22b21bc000a8320675ea10f4f50f1bbd48d09ff2";
|
||||
sha256 = "9SrA6rsrpjVZC2OuEaC1faYXqpT8rrDsZ4Sqz60D7Y4=";
|
||||
fetchSubmodules = false;
|
||||
};
|
||||
meta.homepage = "https://github.com/neovim/nvim-lspconfig";
|
||||
};
|
||||
nvim-web-devicons = pkgs.vimUtils.buildVimPluginFrom2Nix {
|
||||
pname = "nvim-web-devicons";
|
||||
version = "8df4988";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "kyazdani42";
|
||||
repo = "nvim-web-devicons";
|
||||
rev = "8df4988ecf8599fc1f8f387bbf2eae790e4c5ffb";
|
||||
sha256 = "a6vlRuNAa5oJy5AFp0SjqNUwSE/kc8jaII7T9IcG+Kw=";
|
||||
fetchSubmodules = false;
|
||||
};
|
||||
meta.homepage = "https://github.com/kyazdani42/nvim-web-devicons";
|
||||
};
|
||||
lsp-trouble-nvim = pkgs.vimUtils.buildVimPluginFrom2Nix {
|
||||
pname = "lsp-trouble.nvim";
|
||||
version = "4a45782";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "folke";
|
||||
repo = "lsp-trouble.nvim";
|
||||
rev = "4a45782db943f95500b61ffce187bf4cada954ae";
|
||||
sha256 = "qkJkMPxmUVytymwgXI8BW3OPMZcGRT9pSA4LzXhOlZg=";
|
||||
fetchSubmodules = false;
|
||||
};
|
||||
meta.homepage = "https://github.com/folke/lsp-trouble.nvim";
|
||||
};
|
||||
lspkind-nvim = pkgs.vimUtils.buildVimPluginFrom2Nix {
|
||||
pname = "lspkind-nvim";
|
||||
version = "f3b5efa";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "onsails";
|
||||
repo = "lspkind-nvim";
|
||||
rev = "f3b5efa11f0665accb7bd0258260b9d08dd4956e";
|
||||
sha256 = "qIs65OIV0m5Y3pe5ozG6sYa1yIx0vXpkNC0Gkkm9amw=";
|
||||
fetchSubmodules = false;
|
||||
};
|
||||
meta.homepage = "https://github.com/onsails/lspkind-nvim";
|
||||
};
|
||||
lsp-status-nvim = pkgs.vimUtils.buildVimPluginFrom2Nix {
|
||||
pname = "lsp-status.nvim";
|
||||
version = "e8e5303";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "nvim-lua";
|
||||
repo = "lsp-status.nvim";
|
||||
rev = "e8e5303f9ee3d8dc327c97891eaa1257ba5d4eee";
|
||||
sha256 = "otDFYc9Sl1OYmkrWFCzgAG0XkXyvR/ebRe2zAOwQ1IA=";
|
||||
fetchSubmodules = false;
|
||||
};
|
||||
meta.homepage = "https://github.com/nvim-lua/lsp-status.nvim";
|
||||
};
|
||||
nvim-cmp = pkgs.vimUtils.buildVimPluginFrom2Nix {
|
||||
pname = "nvim-cmp";
|
||||
version = "edc2a50";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "hrsh7th";
|
||||
repo = "nvim-cmp";
|
||||
rev = "edc2a503ee33e2a62e94a2257e9e3bbd50fa6feb";
|
||||
sha256 = "5/ZvonFG65i+bBKAdlgD0+zI87BgIaEGFwocsPkbmS0=";
|
||||
fetchSubmodules = false;
|
||||
};
|
||||
meta.homepage = "https://github.com/hrsh7th/nvim-cmp";
|
||||
};
|
||||
cmp-nvim-lsp = pkgs.vimUtils.buildVimPluginFrom2Nix {
|
||||
pname = "cmp-nvim-lsp";
|
||||
version = "1341172";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "hrsh7th";
|
||||
repo = "cmp-nvim-lsp";
|
||||
rev = "134117299ff9e34adde30a735cd8ca9cf8f3db81";
|
||||
sha256 = "jLfW4xoYnEOWa7oWSmkB7vNxu9Jgttbme+nTiAC92so=";
|
||||
fetchSubmodules = false;
|
||||
};
|
||||
meta.homepage = "https://github.com/hrsh7th/cmp-nvim-lsp";
|
||||
};
|
||||
LuaSnip = pkgs.vimUtils.buildVimPluginFrom2Nix {
|
||||
pname = "LuaSnip";
|
||||
version = "0528072";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "L3MON4D3";
|
||||
repo = "LuaSnip";
|
||||
rev = "052807223ba4d9babb412f12f08da0b34bc083cf";
|
||||
sha256 = "rA6c/Yq3Vk9Pqrm38vIJJLufPNB1uHkuu5wATlkcBD0=";
|
||||
fetchSubmodules = false;
|
||||
};
|
||||
meta.homepage = "https://github.com/L3MON4D3/LuaSnip";
|
||||
};
|
||||
cmp_luasnip = pkgs.vimUtils.buildVimPluginFrom2Nix {
|
||||
pname = "cmp_luasnip";
|
||||
version = "75bf643";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "saadparwaiz1";
|
||||
repo = "cmp_luasnip";
|
||||
rev = "75bf6434f175206cd219f9d2bbcae154a009346c";
|
||||
sha256 = "j26ufCjpIAaoaK2Dp9fI0oaEW05tC0a89omz6k3lpis=";
|
||||
fetchSubmodules = false;
|
||||
};
|
||||
meta.homepage = "https://github.com/saadparwaiz1/cmp_luasnip";
|
||||
};
|
||||
cmp-nvim-lua = pkgs.vimUtils.buildVimPluginFrom2Nix {
|
||||
pname = "cmp-nvim-lua";
|
||||
version = "d276254";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "hrsh7th";
|
||||
repo = "cmp-nvim-lua";
|
||||
rev = "d276254e7198ab7d00f117e88e223b4bd8c02d21";
|
||||
sha256 = "/xUfw5adjXu8ySZBBFrLVJ1FCNJzfh79wf+wJsW6sIY=";
|
||||
fetchSubmodules = false;
|
||||
};
|
||||
meta.homepage = "https://github.com/hrsh7th/cmp-nvim-lua";
|
||||
};
|
||||
cmp-path = pkgs.vimUtils.buildVimPluginFrom2Nix {
|
||||
pname = "cmp-path";
|
||||
version = "d83839a";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "hrsh7th";
|
||||
repo = "cmp-path";
|
||||
rev = "d83839ae510d18530c6d36b662a9e806d4dceb73";
|
||||
sha256 = "6WCIwAmCjOaBh1jrmeVttGQVNLZTPeWY2T7+X8wD9W4=";
|
||||
fetchSubmodules = false;
|
||||
};
|
||||
meta.homepage = "https://github.com/hrsh7th/cmp-path";
|
||||
};
|
||||
cmp-buffer = pkgs.vimUtils.buildVimPluginFrom2Nix {
|
||||
pname = "cmp-buffer";
|
||||
version = "a706dc6";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "hrsh7th";
|
||||
repo = "cmp-buffer";
|
||||
rev = "a706dc69c49110038fe570e5c9c33d6d4f67015b";
|
||||
sha256 = "FdWs15eTad4igwN5F5+CKxSMQi9eX07BXjM/HgTIURc=";
|
||||
fetchSubmodules = false;
|
||||
};
|
||||
meta.homepage = "https://github.com/hrsh7th/cmp-buffer";
|
||||
};
|
||||
cmp-treesitter = pkgs.vimUtils.buildVimPluginFrom2Nix {
|
||||
pname = "cmp-treesitter";
|
||||
version = "a6b4c95";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "ray-x";
|
||||
repo = "cmp-treesitter";
|
||||
rev = "a6b4c95ee922cace635b5a46c7fcc691d2559fbb";
|
||||
sha256 = "Skdb113mgJqPJGUCk08ymo2IrnCyMO2KY36rOIxFHRk=";
|
||||
fetchSubmodules = false;
|
||||
};
|
||||
meta.homepage = "https://github.com/ray-x/cmp-treesitter";
|
||||
};
|
||||
cmp-cmdline = pkgs.vimUtils.buildVimPluginFrom2Nix {
|
||||
pname = "cmp-cmdline";
|
||||
version = "29ca81a";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "hrsh7th";
|
||||
repo = "cmp-cmdline";
|
||||
rev = "29ca81a6f0f288e6311b3377d9d9684d22eac2ec";
|
||||
sha256 = "BkMvtwkLnT0tnLn9F+vt3vtmAQOBVFwFC3YF7ZsE8Hs=";
|
||||
fetchSubmodules = false;
|
||||
};
|
||||
meta.homepage = "https://github.com/hrsh7th/cmp-cmdline";
|
||||
};
|
||||
cmp-nvim-lsp-document-symbol = pkgs.vimUtils.buildVimPluginFrom2Nix {
|
||||
pname = "cmp-nvim-lsp-document-symbol";
|
||||
version = "29d12e5";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "hrsh7th";
|
||||
repo = "cmp-nvim-lsp-document-symbol";
|
||||
rev = "29d12e55cf49ee07b829114ad39b161cad2544ab";
|
||||
sha256 = "i3lc1u+ml1Zh6bx+uaiIYZZbQhAhJyMbeWzIYwgZlXA=";
|
||||
fetchSubmodules = false;
|
||||
};
|
||||
meta.homepage = "https://github.com/hrsh7th/cmp-nvim-lsp-document-symbol";
|
||||
};
|
||||
nvim-autopairs = pkgs.vimUtils.buildVimPluginFrom2Nix {
|
||||
pname = "nvim-autopairs";
|
||||
version = "18fe311";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "windwp";
|
||||
repo = "nvim-autopairs";
|
||||
rev = "18fe311bb967d16ddf2cc28e7e71f234c37d3e26";
|
||||
sha256 = "Pln8qhfjEJ2VXcDPZ0P6UNQHTcY3Xw58B4X56IVr008=";
|
||||
fetchSubmodules = false;
|
||||
};
|
||||
meta.homepage = "https://github.com/windwp/nvim-autopairs";
|
||||
};
|
||||
nvim-ts-autotag = pkgs.vimUtils.buildVimPluginFrom2Nix {
|
||||
pname = "nvim-ts-autotag";
|
||||
version = "80d427a";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "windwp";
|
||||
repo = "nvim-ts-autotag";
|
||||
rev = "80d427af7b898768c8d8538663d52dee133da86f";
|
||||
sha256 = "8SINCRoarkkQdrKzq4xujn197G4BRHQ7HYJQj929nME=";
|
||||
fetchSubmodules = false;
|
||||
};
|
||||
meta.homepage = "https://github.com/windwp/nvim-ts-autotag";
|
||||
};
|
||||
Comment-nvim = pkgs.vimUtils.buildVimPluginFrom2Nix {
|
||||
pname = "Comment.nvim";
|
||||
version = "00aff9f";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "numToStr";
|
||||
repo = "Comment.nvim";
|
||||
rev = "00aff9f0fb75328c686a8484cd090ad72c355cb1";
|
||||
sha256 = "l84IFDOiqfPBdWxKbp51JJZZG6iTv/uBHtV5vFHU+gc=";
|
||||
fetchSubmodules = false;
|
||||
};
|
||||
meta.homepage = "https://github.com/numToStr/Comment.nvim";
|
||||
};
|
||||
nvim-treesitter-textobjects = pkgs.vimUtils.buildVimPluginFrom2Nix {
|
||||
pname = "nvim-treesitter-textobjects";
|
||||
version = "eb8ff2f";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "nvim-treesitter";
|
||||
repo = "nvim-treesitter-textobjects";
|
||||
rev = "eb8ff2f55915a0b02167315e72fe7f60cbd7f16d";
|
||||
sha256 = "R5ie5E+AMCOTwYedXeIN0ltOxE9iKpAhwHd9X91TPRw=";
|
||||
fetchSubmodules = false;
|
||||
};
|
||||
meta.homepage = "https://github.com/nvim-treesitter/nvim-treesitter-textobjects";
|
||||
};
|
||||
surround-nvim = pkgs.vimUtils.buildVimPluginFrom2Nix {
|
||||
pname = "surround.nvim";
|
||||
version = "a21c3ee";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "blackCauldron7";
|
||||
repo = "surround.nvim";
|
||||
rev = "a21c3eeee2f139d20694ff70135b3557cadece1c";
|
||||
sha256 = "U0Kz99O7Vi9OAIxSFnqOfVtlVRvHlX2ExhPZnG0KSnE=";
|
||||
fetchSubmodules = false;
|
||||
};
|
||||
meta.homepage = "https://github.com/blackCauldron7/surround.nvim";
|
||||
};
|
||||
vim-matchup = pkgs.vimUtils.buildVimPluginFrom2Nix {
|
||||
pname = "vim-matchup";
|
||||
version = "ef044ee";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "andymass";
|
||||
repo = "vim-matchup";
|
||||
rev = "ef044ee012baa01d6f4ad79a04eeb5edb5bc7d84";
|
||||
sha256 = "HhNvaiVYR8sI4UItJVZDYodZjQYmV1ZJ0NmMDiN5DqY=";
|
||||
fetchSubmodules = false;
|
||||
};
|
||||
meta.homepage = "https://github.com/andymass/vim-matchup";
|
||||
};
|
||||
undotree = pkgs.vimUtils.buildVimPluginFrom2Nix {
|
||||
pname = "undotree";
|
||||
version = "bdd7153";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "mbbill";
|
||||
repo = "undotree";
|
||||
rev = "bdd715338a3a0c82674153108a3deaf827d36cfb";
|
||||
sha256 = "J4qQS000SJ/CTElLhpEV0dVXGQ5XRg6SnENtpQCExrw=";
|
||||
fetchSubmodules = false;
|
||||
};
|
||||
meta.homepage = "https://github.com/mbbill/undotree";
|
||||
};
|
||||
lualine-nvim = pkgs.vimUtils.buildVimPluginFrom2Nix {
|
||||
pname = "lualine.nvim";
|
||||
version = "d68631d";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "nvim-lualine";
|
||||
repo = "lualine.nvim";
|
||||
rev = "d68631d2c02bd31d937349d739c625cc81dd9ac1";
|
||||
sha256 = "5DYBCXS+DLsoK5yNlcGVcKUYd/gbAOYuLIQbUVd2YGw=";
|
||||
fetchSubmodules = false;
|
||||
};
|
||||
meta.homepage = "https://github.com/nvim-lualine/lualine.nvim";
|
||||
};
|
||||
nvim-bufferline-lua = pkgs.vimUtils.buildVimPluginFrom2Nix {
|
||||
pname = "nvim-bufferline.lua";
|
||||
version = "463637a";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "akinsho";
|
||||
repo = "nvim-bufferline.lua";
|
||||
rev = "463637a3ac86dcaacbcd47aa608f53aaad749696";
|
||||
sha256 = "CBWRJiPYhNR86imNHt79P24uthMW09kRBQ53pCew8Fo=";
|
||||
fetchSubmodules = false;
|
||||
};
|
||||
meta.homepage = "https://github.com/akinsho/nvim-bufferline.lua";
|
||||
};
|
||||
nvim-tree-lua = pkgs.vimUtils.buildVimPluginFrom2Nix {
|
||||
pname = "nvim-tree.lua";
|
||||
version = "2e33b16";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "kyazdani42";
|
||||
repo = "nvim-tree.lua";
|
||||
rev = "2e33b1654384921ec1cc9656a2018744f3f1ce81";
|
||||
sha256 = "VFiZJt6vCzSyK1BL9UYYKj3nBKMrthiC0GR3mEhma5E=";
|
||||
fetchSubmodules = false;
|
||||
};
|
||||
meta.homepage = "https://github.com/kyazdani42/nvim-tree.lua";
|
||||
};
|
||||
indent-blankline-nvim = pkgs.vimUtils.buildVimPluginFrom2Nix {
|
||||
pname = "indent-blankline.nvim";
|
||||
version = "0f8df7e";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "lukas-reineke";
|
||||
repo = "indent-blankline.nvim";
|
||||
rev = "0f8df7e43f0cae4c44e0e8383436ad602f333419";
|
||||
sha256 = "8sELQ8TY3DN9V+pG6Li0wXb5/xe5uhPymL/JSAplWI4=";
|
||||
fetchSubmodules = false;
|
||||
};
|
||||
meta.homepage = "https://github.com/lukas-reineke/indent-blankline.nvim";
|
||||
};
|
||||
virt-column-nvim = pkgs.vimUtils.buildVimPluginFrom2Nix {
|
||||
pname = "virt-column.nvim";
|
||||
version = "7b013a2";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "lukas-reineke";
|
||||
repo = "virt-column.nvim";
|
||||
rev = "7b013a2c873df8e1ec9412532b5ac7592d35a61d";
|
||||
sha256 = "CmexkPZnguQc0597h1jWIgxrrUOOevQV7TXsLKSveIE=";
|
||||
fetchSubmodules = false;
|
||||
};
|
||||
meta.homepage = "https://github.com/lukas-reineke/virt-column.nvim";
|
||||
};
|
||||
nvim-colorizer-lua = pkgs.vimUtils.buildVimPluginFrom2Nix {
|
||||
pname = "nvim-colorizer.lua";
|
||||
version = "36c610a";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "norcalli";
|
||||
repo = "nvim-colorizer.lua";
|
||||
rev = "36c610a9717cc9ec426a07c8e6bf3b3abcb139d6";
|
||||
sha256 = "6YrnItxExL2C8pNIdLd+hXCjsB2MbZANwWkah6dreD8=";
|
||||
fetchSubmodules = false;
|
||||
};
|
||||
meta.homepage = "https://github.com/norcalli/nvim-colorizer.lua";
|
||||
};
|
||||
gitsigns-nvim = pkgs.vimUtils.buildVimPluginFrom2Nix {
|
||||
pname = "gitsigns.nvim";
|
||||
version = "5eb87a0";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "lewis6991";
|
||||
repo = "gitsigns.nvim";
|
||||
rev = "5eb87a0b05914d3763277ebe257bd5bafcdde8cd";
|
||||
sha256 = "jT01Opd/PEqXs80ZLCRqVcs0H28df+rNNp3n5wZ7lQk=";
|
||||
fetchSubmodules = false;
|
||||
};
|
||||
meta.homepage = "https://github.com/lewis6991/gitsigns.nvim";
|
||||
};
|
||||
spellsitter-nvim = pkgs.vimUtils.buildVimPluginFrom2Nix {
|
||||
pname = "spellsitter.nvim";
|
||||
version = "3b378cf";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "lewis6991";
|
||||
repo = "spellsitter.nvim";
|
||||
rev = "3b378cfb74dcdd159f52d6506401915f65c51fd5";
|
||||
sha256 = "oFx5/IU3T8iHQY6lFnMBynyU8btQgn9cXyOR53C5E0o=";
|
||||
fetchSubmodules = false;
|
||||
};
|
||||
meta.homepage = "https://github.com/lewis6991/spellsitter.nvim";
|
||||
};
|
||||
nvim-notify = pkgs.vimUtils.buildVimPluginFrom2Nix {
|
||||
pname = "nvim-notify";
|
||||
version = "ef027e3";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "rcarriga";
|
||||
repo = "nvim-notify";
|
||||
rev = "ef027e34b618eac42fb0111c1db670ba01793039";
|
||||
sha256 = "PBySkhxwqrVrUECsaqW6JXtDwfQXSwLn3xHcrESH0R0=";
|
||||
fetchSubmodules = false;
|
||||
};
|
||||
meta.homepage = "https://github.com/rcarriga/nvim-notify";
|
||||
};
|
||||
nvim-visual-eof-lua = pkgs.vimUtils.buildVimPluginFrom2Nix {
|
||||
pname = "nvim-visual-eof.lua";
|
||||
version = "3c001c6";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "LumaKernel";
|
||||
repo = "nvim-visual-eof.lua";
|
||||
rev = "3c001c6cda4db5bf62ba33344e61e30230acd9eb";
|
||||
sha256 = "azT2Cv3G5/HHsu/PkW/vW0CmrnZ/T7Q6x9Mlypr6pFY=";
|
||||
fetchSubmodules = false;
|
||||
};
|
||||
meta.homepage = "https://github.com/LumaKernel/nvim-visual-eof.lua";
|
||||
};
|
||||
vim-illuminate = pkgs.vimUtils.buildVimPluginFrom2Nix {
|
||||
pname = "vim-illuminate";
|
||||
version = "2beae05";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "RRethy";
|
||||
repo = "vim-illuminate";
|
||||
rev = "2beae0581caa66cf8c09fad7c7c557f92d49d2bd";
|
||||
sha256 = "GwuMmUZTGk0hlB1dqXGosNRua+Y8woR6SvqqoRI6LOM=";
|
||||
fetchSubmodules = false;
|
||||
};
|
||||
meta.homepage = "https://github.com/RRethy/vim-illuminate";
|
||||
};
|
||||
FTerm-nvim = pkgs.vimUtils.buildVimPluginFrom2Nix {
|
||||
pname = "FTerm.nvim";
|
||||
version = "0911ab9";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "numToStr";
|
||||
repo = "FTerm.nvim";
|
||||
rev = "0911ab93b488fdd8032e695ab56d14357e14e836";
|
||||
sha256 = "MThp2SSzDbK3edKfOtnAHy2NCkuLQs3FCs6h5ox5bl0=";
|
||||
fetchSubmodules = false;
|
||||
};
|
||||
meta.homepage = "https://github.com/numToStr/FTerm.nvim";
|
||||
};
|
||||
todo-comments-nvim = pkgs.vimUtils.buildVimPluginFrom2Nix {
|
||||
pname = "todo-comments.nvim";
|
||||
version = "6570fd2";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "folke";
|
||||
repo = "todo-comments.nvim";
|
||||
rev = "6570fd271d17fec1966522f3a19cc6f4c88824c4";
|
||||
sha256 = "1sRrDNQ8OuWcN/yKTIQ1It3UkUDfe2Ln9d2CCuR0xS4=";
|
||||
fetchSubmodules = false;
|
||||
};
|
||||
meta.homepage = "https://github.com/folke/todo-comments.nvim";
|
||||
};
|
||||
editorconfig-vim = pkgs.vimUtils.buildVimPluginFrom2Nix {
|
||||
pname = "editorconfig-vim";
|
||||
version = "3078cd1";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "editorconfig";
|
||||
repo = "editorconfig-vim";
|
||||
rev = "3078cd10b28904e57d878c0d0dab42aa0a9fdc89";
|
||||
sha256 = "HFHrm+V296IJh27yJW76DD09ehYc8hMxnnvR9+ddP2M=";
|
||||
fetchSubmodules = false;
|
||||
};
|
||||
meta.homepage = "https://github.com/editorconfig/editorconfig-vim";
|
||||
};
|
||||
}
|
50
programs/nvim/plugins.txt
Normal file
50
programs/nvim/plugins.txt
Normal file
|
@ -0,0 +1,50 @@
|
|||
lewis6991/impatient.nvim
|
||||
antoinemadec/FixCursorHold.nvim
|
||||
delphinus/vim-auto-cursorline
|
||||
folke/which-key.nvim
|
||||
folke/tokyonight.nvim
|
||||
Mofiqul/dracula.nvim
|
||||
nvim-treesitter/nvim-treesitter
|
||||
nvim-treesitter/playground
|
||||
martinda/Jenkinsfile-vim-syntax
|
||||
nvim-lua/popup.nvim
|
||||
nvim-lua/plenary.nvim
|
||||
nvim-telescope/telescope.nvim
|
||||
nvim-telescope/telescope-fzf-native.nvim/make
|
||||
ahmedkhalf/project.nvim
|
||||
neovim/nvim-lspconfig
|
||||
kyazdani42/nvim-web-devicons
|
||||
folke/lsp-trouble.nvim
|
||||
onsails/lspkind-nvim
|
||||
nvim-lua/lsp-status.nvim
|
||||
hrsh7th/nvim-cmp
|
||||
hrsh7th/cmp-nvim-lsp
|
||||
L3MON4D3/LuaSnip
|
||||
saadparwaiz1/cmp_luasnip
|
||||
hrsh7th/cmp-nvim-lua
|
||||
hrsh7th/cmp-path
|
||||
hrsh7th/cmp-buffer
|
||||
ray-x/cmp-treesitter
|
||||
hrsh7th/cmp-cmdline
|
||||
hrsh7th/cmp-nvim-lsp-document-symbol
|
||||
windwp/nvim-autopairs
|
||||
windwp/nvim-ts-autotag
|
||||
numToStr/Comment.nvim
|
||||
nvim-treesitter/nvim-treesitter-textobjects
|
||||
blackCauldron7/surround.nvim
|
||||
andymass/vim-matchup
|
||||
mbbill/undotree
|
||||
nvim-lualine/lualine.nvim
|
||||
akinsho/nvim-bufferline.lua
|
||||
kyazdani42/nvim-tree.lua
|
||||
lukas-reineke/indent-blankline.nvim
|
||||
lukas-reineke/virt-column.nvim
|
||||
norcalli/nvim-colorizer.lua
|
||||
lewis6991/gitsigns.nvim
|
||||
lewis6991/spellsitter.nvim
|
||||
rcarriga/nvim-notify
|
||||
LumaKernel/nvim-visual-eof.lua
|
||||
RRethy/vim-illuminate
|
||||
numToStr/FTerm.nvim
|
||||
folke/todo-comments.nvim
|
||||
editorconfig/editorconfig-vim
|
45
programs/nvim/update-plugins.sh
Executable file
45
programs/nvim/update-plugins.sh
Executable file
|
@ -0,0 +1,45 @@
|
|||
#!/usr/bin/env nix-shell
|
||||
#!nix-shell update-shell.nix -i bash
|
||||
|
||||
script_dir="$(dirname "$(realpath "$0")")"
|
||||
plugins="${script_dir}/plugins.txt"
|
||||
nix_new_file="${script_dir}/plugins_new.nix"
|
||||
nix_file="${script_dir}/plugins.nix"
|
||||
|
||||
echo '# This file has been auto-generated' > "$nix_new_file"
|
||||
echo '{ pkgs, ... }:' >> "$nix_new_file"
|
||||
|
||||
echo "{" >> "$nix_new_file"
|
||||
while IFS='' read -r LINE || [ -n "${LINE}" ]; do
|
||||
owner="$(echo "$LINE" | cut -d'/' -f1)"
|
||||
repo="$(echo "$LINE" | cut -d'/' -f2)"
|
||||
build="$(echo "$LINE" | cut -d'/' -f3)"
|
||||
name="$(echo "$repo" | tr [.] '-')"
|
||||
src="$(nix-prefetch-github --nix --no-fetch-submodules "$owner" "$repo" 2> /dev/null | tail -n +4)"
|
||||
rev="$(echo "$src" | grep rev | cut -d '"' -f 2)"
|
||||
|
||||
echo "Updating ${owner}/${repo} ..."
|
||||
|
||||
echo "${name} = pkgs.vimUtils.buildVimPluginFrom2Nix {" >> "$nix_new_file"
|
||||
echo "pname = \"${repo}\";" >> "$nix_new_file"
|
||||
echo "version = \"${rev:0:7}\";" >> "$nix_new_file"
|
||||
echo "src = ${src};" >> "$nix_new_file"
|
||||
|
||||
if [ -n "$build" ]; then
|
||||
echo "buildPhase = \"${build}\";" >> "$nix_new_file"
|
||||
fi
|
||||
|
||||
echo "meta.homepage = \"https://github.com/${owner}/${repo}\";" >> "$nix_new_file"
|
||||
echo '};' >> "$nix_new_file"
|
||||
done < "$plugins"
|
||||
echo "}" >> "$nix_new_file"
|
||||
|
||||
nixpkgs-fmt "$nix_new_file"
|
||||
|
||||
if test -f "$nix_file"; then
|
||||
diff -U 4 "$nix_file" "$nix_new_file" | bat --paging=never -ldiff
|
||||
mv "$nix_new_file" "$nix_file"
|
||||
else
|
||||
mv "$nix_new_file" "$nix_file"
|
||||
bat --paging=never "$nix_file"
|
||||
fi
|
9
programs/nvim/update-shell.nix
Normal file
9
programs/nvim/update-shell.nix
Normal file
|
@ -0,0 +1,9 @@
|
|||
{ pkgs ? import <nixpkgs> { } }:
|
||||
|
||||
pkgs.mkShell {
|
||||
packages = with pkgs; [
|
||||
bat
|
||||
nix-prefetch-github
|
||||
nixpkgs-fmt
|
||||
];
|
||||
}
|
73
programs/starship.nix
Normal file
73
programs/starship.nix
Normal file
|
@ -0,0 +1,73 @@
|
|||
{
|
||||
programs.starship = {
|
||||
enable = true;
|
||||
enableFishIntegration = true;
|
||||
|
||||
settings = {
|
||||
add_newline = true;
|
||||
|
||||
cmd_duration = {
|
||||
format = "\\[[ $duration]($style)\\]";
|
||||
};
|
||||
|
||||
docker_context = {
|
||||
symbol = " ";
|
||||
format = "\\[[$symbol$context]($style)\\]";
|
||||
};
|
||||
|
||||
elixir = {
|
||||
symbol = " ";
|
||||
format = "\\[[$symbol($version \\(OTP $otp_version\\))]($style)\\]";
|
||||
};
|
||||
|
||||
erlang = {
|
||||
symbol = " ";
|
||||
format = "\\[[$symbol($version)]($style)\\]";
|
||||
};
|
||||
|
||||
git_branch = {
|
||||
symbol = " ";
|
||||
format = "\\[[$symbol$branch]($style)\\]";
|
||||
};
|
||||
|
||||
java = {
|
||||
symbol = " ";
|
||||
format = "\\[[$symbol($version)]($style)\\]";
|
||||
};
|
||||
|
||||
nix_shell = {
|
||||
symbol = " ";
|
||||
format = "\\[[$symbol$state( \\($name\\))]($style)\\]";
|
||||
};
|
||||
|
||||
nodejs = {
|
||||
symbol = " ";
|
||||
format = "\\[[$symbol($version)]($style)\\]";
|
||||
};
|
||||
|
||||
package = {
|
||||
symbol = " ";
|
||||
format = "\\[[$symbol$version]($style)\\]";
|
||||
};
|
||||
|
||||
php = {
|
||||
symbol = " ";
|
||||
format = "\\[[$symbol($version)]($style)\\]";
|
||||
};
|
||||
|
||||
python = {
|
||||
symbol = " ";
|
||||
format = "\\[[\${symbol}\${pyenv_prefix}(\${version})(\\($virtualenv\\))]($style)\\]";
|
||||
};
|
||||
|
||||
ruby = {
|
||||
symbol = " ";
|
||||
format = "\\[[$symbol($version)]($style)\\]";
|
||||
};
|
||||
|
||||
time = {
|
||||
format = "\\[[$time]($style)\\]";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
Loading…
Reference in a new issue