Initial
This commit is contained in:
@@ -0,0 +1,5 @@
|
|||||||
|
[Definition]
|
||||||
|
_groupsre = (?:(?:,?\s*"\w+":(?:"[^"]+"|\w+))*)
|
||||||
|
failregex = ^\{%(_groupsre)s,?\s*"remoteAddr":"<HOST>"%(_groupsre)s,?\s*"message":"Login failed:
|
||||||
|
^\{%(_groupsre)s,?\s*"remoteAddr":"<HOST>"%(_groupsre)s,?\s*"message":"Trusted domain error.
|
||||||
|
datepattern = ,?\s*"time"\s*:\s*"%%Y-%%m-%%d[T ]%%H:%%M:%%S(%%z)?"
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
[nextcloud]
|
||||||
|
backend = auto
|
||||||
|
enabled = true
|
||||||
|
port = 80,443
|
||||||
|
protocol = tcp
|
||||||
|
bantime = 1h
|
||||||
|
findtime = 30m
|
||||||
|
maxretry = 5
|
||||||
|
filter = nextcloud
|
||||||
|
logpath = /nextcloud/data/nextcloud.log
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
[global]
|
||||||
|
bantime = 15m
|
||||||
|
findtime = 40m
|
||||||
|
maxretry = 8
|
||||||
|
ignoreip = 192.168.1.67
|
||||||
|
|
||||||
|
[sshd]
|
||||||
|
enabled = true
|
||||||
|
logpath = /var/log/auth.log
|
||||||
|
action = iptables[name=SSH, port=22, protocol=tcp]
|
||||||
|
telegram
|
||||||
|
|
||||||
|
[recidive]
|
||||||
|
enabled = true
|
||||||
|
logpath = /var/log/auth.log
|
||||||
|
findtime = 7d
|
||||||
|
bantime = -1
|
||||||
|
maxretry = 4
|
||||||
|
action = iptables[name=SSH, port=22, protocol=tcp]
|
||||||
|
telegram
|
||||||
|
|
||||||
|
[nextcloud]
|
||||||
|
backend = auto
|
||||||
|
enabled = true
|
||||||
|
port = 80,443
|
||||||
|
protocol = tcp
|
||||||
|
bantime = 1h
|
||||||
|
findtime = 30m
|
||||||
|
maxretry = 5
|
||||||
|
filter = nextcloud
|
||||||
|
logpath = /nextcloud/data/nextcloud.log
|
||||||
Executable
+60
@@ -0,0 +1,60 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Sends text messages using Telegram
|
||||||
|
# to alert webmaster of banning.
|
||||||
|
|
||||||
|
# Require one argument, one of the following
|
||||||
|
# start
|
||||||
|
# stop
|
||||||
|
# ban
|
||||||
|
# unban
|
||||||
|
# Optional second argument: Ip for ban/unband
|
||||||
|
|
||||||
|
|
||||||
|
# Display usage information
|
||||||
|
function show_usage {
|
||||||
|
echo "Usage: $0 action <ip>"
|
||||||
|
echo "Where action start, stop, ban, unban"
|
||||||
|
echo "and IP is optional passed to ban, unban"
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# Send notification
|
||||||
|
function send_msg {
|
||||||
|
apiToken=6303844336:AAH6gtpXi3dfvK4cUYKnhLp8CeU7GDW4U0E
|
||||||
|
chatId=5295465362
|
||||||
|
url="https://api.telegram.org/bot$apiToken/sendMessage"
|
||||||
|
|
||||||
|
curl -s -X POST $url -d chat_id=$chatId -d text="$1"
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# Check for script arguments
|
||||||
|
if [ $# -lt 1 ]
|
||||||
|
then
|
||||||
|
show_usage
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# Take action depending on argument
|
||||||
|
if [ "$1" = 'start' ]
|
||||||
|
then
|
||||||
|
msg='Fail2ban+just+started.'
|
||||||
|
send_msg $msg
|
||||||
|
elif [ "$1" = 'stop' ]
|
||||||
|
then
|
||||||
|
msg='Fail2ban+just+stoped.'
|
||||||
|
send_msg $msg
|
||||||
|
elif [ "$1" = 'ban' ]
|
||||||
|
then
|
||||||
|
msg=$([ "$2" != '' ] && echo "Fail2ban+just+banned+$2" || echo 'Fail2ban+just+banned+an+ip.' )
|
||||||
|
send_msg $msg
|
||||||
|
elif [ "$1" = 'unban' ]
|
||||||
|
then
|
||||||
|
msg=$([ "$2" != '' ] && echo "Fail2ban+just+unbanned+$2" || echo "Fail2ban+just+unbanned+an+ip." )
|
||||||
|
send_msg $msg
|
||||||
|
else
|
||||||
|
show_usage
|
||||||
|
fi
|
||||||
+274
@@ -0,0 +1,274 @@
|
|||||||
|
|
||||||
|
require('plugins')
|
||||||
|
-- General settings
|
||||||
|
require('options')
|
||||||
|
-- keymaps
|
||||||
|
require('keymaps')
|
||||||
|
|
||||||
|
|
||||||
|
--plugin short settings
|
||||||
|
-- require('lspConfig')
|
||||||
|
|
||||||
|
|
||||||
|
--############
|
||||||
|
-- # Autorun #
|
||||||
|
-- ###########
|
||||||
|
|
||||||
|
-- remove_trailing_whitespace on save
|
||||||
|
vim.api.nvim_create_autocmd("BufWritePre", {
|
||||||
|
pattern = "*",
|
||||||
|
callback = function()
|
||||||
|
require('functions').remove_trailing_whitespace()
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
-- set spelling on these files
|
||||||
|
vim.api.nvim_create_autocmd("FileType", {
|
||||||
|
pattern = { "markdown", "text" },
|
||||||
|
callback = function()
|
||||||
|
vim.opt_local.spell = true
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
--############
|
||||||
|
--# setup #
|
||||||
|
--###########
|
||||||
|
|
||||||
|
-- Font Icons
|
||||||
|
vim.g.WebDevIconsUnicodeDecorateFolderNodes = 1
|
||||||
|
|
||||||
|
-- telescope
|
||||||
|
require("telescope").setup {
|
||||||
|
extensions = {
|
||||||
|
["ui-select"] = {
|
||||||
|
require("telescope.themes").get_dropdown {
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
require("telescope").load_extension("ui-select")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
--"''''''''''''''''''nvim-colorizer'''''''''''''''''''''''''''''''''''''
|
||||||
|
require'colorizer'.setup()
|
||||||
|
-- this is an autocomand to force colorizer to attach to some files
|
||||||
|
vim.api.nvim_exec([[
|
||||||
|
augroup ColorizerAttach
|
||||||
|
autocmd!
|
||||||
|
autocmd BufRead,BufNewFile *.config,*.rasi,*.conf,*.qss,*.css :ColorizerAttachToBuffer
|
||||||
|
augroup END
|
||||||
|
]], false)
|
||||||
|
|
||||||
|
--'''''''''''''' Theme ''''''''''''''''''''''''''''''''''''''''''''''''
|
||||||
|
local function force_backgraund(color)
|
||||||
|
color = color or "catppuccin-mocha"
|
||||||
|
vim.cmd.colorscheme(color)
|
||||||
|
|
||||||
|
vim.api.nvim_set_hl(0, "Normal",{bg = "none"} )
|
||||||
|
vim.api.nvim_set_hl(0, "NormalFloat",{bg = "none"} )
|
||||||
|
end
|
||||||
|
force_backgraund()
|
||||||
|
|
||||||
|
--"''''''''Neotree''''''''''''''''''''''''''''''''''''''''''''''''''''''''
|
||||||
|
require("neo-tree").setup({
|
||||||
|
close_if_last_window = true,
|
||||||
|
})
|
||||||
|
|
||||||
|
--'''''''''''''''''' web-devicons ''''''''''''''''''''''''''''''''''
|
||||||
|
require('nvim-web-devicons').setup{}
|
||||||
|
|
||||||
|
--"''''''''''IndentBlankline''''''''''``````````````````````````````````
|
||||||
|
require("ibl").setup()
|
||||||
|
|
||||||
|
-- '''''''''''''' cmp ''''''''''''''''''''''''''''''''''''''''''''''''
|
||||||
|
-- Set up nvim-cmp.
|
||||||
|
local cmp = require'cmp'
|
||||||
|
|
||||||
|
local kind_icons = {
|
||||||
|
Text = " ",
|
||||||
|
Method = " ",
|
||||||
|
Function = " ",
|
||||||
|
Constructor = " ",
|
||||||
|
Field = " ",
|
||||||
|
Variable = " ",
|
||||||
|
Class = " ",
|
||||||
|
Interface = " ",
|
||||||
|
Module = " ",
|
||||||
|
Property = " ",
|
||||||
|
Unit = " ",
|
||||||
|
Value = " ",
|
||||||
|
Enum = " ",
|
||||||
|
Keyword = " ",
|
||||||
|
Snippet = " ",
|
||||||
|
Color = " ",
|
||||||
|
File = " ",
|
||||||
|
Reference = " ",
|
||||||
|
Folder = " ",
|
||||||
|
EnumMember = " ",
|
||||||
|
Constant = " ",
|
||||||
|
Struct = " ",
|
||||||
|
Event = " ",
|
||||||
|
Operator = " ",
|
||||||
|
TypeParameter = " ",
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
cmp.setup({
|
||||||
|
snippet = {
|
||||||
|
expand = function(args)
|
||||||
|
require('luasnip').lsp_expand(args.body) -- For `luasnip` users.
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
formatting = {
|
||||||
|
format = function(_, vim_item)
|
||||||
|
vim_item.kind = (kind_icons[vim_item.kind] or '') .. vim_item.kind
|
||||||
|
return vim_item
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
window = {
|
||||||
|
completion = cmp.config.window.bordered(),
|
||||||
|
documentation = cmp.config.window.bordered(),
|
||||||
|
},
|
||||||
|
|
||||||
|
mapping = {
|
||||||
|
['<Down>'] = cmp.mapping.select_next_item({ behavior = cmp.SelectBehavior.Select }),
|
||||||
|
['<C-j>'] = cmp.mapping.select_next_item({ behavior = cmp.SelectBehavior.Select }),
|
||||||
|
['<Up>'] = cmp.mapping.select_prev_item({ behavior = cmp.SelectBehavior.Select }),
|
||||||
|
['<C-k>'] = cmp.mapping.select_prev_item({ behavior = cmp.SelectBehavior.Select }),
|
||||||
|
['<C-d>'] = cmp.mapping.scroll_docs(-4),
|
||||||
|
['<C-f>'] = cmp.mapping.scroll_docs(4),
|
||||||
|
['<C-Space>'] = cmp.mapping.complete(),
|
||||||
|
['<C-e>'] = cmp.mapping.close(),
|
||||||
|
['<CR>'] = cmp.mapping.confirm({
|
||||||
|
behavior = cmp.ConfirmBehavior.Insert,
|
||||||
|
select = true,
|
||||||
|
}),
|
||||||
|
|
||||||
|
['<Tab>'] = cmp.mapping(function(fallback)
|
||||||
|
if cmp.visible() then
|
||||||
|
cmp.select_next_item()
|
||||||
|
else
|
||||||
|
fallback()
|
||||||
|
end
|
||||||
|
end, { 'i', 's' }),
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
sources = cmp.config.sources({
|
||||||
|
{ name = 'luasnip' }, -- For luasnip users.
|
||||||
|
{ name = 'path' }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
{ name = 'buffer' },
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
--'''''''''''''nvim-ts-autotag'''''''''''''''''''''''''''''''''''''''''
|
||||||
|
require('nvim-ts-autotag').setup({
|
||||||
|
opts = {
|
||||||
|
enable_close = true, -- Auto close tags
|
||||||
|
enable_rename = true, -- Auto rename pairs of tags
|
||||||
|
enable_close_on_slash = false -- Auto close on trailing </
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
--'''''''''''''''OIL'''''''''''''''''''''''''''''''''''''''''''''''
|
||||||
|
require("oil").setup({
|
||||||
|
lsp_file_methods = {
|
||||||
|
enabled = true,
|
||||||
|
timeout_ms = 1000,
|
||||||
|
autosave_changes = false,
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
--''''''''''''''''''''''''rainbow'''''''''''''''''''''''''''''''''''''''
|
||||||
|
require('rainbow-delimiters.setup').setup {
|
||||||
|
strategy = {
|
||||||
|
},
|
||||||
|
query = {
|
||||||
|
},
|
||||||
|
highlight = {
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
--''''''''''Lualine''''''''''''''''''''''''''''''''''''''''''''''''''''
|
||||||
|
require('lualine').setup {
|
||||||
|
options = {
|
||||||
|
theme = 'catppuccin',
|
||||||
|
icons_enabled = true,
|
||||||
|
component_separators = { left = ' ', right = ' ' },
|
||||||
|
section_separators = { left = '|', right = '|' },
|
||||||
|
globalstatus = true,
|
||||||
|
},
|
||||||
|
|
||||||
|
sections = {
|
||||||
|
lualine_z = {
|
||||||
|
function()
|
||||||
|
local line = vim.fn.line('.')
|
||||||
|
local total = vim.fn.line('$')
|
||||||
|
local percent = math.floor((line / total) * 100)
|
||||||
|
return string.format("%3d%%%% %d☰", percent, total)
|
||||||
|
end
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
--'''''''''Barbar'''''''''''''''''''''''''''''''''''''''''''''''''''
|
||||||
|
require('barbar').setup({
|
||||||
|
animation = false,
|
||||||
|
auto_hide = 1,
|
||||||
|
tabpages = false,
|
||||||
|
clickable = true,
|
||||||
|
icons = {
|
||||||
|
buffer_index = true,
|
||||||
|
buffer_number = false,
|
||||||
|
diagnostics = {
|
||||||
|
[vim.diagnostic.severity.ERROR] = { enabled = true, icon = ' ' },
|
||||||
|
[vim.diagnostic.severity.WARN] = { enabled = true, icon = ' ' },
|
||||||
|
[vim.diagnostic.severity.INFO] = { enabled = false },
|
||||||
|
[vim.diagnostic.severity.HINT] = { enabled = false },
|
||||||
|
},
|
||||||
|
filetype = {
|
||||||
|
enabled = true,
|
||||||
|
},
|
||||||
|
separator = { left = '▎', right = '' },
|
||||||
|
modified = { button = '●' },
|
||||||
|
pinned = { button = '車', filename = true },
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
-- ''''''''''''''autopairs'''''''''''''''''''''''''''''''''''''''
|
||||||
|
local npairs = require("nvim-autopairs")
|
||||||
|
npairs.setup({
|
||||||
|
check_ts = true,
|
||||||
|
ts_config = {
|
||||||
|
lua = {'string'},-- it will not add a pair on that treesitter node
|
||||||
|
javascript = {'template_string'},
|
||||||
|
java = false,-- don't check treesitter on java
|
||||||
|
},
|
||||||
|
fast_wrap = {
|
||||||
|
map = '<M-e>',
|
||||||
|
chars = { '{', '[', '(', '"', "'" },
|
||||||
|
pattern = [=[[%'%"%>%]%)%}%,]]=],
|
||||||
|
end_key = '$',
|
||||||
|
before_key = 'h',
|
||||||
|
after_key = 'l',
|
||||||
|
cursor_pos_before = true,
|
||||||
|
keys = 'qwertyuiopzxcvbnmasdfghjkl',
|
||||||
|
manual_position = true,
|
||||||
|
highlight = 'Search',
|
||||||
|
highlight_grey='Comment'
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
local cmp_autopairs = require('nvim-autopairs.completion.cmp')
|
||||||
|
cmp.event:on(
|
||||||
|
'confirm_done',
|
||||||
|
cmp_autopairs.on_confirm_done()
|
||||||
|
)
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
{
|
||||||
|
"barbar.nvim": { "branch": "master", "commit": "3a74402bdf04745a762de83d5c5e88e3e9b0e2e0" },
|
||||||
|
"buffer-vacuum": { "branch": "main", "commit": "33a454b76b2f2a7f51c27cb50ecc9f1d6327a275" },
|
||||||
|
"catppuccin": { "branch": "main", "commit": "fa42eb5e26819ef58884257d5ae95dd0552b9a66" },
|
||||||
|
"cmp-buffer": { "branch": "main", "commit": "b74fab3656eea9de20a9b8116afa3cfc4ec09657" },
|
||||||
|
"cmp-nvim-lsp": { "branch": "main", "commit": "a8912b88ce488f411177fc8aed358b04dc246d7b" },
|
||||||
|
"cmp-nvim-lua": { "branch": "main", "commit": "f12408bdb54c39c23e67cab726264c10db33ada8" },
|
||||||
|
"cmp-path": { "branch": "main", "commit": "e52e640b7befd8113b3350f46e8cfcfe98fcf730" },
|
||||||
|
"cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" },
|
||||||
|
"indent-blankline.nvim": { "branch": "master", "commit": "005b56001b2cb30bfa61b7986bc50657816ba4ba" },
|
||||||
|
"lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" },
|
||||||
|
"local-highlight.nvim": { "branch": "master", "commit": "272f36f412c0a82c785c01256abf4eda4c1cb11d" },
|
||||||
|
"lualine.nvim": { "branch": "master", "commit": "a94fc68960665e54408fe37dcf573193c4ce82c9" },
|
||||||
|
"mini.icons": { "branch": "main", "commit": "94848dad1589a199f876539bd79befb0c5e3abf0" },
|
||||||
|
"neo-tree.nvim": { "branch": "v3.x", "commit": "f481de16a0eb59c985abac8985e3f2e2f75b4875" },
|
||||||
|
"nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" },
|
||||||
|
"nvim-autopairs": { "branch": "master", "commit": "23320e75953ac82e559c610bec5a90d9c6dfa743" },
|
||||||
|
"nvim-cmp": { "branch": "main", "commit": "b5311ab3ed9c846b585c0c15b7559be131ec4be9" },
|
||||||
|
"nvim-colorizer.lua": { "branch": "master", "commit": "517df88cf2afb36652830df2c655df2da416a0ae" },
|
||||||
|
"nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" },
|
||||||
|
"nvim-treesitter-textobjects": { "branch": "master", "commit": "89ebe73cd2836db80a22d9748999ace0241917a5" },
|
||||||
|
"nvim-ts-autotag": { "branch": "main", "commit": "a1d526af391f6aebb25a8795cbc05351ed3620b5" },
|
||||||
|
"nvim-web-devicons": { "branch": "master", "commit": "19d6211c78169e78bab372b585b6fb17ad974e82" },
|
||||||
|
"oil.nvim": { "branch": "master", "commit": "bbad9a76b2617ce1221d49619e4e4b659b3c61fc" },
|
||||||
|
"plenary.nvim": { "branch": "master", "commit": "857c5ac632080dba10aae49dba902ce3abf91b35" },
|
||||||
|
"rainbow-delimiters.nvim": { "branch": "master", "commit": "55ad4fb76ab68460f700599b7449385f0c4e858e" },
|
||||||
|
"telescope-ui-select.nvim": { "branch": "master", "commit": "6e51d7da30bd139a6950adf2a47fda6df9fa06d2" },
|
||||||
|
"telescope.nvim": { "branch": "master", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" },
|
||||||
|
"undotree": { "branch": "master", "commit": "7a8b831e9bfb9f6fe05cc33294882648dd6801fb" },
|
||||||
|
"vim-commentary": { "branch": "master", "commit": "64a654ef4a20db1727938338310209b6a63f60c9" },
|
||||||
|
"vim-devicons": { "branch": "master", "commit": "71f239af28b7214eebb60d4ea5bd040291fb7e33" },
|
||||||
|
"vim-floaterm": { "branch": "master", "commit": "fd4bdd66eca56c6cc59f2119e4447496d8cde2ea" },
|
||||||
|
"vim-signature": { "branch": "master", "commit": "6bc3dd1294a22e897f0dcf8dd72b85f350e306bc" },
|
||||||
|
"vim-surround": { "branch": "master", "commit": "3d188ed2113431cf8dac77be61b842acb64433d9" }
|
||||||
|
}
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
-- To avoid neotree from crashing all vim, closes the tab
|
||||||
|
|
||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M.bufremove(buf)
|
||||||
|
buf = buf or 0
|
||||||
|
buf = buf == 0 and vim.api.nvim_get_current_buf() or buf
|
||||||
|
if vim.bo.modified then
|
||||||
|
local choice = vim.fn.confirm(("Save changes to %q?"):format(vim.fn.bufname()), "&Yes\n&No\n&Cancel")
|
||||||
|
if choice == 0 or choice == 3 then -- 0 for <Esc>/<C-c> and 3 for Cancel
|
||||||
|
return
|
||||||
|
end
|
||||||
|
if choice == 1 then -- Yes
|
||||||
|
vim.cmd.write()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
for _, win in ipairs(vim.fn.win_findbuf(buf)) do
|
||||||
|
vim.api.nvim_win_call(win, function()
|
||||||
|
if not vim.api.nvim_win_is_valid(win) or vim.api.nvim_win_get_buf(win) ~= buf then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
-- Try using alternate buffer
|
||||||
|
local alt = vim.fn.bufnr("#")
|
||||||
|
if alt ~= buf and vim.fn.buflisted(alt) == 1 then
|
||||||
|
vim.api.nvim_win_set_buf(win, alt)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
-- Try using previous buffer
|
||||||
|
local has_previous = pcall(vim.cmd, "bprevious")
|
||||||
|
if has_previous and buf ~= vim.api.nvim_win_get_buf(win) then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
-- Create new listed buffer
|
||||||
|
local new_buf = vim.api.nvim_create_buf(true, false)
|
||||||
|
vim.api.nvim_win_set_buf(win, new_buf)
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
if vim.api.nvim_buf_is_valid(buf) then
|
||||||
|
pcall(vim.cmd, "bdelete! " .. buf)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
@@ -0,0 +1,56 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
|
||||||
|
function M.bufonly()
|
||||||
|
vim.cmd('silent! execute "%bd|e#|bd#"')
|
||||||
|
end
|
||||||
|
|
||||||
|
function M.remove_trailing_whitespace()
|
||||||
|
local saved_search = vim.fn.getreg('/')
|
||||||
|
vim.cmd([[%s/\s\+$//e]])
|
||||||
|
vim.fn.setreg('/', saved_search)
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
-- To avoid neotree from crashing all vim, closes the tab
|
||||||
|
function M.bufremove(buf)
|
||||||
|
buf = buf or 0
|
||||||
|
buf = buf == 0 and vim.api.nvim_get_current_buf() or buf
|
||||||
|
if vim.bo.modified then
|
||||||
|
local choice = vim.fn.confirm(("Save changes to %q?"):format(vim.fn.bufname()), "&Yes\n&No\n&Cancel")
|
||||||
|
if choice == 0 or choice == 3 then -- 0 for <Esc>/<C-c> and 3 for Cancel
|
||||||
|
return
|
||||||
|
end
|
||||||
|
if choice == 1 then -- Yes
|
||||||
|
vim.cmd.write()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
for _, win in ipairs(vim.fn.win_findbuf(buf)) do
|
||||||
|
vim.api.nvim_win_call(win, function()
|
||||||
|
if not vim.api.nvim_win_is_valid(win) or vim.api.nvim_win_get_buf(win) ~= buf then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
-- Try using alternate buffer
|
||||||
|
local alt = vim.fn.bufnr("#")
|
||||||
|
if alt ~= buf and vim.fn.buflisted(alt) == 1 then
|
||||||
|
vim.api.nvim_win_set_buf(win, alt)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
-- Try using previous buffer
|
||||||
|
local has_previous = pcall(vim.cmd, "bprevious")
|
||||||
|
if has_previous and buf ~= vim.api.nvim_win_get_buf(win) then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
-- Create new listed buffer
|
||||||
|
local new_buf = vim.api.nvim_create_buf(true, false)
|
||||||
|
vim.api.nvim_win_set_buf(win, new_buf)
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
if vim.api.nvim_buf_is_valid(buf) then
|
||||||
|
pcall(vim.cmd, "bdelete! " .. buf)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
return M
|
||||||
|
|
||||||
@@ -0,0 +1,62 @@
|
|||||||
|
local opts = { noremap = true, silent = true }
|
||||||
|
-- Require functions file
|
||||||
|
local functions = require('functions')
|
||||||
|
|
||||||
|
|
||||||
|
vim.keymap.set("n", "<leader><TAB>", ":bnext<CR>") -- Tab next
|
||||||
|
vim.keymap.set({"x",'v','n'}, "E", "ge") -- go back
|
||||||
|
vim.keymap.set("v", "J", ":m '>+1<CR>gv=gv") -- move block
|
||||||
|
vim.keymap.set("v", "K", ":m '<-2<CR>gv=gv") -- move block
|
||||||
|
vim.keymap.set("n", "<leader>r", [[:%s#\<<C-r><C-w>\>#<C-r><C-w>#gI<Left><Left><Left>]]) -- global remap
|
||||||
|
vim.keymap.set("n", "J", "mzJ`z") -- append line
|
||||||
|
vim.keymap.set("n", "<C-d>", "<C-d>zz") --move half page
|
||||||
|
vim.keymap.set("n", "<C-u>", "<C-u>zz") --move half page
|
||||||
|
|
||||||
|
-- Close all buffers (tabs) but the current one
|
||||||
|
vim.keymap.set('n', '<leader>b', functions.bufonly, opts)
|
||||||
|
|
||||||
|
|
||||||
|
-- ############################
|
||||||
|
-- Default behavior overrides #
|
||||||
|
-- ############################
|
||||||
|
|
||||||
|
vim.keymap.set("n", "x", [["_x]]) --void x
|
||||||
|
vim.keymap.set("x", "p", [["_dP]]) -- void paste
|
||||||
|
vim.keymap.set('n', 'Q', 'q', opts) -- Remap 'Q' to start recording macros
|
||||||
|
vim.keymap.set('x', 'W', 'iW', opts) -- remaps viW to just vW
|
||||||
|
vim.keymap.set('v', 'w', 'iw', opts) -- remaps viw to just vw
|
||||||
|
vim.keymap.set('n', 'P', 'o<Esc>p', opts) --void P
|
||||||
|
vim.keymap.set('n', 'd', '"_d', opts) --void d
|
||||||
|
vim.keymap.set('v', 'd', '"_d', opts)
|
||||||
|
vim.keymap.set('n', '<leader>d', 'daw', opts)
|
||||||
|
vim.keymap.set('n', 'cw', 'ciw', { noremap = true, nowait = true, silent = true }) -- cw = ciw
|
||||||
|
|
||||||
|
|
||||||
|
-- Disable
|
||||||
|
vim.keymap.set({'x','v','n'}, '<F1>', '<Nop>', opts)
|
||||||
|
vim.keymap.set('n', 's', '<Nop>', opts)
|
||||||
|
vim.keymap.set('n', 'S', '<Nop>', opts)
|
||||||
|
vim.keymap.set('n', 'q', '<Nop>', opts)
|
||||||
|
|
||||||
|
-- ############################
|
||||||
|
-- Plugins keymaps #
|
||||||
|
-- ############################
|
||||||
|
|
||||||
|
vim.cmd([[nnoremap \ :Neotree toggle<cr>]])
|
||||||
|
|
||||||
|
-- To avoid neotree from crashing all vim, closes the tab
|
||||||
|
vim.keymap.set("n", "<leader>q", functions.bufremove, { desc = "Delete buffer" })
|
||||||
|
|
||||||
|
--telescope
|
||||||
|
vim.keymap.set('n', '<leader>ff', "<cmd>lua require'telescope.builtin'.find_files({ find_command = {'rg', '--files', '--hidden', '-g', '!.git' }})<cr>")
|
||||||
|
vim.keymap.set('n', '<leader>fr', "<cmd>lua require'telescope.builtin'.buffers({ show_all_buffers = true })<cr>")
|
||||||
|
vim.keymap.set('n', '<leader>fg', "<cmd>lua require('telescope.builtin').live_grep()<cr>")
|
||||||
|
|
||||||
|
vim.keymap.set('n', '<leader>u', ':UndotreeToggle<CR>', opts)
|
||||||
|
vim.keymap.set('n', '<leader>-', ':IBLToggle<CR>', opts)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
-- ########
|
||||||
|
-- Macros #
|
||||||
|
-- ########
|
||||||
@@ -0,0 +1,59 @@
|
|||||||
|
vim.diagnostic.config({
|
||||||
|
virtual_text = true,
|
||||||
|
signs = true,
|
||||||
|
update_in_insert = false,
|
||||||
|
underline = true,
|
||||||
|
severity_sort = false,
|
||||||
|
float = true,
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
--"'''''''''''''''''''Tree sitter highlight''''''''''''''''''''''''''''''
|
||||||
|
require'nvim-treesitter.configs'.setup {
|
||||||
|
-- A list of parser names, or "all"
|
||||||
|
ensure_installed = { "c", "lua","bash","python"},
|
||||||
|
sync_install = false,
|
||||||
|
indent = {
|
||||||
|
enable = true,
|
||||||
|
disable = function(lang, bufnr)
|
||||||
|
local enabled_langs = { "html", "javascript", "tsx" } -- Enable auto indent only for these languages
|
||||||
|
return not vim.tbl_contains(enabled_langs, lang)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
auto_install = true,
|
||||||
|
highlight = {
|
||||||
|
enable = true,
|
||||||
|
additional_vim_regex_highlighting = false,
|
||||||
|
},
|
||||||
|
textobjects = {
|
||||||
|
select = {
|
||||||
|
enable = true,
|
||||||
|
lookahead = true,
|
||||||
|
keymaps = {
|
||||||
|
["af"] = "@function.outer",
|
||||||
|
["if"] = "@function.inner",
|
||||||
|
["ac"] = "@class.outer",
|
||||||
|
["ic"] = { query = "@class.inner", desc = "Select inner part of a class region" },
|
||||||
|
["as"] = { query = "@local.scope", query_group = "locals", desc = "Select language scope" },
|
||||||
|
},
|
||||||
|
selection_modes = {
|
||||||
|
['@parameter.outer'] = 'v', -- charwise
|
||||||
|
['@function.outer'] = 'V', -- linewise
|
||||||
|
['@class.outer'] = '<c-v>', -- blockwise
|
||||||
|
},
|
||||||
|
include_surrounding_whitespace = true,
|
||||||
|
},
|
||||||
|
move = {
|
||||||
|
enable = true,
|
||||||
|
set_jumps = true,
|
||||||
|
goto_next_start = {
|
||||||
|
["<C-f>"] = "@function.outer", -- jump to next function
|
||||||
|
},
|
||||||
|
goto_previous_start = {
|
||||||
|
["<A-f>"] = "@function.outer", -- jump to previous function
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
vim.opt.number = true
|
||||||
|
vim.opt.relativenumber = true
|
||||||
|
vim.opt.clipboard:append('unnamedplus')
|
||||||
|
vim.cmd('filetype plugin on')
|
||||||
|
vim.opt.swapfile = false
|
||||||
|
vim.opt.completeopt = { 'menu', 'menuone', 'noselect' }
|
||||||
|
vim.opt.scrolloff = 7
|
||||||
|
vim.opt.backspace = { 'indent', 'eol', 'start' }
|
||||||
|
vim.opt.tabstop = 4
|
||||||
|
vim.opt.softtabstop = 4
|
||||||
|
vim.opt.shiftwidth = 4
|
||||||
|
vim.opt.expandtab = true
|
||||||
|
vim.opt.autoindent = true
|
||||||
|
vim.g.mapleader = ' '
|
||||||
|
vim.opt.encoding = 'utf-8'
|
||||||
|
vim.opt.termguicolors = true
|
||||||
|
|
||||||
|
vim.opt.undodir = os.getenv("HOME") .. "/.vim/undodir"
|
||||||
|
-- Spell generall options
|
||||||
|
vim.opt.spelllang = 'en_us'
|
||||||
|
vim.opt.spell = false
|
||||||
|
vim.opt.hlsearch = false
|
||||||
|
|
||||||
|
vim.opt.showmode = false
|
||||||
|
vim.opt.showtabline = 2
|
||||||
@@ -0,0 +1,152 @@
|
|||||||
|
|
||||||
|
-- Bootstrap lazy.nvim
|
||||||
|
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
|
||||||
|
if not (vim.uv or vim.loop).fs_stat(lazypath) then
|
||||||
|
local lazyrepo = "https://github.com/folke/lazy.nvim.git"
|
||||||
|
local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
|
||||||
|
if vim.v.shell_error ~= 0 then
|
||||||
|
vim.api.nvim_echo({
|
||||||
|
{ "Failed to clone lazy.nvim:\n", "ErrorMsg" },
|
||||||
|
{ out, "WarningMsg" },
|
||||||
|
{ "\nPress any key to exit..." },
|
||||||
|
}, true, {})
|
||||||
|
vim.fn.getchar()
|
||||||
|
os.exit(1)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
vim.opt.rtp:prepend(lazypath)
|
||||||
|
|
||||||
|
local plugins = {
|
||||||
|
|
||||||
|
-- Indent guides
|
||||||
|
{
|
||||||
|
"lukas-reineke/indent-blankline.nvim",
|
||||||
|
main = "ibl",
|
||||||
|
opts = {},
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Color highlighting
|
||||||
|
{ "catgoose/nvim-colorizer.lua"},
|
||||||
|
|
||||||
|
-- Undo tree viewer
|
||||||
|
{ "mbbill/undotree" },
|
||||||
|
|
||||||
|
-- Devicons
|
||||||
|
{ "nvim-tree/nvim-web-devicons", opts = {} },
|
||||||
|
|
||||||
|
-- Neo-tree file explorer
|
||||||
|
{
|
||||||
|
"nvim-neo-tree/neo-tree.nvim",
|
||||||
|
branch = "v3.x",
|
||||||
|
dependencies = {
|
||||||
|
"nvim-lua/plenary.nvim",
|
||||||
|
"nvim-tree/nvim-web-devicons",
|
||||||
|
"MunifTanjim/nui.nvim",
|
||||||
|
},
|
||||||
|
lazy = false,
|
||||||
|
opts = { },
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
-- Telescope fuzzy finder
|
||||||
|
{
|
||||||
|
'nvim-telescope/telescope.nvim', tag = '0.1.8',
|
||||||
|
dependencies = { 'nvim-lua/plenary.nvim' }
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
-- Treesitter
|
||||||
|
{
|
||||||
|
"nvim-treesitter/nvim-treesitter",
|
||||||
|
build = ":TSUpdate",
|
||||||
|
},
|
||||||
|
{ "nvim-treesitter/nvim-treesitter-textobjects" },
|
||||||
|
|
||||||
|
|
||||||
|
-- Autopairs
|
||||||
|
{
|
||||||
|
'windwp/nvim-autopairs',
|
||||||
|
event = "InsertEnter",
|
||||||
|
config = true
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Commenting utility
|
||||||
|
{ "tpope/vim-commentary" },
|
||||||
|
|
||||||
|
-- Catppuccin theme
|
||||||
|
{ "catppuccin/nvim",
|
||||||
|
name = "catppuccin",
|
||||||
|
priority = 1000 },
|
||||||
|
|
||||||
|
-- Surround plugin
|
||||||
|
{ "tpope/vim-surround" },
|
||||||
|
|
||||||
|
-- Treesitter auto-closing tags
|
||||||
|
{ "windwp/nvim-ts-autotag" },
|
||||||
|
|
||||||
|
-- Signature marks
|
||||||
|
{ "kshenoy/vim-signature" },
|
||||||
|
|
||||||
|
-- Oil file explorer
|
||||||
|
{
|
||||||
|
'stevearc/oil.nvim',
|
||||||
|
opts = {},
|
||||||
|
dependencies = { { "echasnovski/mini.icons", opts = {} } },
|
||||||
|
lazy = false,
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Rainbow delimiters
|
||||||
|
{ "HiPhish/rainbow-delimiters.nvim" },
|
||||||
|
|
||||||
|
|
||||||
|
-- Completion engine
|
||||||
|
{ "hrsh7th/nvim-cmp" },
|
||||||
|
{ "hrsh7th/cmp-buffer" },
|
||||||
|
{ "hrsh7th/cmp-path" },
|
||||||
|
{ "saadparwaiz1/cmp_luasnip" },
|
||||||
|
{ "hrsh7th/cmp-nvim-lsp" },
|
||||||
|
{ "hrsh7th/cmp-nvim-lua" },
|
||||||
|
|
||||||
|
|
||||||
|
-- Lualine
|
||||||
|
{ 'nvim-lualine/lualine.nvim',
|
||||||
|
dependencies = { 'nvim-tree/nvim-web-devicons' } },
|
||||||
|
|
||||||
|
-- File icons
|
||||||
|
{ "ryanoasis/vim-devicons" },
|
||||||
|
|
||||||
|
-- barbar
|
||||||
|
{
|
||||||
|
'romgrk/barbar.nvim',
|
||||||
|
dependencies = {
|
||||||
|
'nvim-tree/nvim-web-devicons'
|
||||||
|
},
|
||||||
|
init = function()
|
||||||
|
vim.g.barbar_auto_setup = false -- disable auto-setup
|
||||||
|
end,
|
||||||
|
opts = {},
|
||||||
|
},
|
||||||
|
-- highlight
|
||||||
|
{
|
||||||
|
'tzachar/local-highlight.nvim',
|
||||||
|
},
|
||||||
|
|
||||||
|
-- buffer vacuum
|
||||||
|
{
|
||||||
|
'ChuufMaster/buffer-vacuum',
|
||||||
|
opts = {
|
||||||
|
max_buffers = 2,
|
||||||
|
count_pinned_buffers = false,
|
||||||
|
enable_messages = false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
-- telescope pluggin
|
||||||
|
{'nvim-telescope/telescope-ui-select.nvim' },
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
local opts = {}
|
||||||
|
require('lazy').setup(plugins, opts)
|
||||||
|
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
require'nvim-web-devicons'.setup {
|
||||||
|
-- DevIcon will be appended to `name`
|
||||||
|
override = {
|
||||||
|
zsh = {
|
||||||
|
icon = " ",
|
||||||
|
color = "#428850",
|
||||||
|
cterm_color = "65",
|
||||||
|
name = "Zsh"
|
||||||
|
}
|
||||||
|
};
|
||||||
|
color_icons = true;
|
||||||
|
default = true;
|
||||||
|
strict = true;
|
||||||
|
variant = "light|dark";
|
||||||
|
override_by_filename = {
|
||||||
|
[".gitignore"] = {
|
||||||
|
icon = " ",
|
||||||
|
color = "#f1502f",
|
||||||
|
name = "Gitignore"
|
||||||
|
}
|
||||||
|
};
|
||||||
|
override_by_extension = {
|
||||||
|
["log"] = {
|
||||||
|
icon = " ",
|
||||||
|
color = "#81e043",
|
||||||
|
name = "Log"
|
||||||
|
}
|
||||||
|
};
|
||||||
|
override_by_operating_system = {
|
||||||
|
["apple"] = {
|
||||||
|
icon = " ",
|
||||||
|
color = "#A2AAAD",
|
||||||
|
cterm_color = "248",
|
||||||
|
name = "Apple",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
dnf
|
||||||
|
lsp
|
||||||
Binary file not shown.
@@ -0,0 +1,32 @@
|
|||||||
|
# Basic setup for vms
|
||||||
|
|
||||||
|
```
|
||||||
|
sudo packageManager install zsh neovim ranger
|
||||||
|
```
|
||||||
|
|
||||||
|
# installs oh my zsh
|
||||||
|
|
||||||
|
```
|
||||||
|
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
# zsh auto suggestions
|
||||||
|
|
||||||
|
```
|
||||||
|
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
# powerlevel 10k
|
||||||
|
|
||||||
|
```
|
||||||
|
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
# Unatended upgrades
|
||||||
|
|
||||||
|
```
|
||||||
|
sudo dpkg-reconfigure -plow unattended-upgrades
|
||||||
|
```
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
|
||||||
|
source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# If you come from bash you might have to change your $PATH.
|
||||||
|
# export PATH=$HOME/bin:/usr/local/bin:$PATH
|
||||||
|
export EDITOR='nvim'
|
||||||
|
export VISUAL='nvim'
|
||||||
|
export PATH="$HOME/scripts:$PATH"
|
||||||
|
export ZSH="$HOME/.oh-my-zsh"
|
||||||
|
export PATH="$HOME/.local/bin:$PATH"
|
||||||
|
export PATH="$HOME/.cargo/bin:$PATH"
|
||||||
|
export PYTHONUNBUFFERED=1
|
||||||
|
|
||||||
|
ZSH_THEME="powerlevel10k/powerlevel10k"
|
||||||
|
|
||||||
|
|
||||||
|
# some more ls aliases
|
||||||
|
alias update='sudo nala upgrade'
|
||||||
|
alias cl='clear'
|
||||||
|
alias src='source ~/.zshrc'
|
||||||
|
alias vim='nvim'
|
||||||
|
alias xc='xclip -sel clip'
|
||||||
|
alias docker-compose='docker compose'
|
||||||
|
alias ranger='source ranger'
|
||||||
|
alias dps='docker container ls --format "table {{.ID}}\t{{.Names}}\t{{.Ports}}" -a'
|
||||||
|
alias ddown='docker compose down'
|
||||||
|
alias bat='batcat'
|
||||||
|
alias loggs='$HOME/scripts/collector.sh'
|
||||||
|
|
||||||
|
### Plugins ###
|
||||||
|
plugins=(git zsh-autosuggestions python virtualenv)
|
||||||
|
|
||||||
|
function cd {
|
||||||
|
builtin cd "$@" && ls -F
|
||||||
|
}
|
||||||
|
|
||||||
|
function .. {
|
||||||
|
builtin cd .. "$@" && ls -F
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
source $ZSH/oh-my-zsh.sh
|
||||||
|
|
||||||
|
# To customize prompt, run `p10k configure` or edit ~/.p10k.zsh.
|
||||||
|
[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh
|
||||||
|
|
||||||
|
export NVM_DIR="$HOME/.nvm"
|
||||||
|
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
|
||||||
|
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
|
||||||
Reference in New Issue
Block a user