add nb config
This commit is contained in:
@@ -1,221 +0,0 @@
|
||||
local function is_ft(b, ft)
|
||||
return vim.bo[b].filetype == ft
|
||||
end
|
||||
|
||||
local function diagnostics_indicator(num, _, diagnostics, _)
|
||||
local result = {}
|
||||
local symbols = {
|
||||
error = Icons.diagnostics.Error,
|
||||
warning = Icons.diagnostics.Warning,
|
||||
info = Icons.diagnostics.Information,
|
||||
}
|
||||
for name, count in pairs(diagnostics) do
|
||||
if symbols[name] and count > 0 then
|
||||
table.insert(result, symbols[name] .. " " .. count)
|
||||
end
|
||||
end
|
||||
result = table.concat(result, " ")
|
||||
return #result > 0 and result or ""
|
||||
end
|
||||
|
||||
local function custom_filter(buf, buf_nums)
|
||||
local logs = vim.tbl_filter(function(b)
|
||||
return is_ft(b, "log")
|
||||
end, buf_nums)
|
||||
if vim.tbl_isempty(logs) then
|
||||
return true
|
||||
end
|
||||
local tab_num = vim.fn.tabpagenr()
|
||||
local last_tab = vim.fn.tabpagenr "$"
|
||||
local is_log = is_ft(buf, "log")
|
||||
if last_tab == 1 then
|
||||
return true
|
||||
end
|
||||
-- only show log buffers in secondary tabs
|
||||
return (tab_num == last_tab and is_log) or (tab_num ~= last_tab and not is_log)
|
||||
end
|
||||
|
||||
|
||||
local config = {
|
||||
active = true,
|
||||
on_config_done = nil,
|
||||
keymap = {
|
||||
normal_mode = {},
|
||||
},
|
||||
highlights = {
|
||||
background = {
|
||||
italic = true,
|
||||
},
|
||||
buffer_selected = {
|
||||
bold = true,
|
||||
},
|
||||
},
|
||||
options = {
|
||||
mode = "buffers", -- set to "tabs" to only show tabpages instead
|
||||
numbers = "none", -- can be "none" | "ordinal" | "buffer_id" | "both" | function
|
||||
close_command = function(bufnr) -- can be a string | function, see "Mouse actions"
|
||||
buf_kill("bd", bufnr, false)
|
||||
end,
|
||||
right_mouse_command = "vert sbuffer %d", -- can be a string | function, see "Mouse actions"
|
||||
left_mouse_command = "buffer %d", -- can be a string | function, see "Mouse actions"
|
||||
middle_mouse_command = nil, -- can be a string | function, see "Mouse actions"
|
||||
indicator = {
|
||||
icon = Icons.ui.BoldLineLeft, -- this should be omitted if indicator style is not 'icon'
|
||||
style = "icon", -- can also be 'underline'|'none',
|
||||
},
|
||||
buffer_close_icon = Icons.ui.Close,
|
||||
modified_icon = Icons.ui.Circle,
|
||||
close_icon = Icons.ui.BoldClose,
|
||||
left_trunc_marker = Icons.ui.ArrowCircleLeft,
|
||||
right_trunc_marker = Icons.ui.ArrowCircleRight,
|
||||
--- name_formatter can be used to change the buffer's label in the bufferline.
|
||||
--- Please note some names can/will break the
|
||||
--- bufferline so use this at your discretion knowing that it has
|
||||
--- some limitations that will *NOT* be fixed.
|
||||
name_formatter = function(buf) -- buf contains a "name", "path" and "bufnr"
|
||||
-- remove extension from markdown files for example
|
||||
if buf.name:match "%.md" then
|
||||
return vim.fn.fnamemodify(buf.name, ":t:r")
|
||||
end
|
||||
end,
|
||||
max_name_length = 18,
|
||||
max_prefix_length = 15, -- prefix used when a buffer is de-duplicated
|
||||
truncate_names = true, -- whether or not tab names should be truncated
|
||||
tab_size = 18,
|
||||
diagnostics = "nvim_lsp",
|
||||
diagnostics_update_in_insert = false,
|
||||
diagnostics_indicator = diagnostics_indicator,
|
||||
-- NOTE: this will be called a lot so don't do any heavy processing here
|
||||
custom_filter = custom_filter,
|
||||
offsets = {
|
||||
{
|
||||
filetype = "undotree",
|
||||
text = "Undotree",
|
||||
highlight = "PanelHeading",
|
||||
padding = 1,
|
||||
},
|
||||
{
|
||||
filetype = "NvimTree",
|
||||
text = "Explorer",
|
||||
highlight = "PanelHeading",
|
||||
padding = 1,
|
||||
},
|
||||
{
|
||||
filetype = "DiffviewFiles",
|
||||
text = "Diff View",
|
||||
highlight = "PanelHeading",
|
||||
padding = 1,
|
||||
},
|
||||
{
|
||||
filetype = "flutterToolsOutline",
|
||||
text = "Flutter Outline",
|
||||
highlight = "PanelHeading",
|
||||
},
|
||||
{
|
||||
filetype = "packer",
|
||||
text = "Packer",
|
||||
highlight = "PanelHeading",
|
||||
padding = 1,
|
||||
},
|
||||
},
|
||||
color_icons = true, -- whether or not to add the filetype icon highlights
|
||||
show_buffer_icons = true, -- disable filetype icons for buffers
|
||||
show_buffer_close_icons = true,
|
||||
show_close_icon = false,
|
||||
show_tab_indicators = true,
|
||||
persist_buffer_sort = true, -- whether or not custom sorted buffers should persist
|
||||
-- can also be a table containing 2 custom separators
|
||||
-- [focused and unfocused]. eg: { '|', '|' }
|
||||
separator_style = "thin",
|
||||
enforce_regular_tabs = false,
|
||||
always_show_bufferline = false,
|
||||
hover = {
|
||||
enabled = false, -- requires nvim 0.8+
|
||||
delay = 200,
|
||||
reveal = { "close" },
|
||||
},
|
||||
sort_by = "id",
|
||||
},
|
||||
}
|
||||
|
||||
--require('keymappings').load(config.keymap)
|
||||
|
||||
require("bufferline").setup({
|
||||
options = config.options,
|
||||
highlights = config.highlights,
|
||||
})
|
||||
|
||||
--stylua: ignore
|
||||
|
||||
-- Common kill function for bdelete and bwipeout
|
||||
-- credits: based on bbye and nvim-bufdel
|
||||
---@param kill_command? string defaults to "bd"
|
||||
---@param bufnr? number defaults to the current buffer
|
||||
---@param force? boolean defaults to false
|
||||
function buf_kill(kill_command, bufnr, force)
|
||||
kill_command = kill_command or "bd"
|
||||
|
||||
local bo = vim.bo
|
||||
local api = vim.api
|
||||
local fmt = string.format
|
||||
local fnamemodify = vim.fn.fnamemodify
|
||||
|
||||
if bufnr == 0 or bufnr == nil then
|
||||
bufnr = api.nvim_get_current_buf()
|
||||
end
|
||||
|
||||
local bufname = api.nvim_buf_get_name(bufnr)
|
||||
|
||||
if not force then
|
||||
local warning
|
||||
if bo[bufnr].modified then
|
||||
warning = fmt([[No write since last change for (%s)]], fnamemodify(bufname, ":t"))
|
||||
elseif api.nvim_buf_get_option(bufnr, "buftype") == "terminal" then
|
||||
warning = fmt([[Terminal %s will be killed]], bufname)
|
||||
end
|
||||
if warning then
|
||||
vim.ui.input({
|
||||
prompt = string.format([[%s. Close it anyway? [y]es or [n]o (default: no): ]], warning),
|
||||
}, function(choice)
|
||||
if choice:match "ye?s?" then force = true end
|
||||
end)
|
||||
if not force then return end
|
||||
end
|
||||
end
|
||||
|
||||
-- Get list of windows IDs with the buffer to close
|
||||
local windows = vim.tbl_filter(function(win)
|
||||
return api.nvim_win_get_buf(win) == bufnr
|
||||
end, api.nvim_list_wins())
|
||||
|
||||
if force then
|
||||
kill_command = kill_command .. "!"
|
||||
end
|
||||
|
||||
-- Get list of active buffers
|
||||
local buffers = vim.tbl_filter(function(buf)
|
||||
return api.nvim_buf_is_valid(buf) and bo[buf].buflisted
|
||||
end, api.nvim_list_bufs())
|
||||
|
||||
-- If there is only one buffer (which has to be the current one), vim will
|
||||
-- create a new buffer on :bd.
|
||||
-- For more than one buffer, pick the previous buffer (wrapping around if necessary)
|
||||
if #buffers > 1 and #windows > 0 then
|
||||
for i, v in ipairs(buffers) do
|
||||
if v == bufnr then
|
||||
local prev_buf_idx = i == 1 and (#buffers - 1) or (i - 1)
|
||||
local prev_buffer = buffers[prev_buf_idx]
|
||||
for _, win in ipairs(windows) do
|
||||
api.nvim_win_set_buf(win, prev_buffer)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- Check if buffer still exists, to ensure the target buffer wasn't killed
|
||||
-- due to options like bufhidden=wipe.
|
||||
if api.nvim_buf_is_valid(bufnr) and bo[bufnr].buflisted then
|
||||
vim.cmd(string.format("%s %d", kill_command, bufnr))
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,155 +0,0 @@
|
||||
Icons = {
|
||||
kind = {
|
||||
Array = "",
|
||||
Boolean = "蘒",
|
||||
Class = "",
|
||||
Color = "",
|
||||
Constant = "",
|
||||
Constructor = "",
|
||||
Enum = "",
|
||||
EnumMember = "",
|
||||
Event = "",
|
||||
Field = "",
|
||||
File = "",
|
||||
Folder = "",
|
||||
Function = "",
|
||||
Interface = "",
|
||||
Key = "",
|
||||
Keyword = "",
|
||||
Method = "",
|
||||
Module = "",
|
||||
Namespace = "",
|
||||
Null = "ﳠ",
|
||||
Number = "",
|
||||
Object = "",
|
||||
Operator = "",
|
||||
Package = "",
|
||||
Property = "",
|
||||
Reference = "",
|
||||
Snippet = "",
|
||||
String = "",
|
||||
Struct = "",
|
||||
Text = "",
|
||||
TypeParameter = "",
|
||||
Unit = "",
|
||||
Value = "",
|
||||
Variable = "",
|
||||
},
|
||||
git = {
|
||||
LineAdded = "",
|
||||
LineModified = "",
|
||||
LineRemoved = "",
|
||||
FileDeleted = "",
|
||||
FileIgnored = "◌",
|
||||
FileRenamed = "➜",
|
||||
FileStaged = "S",
|
||||
FileUnmerged = "",
|
||||
FileUnstaged = "",
|
||||
FileUntracked = "U",
|
||||
Diff = "",
|
||||
Repo = "",
|
||||
Octoface = "",
|
||||
Branch = "",
|
||||
},
|
||||
ui = {
|
||||
ArrowCircleDown = "",
|
||||
ArrowCircleLeft = "",
|
||||
ArrowCircleRight = "",
|
||||
ArrowCircleUp = "",
|
||||
BoldArrowDown = "",
|
||||
BoldArrowLeft = "",
|
||||
BoldArrowRight = "",
|
||||
BoldArrowUp = "",
|
||||
BoldClose = "",
|
||||
BoldDividerLeft = "",
|
||||
BoldDividerRight = "",
|
||||
BoldLineLeft = "▎",
|
||||
BookMark = "",
|
||||
BoxChecked = "",
|
||||
Bug = "",
|
||||
Stacks = " ",
|
||||
Scopes = "",
|
||||
Watches = "",
|
||||
DebugConsole = " ",
|
||||
Calendar = "",
|
||||
Check = "",
|
||||
ChevronRight = ">",
|
||||
ChevronShortDown = "",
|
||||
ChevronShortLeft = "",
|
||||
ChevronShortRight = "",
|
||||
ChevronShortUp = "",
|
||||
Circle = "",
|
||||
Close = "",
|
||||
CloudDownload = "",
|
||||
Code = "",
|
||||
Comment = "",
|
||||
Dashboard = "",
|
||||
DividerLeft = "",
|
||||
DividerRight = "",
|
||||
DoubleChevronRight = "»",
|
||||
Ellipsis = "…",
|
||||
EmptyFolder = "",
|
||||
EmptyFolderOpen = "",
|
||||
File = "",
|
||||
FileSymlink = "",
|
||||
Files = "",
|
||||
FindFile = "",
|
||||
FindText = "",
|
||||
Fire = "",
|
||||
Folder = "",
|
||||
FolderOpen = "",
|
||||
FolderSymlink = "",
|
||||
Forward = "",
|
||||
Gear = "",
|
||||
History = "",
|
||||
Lightbulb = "",
|
||||
LineLeft = "▏",
|
||||
LineMiddle = "│",
|
||||
List = "",
|
||||
Lock = "",
|
||||
NewFile = "",
|
||||
Note = "",
|
||||
Package = "",
|
||||
Pencil = "",
|
||||
Plus = "",
|
||||
Project = "",
|
||||
Search = "",
|
||||
SignIn = "",
|
||||
SignOut = "",
|
||||
Tab = "",
|
||||
Table = "",
|
||||
Target = "",
|
||||
Telescope = "",
|
||||
Text = "",
|
||||
Tree = "",
|
||||
Triangle = "契",
|
||||
TriangleShortArrowDown = "",
|
||||
TriangleShortArrowLeft = "",
|
||||
TriangleShortArrowRight = "",
|
||||
TriangleShortArrowUp = "",
|
||||
},
|
||||
diagnostics = {
|
||||
BoldError = "",
|
||||
Error = "",
|
||||
BoldWarning = "",
|
||||
Warning = "",
|
||||
BoldInformation = "",
|
||||
Information = "",
|
||||
BoldQuestion = "",
|
||||
Question = "",
|
||||
BoldHint = "",
|
||||
Hint = "",
|
||||
Debug = "",
|
||||
Trace = "✎",
|
||||
},
|
||||
misc = {
|
||||
Robot = "ﮧ",
|
||||
Squirrel = "",
|
||||
Tag = "",
|
||||
Watch = "",
|
||||
Smiley = "ﲃ",
|
||||
Package = "",
|
||||
CircuitBoard = "",
|
||||
},
|
||||
}
|
||||
|
||||
@@ -1,58 +0,0 @@
|
||||
-- vim.opt.expandtab = true
|
||||
-- vim.opt.hidden = true
|
||||
-- vim.opt.incsearch = true
|
||||
-- vim.opt.mouse = "a"
|
||||
-- vim.opt.number = true
|
||||
-- vim.opt.shiftwidth = 2
|
||||
-- vim.opt.splitbelow = true
|
||||
-- vim.opt.splitright = true
|
||||
-- vim.opt.signcolumn = "yes:3"
|
||||
-- vim.opt.tabstop = 2
|
||||
-- vim.opt.timeoutlen = 0
|
||||
-- vim.wo.wrap = false
|
||||
-- vim.opt.exrc = true
|
||||
-- vim.cmd("syntax on")
|
||||
|
||||
vim.opt.backup = false -- creates a backup file
|
||||
vim.opt.clipboard = "unnamedplus" -- allows neovim to access the system clipboard
|
||||
vim.opt.cmdheight = 2 -- more space in the neovim command line for displaying messages
|
||||
vim.opt.colorcolumn = "99999" -- fixes indentline for now
|
||||
vim.opt.completeopt = { "menuone", "noselect" }
|
||||
vim.opt.conceallevel = 0 -- so that `` is visible in markdown files
|
||||
vim.opt.fileencoding = "utf-8" -- the encoding written to a file
|
||||
vim.opt.foldmethod = "manual" -- folding set to "expr" for treesitter based folding
|
||||
vim.opt.foldexpr = "" -- set to "nvim_treesitter#foldexpr()" for treesitter based folding
|
||||
vim.opt.guifont = "monospace:h17" -- the font used in graphical neovim applications
|
||||
vim.opt.hidden = true -- required to keep multiple buffers and open multiple buffers
|
||||
vim.opt.hlsearch = true -- highlight all matches on previous search pattern
|
||||
vim.opt.ignorecase = true -- ignore case in search patterns
|
||||
vim.opt.mouse = "a" -- allow the mouse to be used in neovim
|
||||
vim.opt.pumheight = 10 -- pop up menu height
|
||||
vim.opt.showmode = false -- we don't need to see things like -- INSERT -- anymore
|
||||
vim.opt.showtabline = 2 -- always show tabs
|
||||
vim.opt.smartcase = true -- smart case
|
||||
vim.opt.smartindent = true -- make indenting smarter again
|
||||
vim.opt.splitbelow = true -- force all horizontal splits to go below current window
|
||||
vim.opt.splitright = true -- force all vertical splits to go to the right of current window
|
||||
vim.opt.swapfile = false -- creates a swapfile
|
||||
vim.opt.termguicolors = true -- set term gui colors (most terminals support this)
|
||||
vim.opt.timeoutlen = 100 -- time to wait for a mapped sequence to complete (in milliseconds)
|
||||
vim.opt.title = true -- set the title of window to the value of the titlestring
|
||||
vim.opt.titlestring = "%<%F%=%l/%L - nvim" -- what the title of the window will be set to
|
||||
vim.opt.undodir = vim.fn.stdpath "cache" .. "/undo"
|
||||
vim.opt.undofile = true -- enable persistent undo
|
||||
vim.opt.updatetime = 300 -- faster completion
|
||||
vim.opt.writebackup = false -- if a file is being edited by another program (or was written to file while editing with another program) it is not allowed to be edited
|
||||
vim.opt.expandtab = true -- convert tabs to spaces
|
||||
vim.opt.shiftwidth = 2 -- the number of spaces inserted for each indentation
|
||||
vim.opt.tabstop = 2 -- insert 2 spaces for a tab
|
||||
vim.opt.cursorline = true -- highlight the current line
|
||||
vim.opt.number = true -- set numbered lines
|
||||
vim.opt.relativenumber = false -- set relative numbered lines
|
||||
vim.opt.numberwidth = 4 -- set number column width to 2 {default 4}
|
||||
vim.opt.signcolumn = "yes" -- always show the sign column otherwise it would shift the text each time
|
||||
vim.opt.wrap = false -- display lines as one long line
|
||||
vim.opt.spell = false
|
||||
vim.opt.spelllang = "en"
|
||||
vim.opt.scrolloff = 8 -- is one of my fav
|
||||
vim.opt.sidescrolloff = 8
|
||||
@@ -1,145 +0,0 @@
|
||||
local generic_opts_any = { noremap = true, silent = true }
|
||||
|
||||
local generic_opts = {
|
||||
insert_mode = generic_opts_any,
|
||||
normal_mode = generic_opts_any,
|
||||
visual_mode = generic_opts_any,
|
||||
visual_block_mode = generic_opts_any,
|
||||
command_mode = generic_opts_any,
|
||||
term_mode = { silent = true },
|
||||
}
|
||||
|
||||
local mode_adapters = {
|
||||
insert_mode = "i",
|
||||
normal_mode = "n",
|
||||
term_mode = "t",
|
||||
visual_mode = "v",
|
||||
visual_block_mode = "x",
|
||||
command_mode = "c",
|
||||
}
|
||||
|
||||
---@class Keys
|
||||
---@field insert_mode table
|
||||
---@field normal_mode table
|
||||
---@field terminal_mode table
|
||||
---@field visual_mode table
|
||||
---@field visual_block_mode table
|
||||
---@field command_mode table
|
||||
|
||||
local defaults = {
|
||||
insert_mode = {
|
||||
-- Move current line / block with Alt-j/k ala vscode.
|
||||
["<A-j>"] = "<Esc>:m .+1<CR>==gi",
|
||||
-- Move current line / block with Alt-j/k ala vscode.
|
||||
["<A-k>"] = "<Esc>:m .-2<CR>==gi",
|
||||
-- navigation
|
||||
["<A-Up>"] = "<C-\\><C-N><C-w>k",
|
||||
["<A-Down>"] = "<C-\\><C-N><C-w>j",
|
||||
["<A-Left>"] = "<C-\\><C-N><C-w>h",
|
||||
["<A-Right>"] = "<C-\\><C-N><C-w>l",
|
||||
},
|
||||
|
||||
normal_mode = {
|
||||
-- Better window movement
|
||||
["<C-h>"] = "<C-w>h",
|
||||
["<C-j>"] = "<C-w>j",
|
||||
["<C-k>"] = "<C-w>k",
|
||||
["<C-l>"] = "<C-w>l",
|
||||
|
||||
-- Resize with arrows
|
||||
["<C-Up>"] = ":resize -2<CR>",
|
||||
["<C-Down>"] = ":resize +2<CR>",
|
||||
["<C-Left>"] = ":vertical resize -2<CR>",
|
||||
["<C-Right>"] = ":vertical resize +2<CR>",
|
||||
|
||||
-- Move current line / block with Alt-j/k a la vscode.
|
||||
["<A-j>"] = ":m .+1<CR>==",
|
||||
["<A-k>"] = ":m .-2<CR>==",
|
||||
|
||||
-- QuickFix
|
||||
["]q"] = ":cnext<CR>",
|
||||
["[q"] = ":cprev<CR>",
|
||||
["<C-q>"] = ":call QuickFixToggle()<CR>",
|
||||
},
|
||||
|
||||
term_mode = {
|
||||
-- Terminal window navigation
|
||||
["<C-h>"] = "<C-\\><C-N><C-w>h",
|
||||
["<C-j>"] = "<C-\\><C-N><C-w>j",
|
||||
["<C-k>"] = "<C-\\><C-N><C-w>k",
|
||||
["<C-l>"] = "<C-\\><C-N><C-w>l",
|
||||
},
|
||||
|
||||
visual_mode = {
|
||||
-- Better indenting
|
||||
["<"] = "<gv",
|
||||
[">"] = ">gv",
|
||||
|
||||
-- ["p"] = '"0p',
|
||||
-- ["P"] = '"0P',
|
||||
},
|
||||
|
||||
visual_block_mode = {
|
||||
-- Move current line / block with Alt-j/k ala vscode.
|
||||
["<A-j>"] = ":m '>+1<CR>gv-gv",
|
||||
["<A-k>"] = ":m '<-2<CR>gv-gv",
|
||||
},
|
||||
|
||||
command_mode = {
|
||||
-- navigate tab completion with <c-j> and <c-k>
|
||||
-- runs conditionally
|
||||
["<C-j>"] = { 'pumvisible() ? "\\<C-n>" : "\\<C-j>"', { expr = true, noremap = true } },
|
||||
["<C-k>"] = { 'pumvisible() ? "\\<C-p>" : "\\<C-k>"', { expr = true, noremap = true } },
|
||||
},
|
||||
}
|
||||
|
||||
if vim.fn.has "mac" == 1 then
|
||||
defaults.normal_mode["<A-Up>"] = defaults.normal_mode["<C-Up>"]
|
||||
defaults.normal_mode["<A-Down>"] = defaults.normal_mode["<C-Down>"]
|
||||
defaults.normal_mode["<A-Left>"] = defaults.normal_mode["<C-Left>"]
|
||||
defaults.normal_mode["<A-Right>"] = defaults.normal_mode["<C-Right>"]
|
||||
Log:debug "Activated mac keymappings"
|
||||
end
|
||||
|
||||
function set_keymaps(mode, key, val)
|
||||
local opt = generic_opts[mode] or generic_opts_any
|
||||
if type(val) == "table" then
|
||||
opt = val[2]
|
||||
val = val[1]
|
||||
end
|
||||
if val then
|
||||
vim.keymap.set(mode, key, val, opt)
|
||||
else
|
||||
pcall(vim.api.nvim_del_keymap, mode, key)
|
||||
end
|
||||
end
|
||||
|
||||
function load_mode(mode, keymaps)
|
||||
mode = mode_adapters[mode] or mode
|
||||
for k, v in pairs(keymaps) do
|
||||
set_keymaps(mode, k, v)
|
||||
end
|
||||
end
|
||||
|
||||
function load(keymaps)
|
||||
keymaps = keymaps or {}
|
||||
for mode, mapping in pairs(keymaps) do
|
||||
load_mode(mode, mapping)
|
||||
end
|
||||
end
|
||||
|
||||
function load_defaults()
|
||||
load(get_defaults())
|
||||
keys = keys or {}
|
||||
for idx, _ in pairs(defaults) do
|
||||
if not keys[idx] then
|
||||
keys[idx] = {}
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function get_defaults()
|
||||
return defaults
|
||||
end
|
||||
|
||||
load_defaults()
|
||||
@@ -1,50 +0,0 @@
|
||||
local status, lspc = pcall(require, 'lspconfig')
|
||||
if (not status) then return end
|
||||
|
||||
lspc.clangd.setup{}
|
||||
|
||||
local buf_map = function(bufnr, mode, lhs, rhs, opts)
|
||||
vim.api.nvim_buf_set_keymap(bufnr, mode, lhs, rhs, opts or {
|
||||
silent = true,
|
||||
})
|
||||
end
|
||||
|
||||
local protocol = require('vim.lsp.protocol')
|
||||
|
||||
local on_attach = function(client, buffnr)
|
||||
if client.server.capabilities.documentFormattingProvider then
|
||||
vimapi.nvim_create_autocmd("BufWritePre", {
|
||||
group = vim.api.nvim_create_augroup("format", { clear = true }),
|
||||
buffer = buffnr,
|
||||
callback = function() vim.lsp.buf.formatting_seq_sync() end
|
||||
})
|
||||
end
|
||||
end
|
||||
|
||||
local capabilities = vim.lsp.protocol.make_client_capabilities()
|
||||
capabilities.textDocument.completion.completionItem.snippetSupport = true
|
||||
capabilities = require('cmp_nvim_lsp').default_capabilities(capabilities)
|
||||
|
||||
local servers = { 'tsserver', 'lua', 'cssls', 'yamlls', 'intelephense' }
|
||||
for _, lsp in pairs(servers) do
|
||||
require('lspconfig')[lsp].setup {
|
||||
-- on_attach = on_attach,
|
||||
capabilities = capabilities,
|
||||
}
|
||||
end
|
||||
|
||||
lspc.lua.setup({
|
||||
settings = {
|
||||
Lua = {
|
||||
diagnostics = {
|
||||
globals = { 'vim' }
|
||||
},
|
||||
workspace = {
|
||||
library = vim.api.nvim_get_runtime_file("", true),
|
||||
checkThirdParty = false
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
-- lspc.intelephense.setup()
|
||||
@@ -1,73 +0,0 @@
|
||||
local has_words_before = function()
|
||||
local line, col = unpack(vim.api.nvim_win_get_cursor(0))
|
||||
return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil
|
||||
end
|
||||
|
||||
local feedkey = function(key, mode)
|
||||
vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes(key, true, true, true), mode, true)
|
||||
end
|
||||
|
||||
local cmp = require("cmp")
|
||||
local lspkind = require("lspkind")
|
||||
|
||||
cmp.setup({
|
||||
sources = {
|
||||
{ name = "nvim_lsp" },
|
||||
{ name = "cmp_tabnine" },
|
||||
{ name = "treesitter" },
|
||||
{ name = "buffer" },
|
||||
{ name = "path" },
|
||||
{ name = "vsnip" },
|
||||
-- { name = "copilot" },
|
||||
},
|
||||
|
||||
snippet = {
|
||||
expand = function(args)
|
||||
vim.fn["vsnip#anonymous"](args.body)
|
||||
end,
|
||||
},
|
||||
|
||||
formatting = {
|
||||
format = lspkind.cmp_format({
|
||||
with_text = true,
|
||||
menu = {
|
||||
buffer = "[Buf]",
|
||||
nvim_lsp = "[LSP]",
|
||||
nvim_lua = "[Lua]",
|
||||
latex_symbols = "[Latex]",
|
||||
treesitter = "[TS]",
|
||||
cmp_tabnine = "[TN]",
|
||||
vsnip = "[Snip]",
|
||||
},
|
||||
}),
|
||||
},
|
||||
|
||||
mapping = {
|
||||
["<CR>"] = cmp.mapping.confirm({ select = true }),
|
||||
["<Tab>"] = cmp.mapping(function(fallback)
|
||||
if cmp.visible() then
|
||||
cmp.select_next_item()
|
||||
elseif vim.fn["vsnip#available"](1) == 1 then
|
||||
feedkey("<Plug>(vsnip-expand-or-jump)", "")
|
||||
elseif has_words_before() then
|
||||
cmp.complete()
|
||||
else
|
||||
fallback()
|
||||
end
|
||||
end, {
|
||||
"i",
|
||||
"s",
|
||||
}),
|
||||
|
||||
["<S-Tab>"] = cmp.mapping(function()
|
||||
if cmp.visible() then
|
||||
cmp.select_prev_item()
|
||||
elseif vim.fn["vsnip#jumpable"](-1) == 1 then
|
||||
feedkey("<Plug>(vsnip-jump-prev)", "")
|
||||
end
|
||||
end, {
|
||||
"i",
|
||||
"s",
|
||||
}),
|
||||
},
|
||||
})
|
||||
@@ -1,41 +0,0 @@
|
||||
config = {
|
||||
---@usage set to false to disable project.nvim.
|
||||
--- This is on by default since it's currently the expected behavior.
|
||||
active = true,
|
||||
|
||||
on_config_done = nil,
|
||||
|
||||
---@usage set to true to disable setting the current-woriking directory
|
||||
--- Manual mode doesn't automatically change your root directory, so you have
|
||||
--- the option to manually do so using `:ProjectRoot` command.
|
||||
manual_mode = false,
|
||||
|
||||
---@usage Methods of detecting the root directory
|
||||
--- Allowed values: **"lsp"** uses the native neovim lsp
|
||||
--- **"pattern"** uses vim-rooter like glob pattern matching. Here
|
||||
--- order matters: if one is not detected, the other is used as fallback. You
|
||||
--- can also delete or rearangne the detection methods.
|
||||
-- detection_methods = { "lsp", "pattern" }, -- NOTE: lsp detection will get annoying with multiple langs in one project
|
||||
detection_methods = { "pattern" },
|
||||
|
||||
---@usage patterns used to detect root dir, when **"pattern"** is in detection_methods
|
||||
patterns = { ".git", "_darcs", ".hg", ".bzr", ".svn", "Makefile", "package.json", "pom.xml" },
|
||||
|
||||
---@ Show hidden files in telescope when searching for files in a project
|
||||
show_hidden = false,
|
||||
|
||||
---@usage When set to false, you will get a message when project.nvim changes your directory.
|
||||
-- When set to false, you will get a message when project.nvim changes your directory.
|
||||
silent_chdir = true,
|
||||
|
||||
---@usage list of lsp client names to ignore when using **lsp** detection. eg: { "efm", ... }
|
||||
ignore_lsp = {},
|
||||
}
|
||||
|
||||
local status_ok, project = pcall(require, "project_nvim")
|
||||
if not status_ok then
|
||||
return
|
||||
end
|
||||
|
||||
project.setup(config)
|
||||
|
||||
@@ -1,148 +0,0 @@
|
||||
local function get_pickers(actions)
|
||||
return {
|
||||
find_files = {
|
||||
theme = "dropdown",
|
||||
hidden = true,
|
||||
previewer = false,
|
||||
},
|
||||
live_grep = {
|
||||
--@usage don't include the filename in the search results
|
||||
only_sort_text = true,
|
||||
theme = "dropdown",
|
||||
},
|
||||
grep_string = {
|
||||
only_sort_text = true,
|
||||
theme = "dropdown",
|
||||
},
|
||||
buffers = {
|
||||
theme = "dropdown",
|
||||
previewer = false,
|
||||
initial_mode = "normal",
|
||||
mappings = {
|
||||
i = {
|
||||
["<C-d>"] = actions.delete_buffer,
|
||||
},
|
||||
n = {
|
||||
["dd"] = actions.delete_buffer,
|
||||
},
|
||||
},
|
||||
},
|
||||
planets = {
|
||||
show_pluto = true,
|
||||
show_moon = true,
|
||||
},
|
||||
git_files = {
|
||||
theme = "dropdown",
|
||||
hidden = true,
|
||||
previewer = false,
|
||||
show_untracked = true,
|
||||
},
|
||||
lsp_references = {
|
||||
theme = "dropdown",
|
||||
initial_mode = "normal",
|
||||
},
|
||||
lsp_definitions = {
|
||||
theme = "dropdown",
|
||||
initial_mode = "normal",
|
||||
},
|
||||
lsp_declarations = {
|
||||
theme = "dropdown",
|
||||
initial_mode = "normal",
|
||||
},
|
||||
lsp_implementations = {
|
||||
theme = "dropdown",
|
||||
initial_mode = "normal",
|
||||
},
|
||||
}
|
||||
end
|
||||
|
||||
local ok, actions = pcall(require, "telescope.actions")
|
||||
if not ok then
|
||||
return
|
||||
end
|
||||
|
||||
local config = {
|
||||
prompt_prefix = " ",
|
||||
selection_caret = " ",
|
||||
entry_prefix = " ",
|
||||
initial_mode = "insert",
|
||||
selection_strategy = "reset",
|
||||
sorting_strategy = "descending",
|
||||
layout_strategy = "horizontal",
|
||||
layout_config = {
|
||||
width = 0.75,
|
||||
preview_cutoff = 120,
|
||||
horizontal = {
|
||||
preview_width = function(_, cols, _)
|
||||
if cols < 120 then
|
||||
return math.floor(cols * 0.8)
|
||||
end
|
||||
return math.floor(cols * 0.8)
|
||||
end,
|
||||
mirror = false,
|
||||
},
|
||||
vertical = { mirror = false },
|
||||
},
|
||||
vimgrep_arguments = {
|
||||
"rg",
|
||||
"--color=never",
|
||||
"--no-heading",
|
||||
"--with-filename",
|
||||
"--line-number",
|
||||
"--column",
|
||||
"--smart-case",
|
||||
"--hidden",
|
||||
"--glob=!.git/",
|
||||
},
|
||||
---@usage Mappings are fully customizable. Many familiar mapping patterns are setup as defaults.
|
||||
mappings = {
|
||||
i = {
|
||||
["<C-n>"] = actions.move_selection_next,
|
||||
["<C-p>"] = actions.move_selection_previous,
|
||||
["<C-c>"] = actions.close,
|
||||
["<C-j>"] = actions.cycle_history_next,
|
||||
["<C-k>"] = actions.cycle_history_prev,
|
||||
["<C-q>"] = actions.smart_send_to_qflist + actions.open_qflist,
|
||||
["<CR>"] = actions.select_default,
|
||||
},
|
||||
n = {
|
||||
["<C-n>"] = actions.move_selection_next,
|
||||
["<C-p>"] = actions.move_selection_previous,
|
||||
["<C-q>"] = actions.smart_send_to_qflist + actions.open_qflist,
|
||||
},
|
||||
},
|
||||
pickers = get_pickers(actions),
|
||||
file_ignore_patterns = {},
|
||||
path_display = { "smart" },
|
||||
winblend = 0,
|
||||
border = {},
|
||||
borderchars = { "─", "│", "─", "│", "╭", "╮", "╯", "╰" },
|
||||
color_devicons = true,
|
||||
set_env = { ["COLORTERM"] = "truecolor" }, -- default = nil,
|
||||
extensions = {
|
||||
fzf = {
|
||||
fuzzy = true, -- false will only do exact matching
|
||||
override_generic_sorter = true, -- override the generic sorter
|
||||
override_file_sorter = true, -- override the file sorter
|
||||
case_mode = "smart_case", -- or "ignore_case" or "respect_case"
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
local previewers = require "telescope.previewers"
|
||||
local sorters = require "telescope.sorters"
|
||||
|
||||
config = vim.tbl_extend("keep", {
|
||||
file_previewer = previewers.vim_buffer_cat.new,
|
||||
grep_previewer = previewers.vim_buffer_vimgrep.new,
|
||||
qflist_previewer = previewers.vim_buffer_qflist.new,
|
||||
file_sorter = sorters.get_fuzzy_file,
|
||||
generic_sorter = sorters.get_generic_fuzzy_sorter,
|
||||
}, config)
|
||||
|
||||
local telescope = require "telescope"
|
||||
telescope.setup(config)
|
||||
|
||||
require("telescope").load_extension "projects"
|
||||
require("telescope").load_extension "fzf"
|
||||
@@ -1,133 +0,0 @@
|
||||
local config = {
|
||||
active = true,
|
||||
on_config_done = nil,
|
||||
-- size can be a number or function which is passed the current terminal
|
||||
size = 20,
|
||||
open_mapping = [[<c-t>]],
|
||||
hide_numbers = true, -- hide the number column in toggleterm buffers
|
||||
shade_filetypes = {},
|
||||
shade_terminals = true,
|
||||
shading_factor = 2, -- the degree by which to darken to terminal colour, default: 1 for dark backgrounds, 3 for light
|
||||
start_in_insert = true,
|
||||
insert_mappings = true, -- whether or not the open mapping applies in insert mode
|
||||
persist_size = false,
|
||||
-- direction = 'vertical' | 'horizontal' | 'window' | 'float',
|
||||
direction = "float",
|
||||
close_on_exit = true, -- close the terminal window when the process exits
|
||||
shell = vim.o.shell, -- change the default shell
|
||||
-- This field is only relevant if direction is set to 'float'
|
||||
float_opts = {
|
||||
-- The border key is *almost* the same as 'nvim_win_open'
|
||||
-- see :h nvim_win_open for details on borders however
|
||||
-- the 'curved' border is a custom border type
|
||||
-- not natively supported but implemented in this plugin.
|
||||
-- border = 'single' | 'double' | 'shadow' | 'curved' | ... other options supported by win open
|
||||
border = "curved",
|
||||
-- width = <value>,
|
||||
-- height = <value>,
|
||||
winblend = 0,
|
||||
highlights = {
|
||||
border = "Normal",
|
||||
background = "Normal",
|
||||
},
|
||||
},
|
||||
-- Add executables on the config.lua
|
||||
-- { exec, keymap, name}
|
||||
-- lvim.builtin.terminal.execs = {{}} to overwrite
|
||||
-- lvim.builtin.terminal.execs[#lvim.builtin.terminal.execs+1] = {"gdb", "tg", "GNU Debugger"}
|
||||
-- TODO: pls add mappings in which key and refactor this
|
||||
execs = {
|
||||
{ vim.o.shell, "<M-1>", "Horizontal Terminal", "horizontal", 0.3 },
|
||||
{ vim.o.shell, "<M-2>", "Vertical Terminal", "vertical", 0.4 },
|
||||
{ vim.o.shell, "<M-3>", "Float Terminal", "float", nil },
|
||||
},
|
||||
}
|
||||
|
||||
--- Get current buffer size
|
||||
---@return {width: number, height: number}
|
||||
local function get_buf_size()
|
||||
local cbuf = vim.api.nvim_get_current_buf()
|
||||
local bufinfo = vim.tbl_filter(function(buf)
|
||||
return buf.bufnr == cbuf
|
||||
end, vim.fn.getwininfo(vim.api.nvim_get_current_win()))[1]
|
||||
if bufinfo == nil then
|
||||
return { width = -1, height = -1 }
|
||||
end
|
||||
return { width = bufinfo.width, height = bufinfo.height }
|
||||
end
|
||||
|
||||
--- Get the dynamic terminal size in cells
|
||||
---@param direction number
|
||||
---@param size integer
|
||||
---@return integer
|
||||
local function get_dynamic_terminal_size(direction, size)
|
||||
size = size or config.size
|
||||
if direction ~= "float" and tostring(size):find(".", 1, true) then
|
||||
size = math.min(size, 1.0)
|
||||
local buf_sizes = get_buf_size()
|
||||
local buf_size = direction == "horizontal" and buf_sizes.height or buf_sizes.width
|
||||
return buf_size * size
|
||||
else
|
||||
return size
|
||||
end
|
||||
end
|
||||
|
||||
Add_exec = function(opts)
|
||||
local binary = opts.cmd:match "(%S+)"
|
||||
if vim.fn.executable(binary) ~= 1 then
|
||||
Log:debug("Skipping configuring executable " .. binary .. ". Please make sure it is installed properly.")
|
||||
return
|
||||
end
|
||||
|
||||
vim.keymap.set({ "n", "t" }, opts.keymap, function()
|
||||
M._exec_toggle { cmd = opts.cmd, count = opts.count, direction = opts.direction, size = opts.size() }
|
||||
end, { desc = opts.label, noremap = true, silent = true })
|
||||
end
|
||||
|
||||
local terminal = require "toggleterm"
|
||||
terminal.setup(config)
|
||||
|
||||
for i, exec in pairs(config.execs) do
|
||||
local direction = exec[4] or config.direction
|
||||
|
||||
local opts = {
|
||||
cmd = exec[1],
|
||||
keymap = exec[2],
|
||||
label = exec[3],
|
||||
-- NOTE: unable to consistently bind id/count <= 9, see #2146
|
||||
count = i + 100,
|
||||
direction = direction,
|
||||
size = function()
|
||||
return get_dynamic_terminal_size(direction, exec[5])
|
||||
end,
|
||||
}
|
||||
|
||||
Add_exec(opts)
|
||||
end
|
||||
|
||||
_exec_toggle = function(opts)
|
||||
local Terminal = require("toggleterm.terminal").Terminal
|
||||
local term = Terminal:new { cmd = opts.cmd, count = opts.count, direction = opts.direction }
|
||||
term:toggle(opts.size, opts.direction)
|
||||
end
|
||||
|
||||
Lazygit_toggle = function()
|
||||
local Terminal = require("toggleterm.terminal").Terminal
|
||||
local lazygit = Terminal:new {
|
||||
cmd = "lazygit",
|
||||
hidden = true,
|
||||
direction = "float",
|
||||
float_opts = {
|
||||
border = "none",
|
||||
width = 100000,
|
||||
height = 100000,
|
||||
},
|
||||
on_open = function(_)
|
||||
vim.cmd "startinsert!"
|
||||
end,
|
||||
on_close = function(_) end,
|
||||
count = 99,
|
||||
}
|
||||
lazygit:toggle()
|
||||
end
|
||||
|
||||
@@ -1,18 +0,0 @@
|
||||
-- set colorscheme
|
||||
vim.cmd 'set termguicolors'
|
||||
|
||||
require("catppuccin").setup()
|
||||
|
||||
vim.cmd [[colorscheme dracula]]
|
||||
|
||||
-- enable colorizer
|
||||
require'colorizer'.setup()
|
||||
|
||||
-- set sign
|
||||
vim.cmd 'sign define DiagnosticSignError text= linehl= texthl=DiagnosticSignError numhl='
|
||||
vim.cmd 'sign define DiagnosticSignHint text= linehl= texthl=DiagnosticSignHint numhl='
|
||||
vim.cmd 'sign define DiagnosticSignInfo text= linehl= texthl=DiagnosticSignInfo numhl='
|
||||
vim.cmd 'sign define DiagnosticSignWarn text= linehl= texthl=DiagnosticSignWarn numhl='
|
||||
|
||||
-- set lightline theme to horizon
|
||||
vim.g.lightline = { colorscheme = "dracula" }
|
||||
@@ -1,14 +0,0 @@
|
||||
require'nvim-treesitter.configs'.setup {
|
||||
textobjects = {
|
||||
select = {
|
||||
enable = true,
|
||||
keymaps = {
|
||||
-- You can use the capture groups defined in textobjects.scm
|
||||
["af"] = "@function.outer",
|
||||
["if"] = "@function.inner",
|
||||
["ac"] = "@class.outer",
|
||||
["ic"] = "@class.inner",
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
@@ -1,30 +0,0 @@
|
||||
require("nvim-treesitter.configs").setup({
|
||||
highlight = {
|
||||
enable = true,
|
||||
disable = {},
|
||||
},
|
||||
rainbow = {
|
||||
enable = true,
|
||||
extended_mode = true,
|
||||
},
|
||||
autotag = {
|
||||
enable = true,
|
||||
},
|
||||
context_commentstring = {
|
||||
enable = true,
|
||||
},
|
||||
incremental_selection = {
|
||||
enable = true,
|
||||
keymaps = {
|
||||
init_selection = "gnn",
|
||||
node_incremental = "grn",
|
||||
scope_incremental = "grc",
|
||||
node_decremental = "grm",
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
-- breaks highlight
|
||||
-- vim.cmd([[set foldmethod=expr]])
|
||||
-- vim.cmd([[set foldlevel=10]])
|
||||
-- vim.cmd([[set foldexpr=nvim_treesitter#foldexpr()]])
|
||||
@@ -1,26 +0,0 @@
|
||||
-- null-ls
|
||||
local nb = require('null-ls').builtins
|
||||
|
||||
require('null-ls').setup({
|
||||
sources = {
|
||||
nb.formatting.alejandra,
|
||||
nb.code_actions.statix,
|
||||
nb.diagnostics.cppcheck,
|
||||
nb.diagnostics.deadnix,
|
||||
nb.diagnostics.statix,
|
||||
nb.diagnostics.eslint,
|
||||
nb.completion.spell,
|
||||
},
|
||||
})
|
||||
|
||||
require("gitsigns").setup()
|
||||
|
||||
-- autopairs
|
||||
require('nvim-autopairs').setup{}
|
||||
|
||||
-- copy to system clipboard
|
||||
vim.api.nvim_set_keymap( 'v', '<Leader>y', '"+y', {noremap = true})
|
||||
vim.api.nvim_set_keymap( 'n', '<Leader>y', ':%+y<CR>', {noremap = true})
|
||||
|
||||
-- paste from system clipboard
|
||||
vim.api.nvim_set_keymap( 'n', '<Leader>p', '"+p', {noremap = true})
|
||||
@@ -1,147 +0,0 @@
|
||||
vim.g.mapleader = " "
|
||||
|
||||
local function smart_quit()
|
||||
local bufnr = vim.api.nvim_get_current_buf()
|
||||
local modified = vim.api.nvim_buf_get_option(bufnr, "modified")
|
||||
if modified then
|
||||
vim.ui.input({
|
||||
prompt = "You have unsaved changes. Quit anyway? (y/n) ",
|
||||
}, function(input)
|
||||
if input == "y" then
|
||||
vim.cmd "q!"
|
||||
end
|
||||
end)
|
||||
else
|
||||
vim.cmd "q!"
|
||||
end
|
||||
end
|
||||
|
||||
local function find_project_files()
|
||||
local _, builtin = pcall(require, "telescope.builtin")
|
||||
local ok = pcall(builtin.git_files)
|
||||
|
||||
if not ok then
|
||||
builtin.find_files()
|
||||
end
|
||||
end
|
||||
|
||||
local wk = require("which-key")
|
||||
|
||||
wk.setup({})
|
||||
|
||||
wk.register({
|
||||
["<leader>"] = {
|
||||
|
||||
[";"] = { "<cmd>Alpha<CR>", "Dashboard" },
|
||||
["w"] = { "<cmd>w!<CR>", "Save" },
|
||||
["q"] = { "<cmd>smart_quit()<CR>", "Quit" },
|
||||
["/"] = { "<Plug>(comment_toggle_linewise_current)", "Comment toggle current line" },
|
||||
["c"] = { "<cmd>BufferKill<CR>", "Close Buffer" },
|
||||
["f"] = { find_project_files, "Find File" },
|
||||
["h"] = { "<cmd>nohlsearch<CR>", "No Highlight" },
|
||||
b = {
|
||||
name = "Buffers",
|
||||
j = { "<cmd>BufferLinePick<cr>", "Jump" },
|
||||
f = { "<cmd>Telescope buffers<cr>", "Find" },
|
||||
b = { "<cmd>BufferLineCyclePrev<cr>", "Previous" },
|
||||
n = { "<cmd>BufferLineCycleNext<cr>", "Next" },
|
||||
-- w = { "<cmd>BufferWipeout<cr>", "Wipeout" }, -- TODO: implement this for bufferline
|
||||
e = {
|
||||
"<cmd>BufferLinePickClose<cr>",
|
||||
"Pick which buffer to close",
|
||||
},
|
||||
h = { "<cmd>BufferLineCloseLeft<cr>", "Close all to the left" },
|
||||
l = {
|
||||
"<cmd>BufferLineCloseRight<cr>",
|
||||
"Close all to the right",
|
||||
},
|
||||
D = {
|
||||
"<cmd>BufferLineSortByDirectory<cr>",
|
||||
"Sort by directory",
|
||||
},
|
||||
L = {
|
||||
"<cmd>BufferLineSortByExtension<cr>",
|
||||
"Sort by language",
|
||||
},
|
||||
},
|
||||
-- " Available Debug Adapters:
|
||||
-- " https://microsoft.github.io/debug-adapter-protocol/implementors/adapters/
|
||||
-- " Adapter configuration and installation instructions:
|
||||
-- " https://github.com/mfussenegger/nvim-dap/wiki/Debug-Adapter-installation
|
||||
-- " Debug Adapter protocol:
|
||||
-- " https://microsoft.github.io/debug-adapter-protocol/
|
||||
-- " Debugging
|
||||
g = {
|
||||
name = "Git",
|
||||
g = { Lazygit_toggle, "Lazygit" },
|
||||
j = { "<cmd>lua require 'gitsigns'.next_hunk({navigation_message = false})<cr>", "Next Hunk" },
|
||||
k = { "<cmd>lua require 'gitsigns'.prev_hunk({navigation_message = false})<cr>", "Prev Hunk" },
|
||||
l = { "<cmd>lua require 'gitsigns'.blame_line()<cr>", "Blame" },
|
||||
p = { "<cmd>lua require 'gitsigns'.preview_hunk()<cr>", "Preview Hunk" },
|
||||
r = { "<cmd>lua require 'gitsigns'.reset_hunk()<cr>", "Reset Hunk" },
|
||||
R = { "<cmd>lua require 'gitsigns'.reset_buffer()<cr>", "Reset Buffer" },
|
||||
s = { "<cmd>lua require 'gitsigns'.stage_hunk()<cr>", "Stage Hunk" },
|
||||
u = {
|
||||
"<cmd>lua require 'gitsigns'.undo_stage_hunk()<cr>",
|
||||
"Undo Stage Hunk",
|
||||
},
|
||||
o = { "<cmd>Telescope git_status<cr>", "Open changed file" },
|
||||
b = { "<cmd>Telescope git_branches<cr>", "Checkout branch" },
|
||||
c = { "<cmd>Telescope git_commits<cr>", "Checkout commit" },
|
||||
C = {
|
||||
"<cmd>Telescope git_bcommits<cr>",
|
||||
"Checkout commit(for current file)",
|
||||
},
|
||||
d = {
|
||||
"<cmd>Gitsigns diffthis HEAD<cr>",
|
||||
"Git Diff",
|
||||
},
|
||||
},
|
||||
l = {
|
||||
name = "LSP",
|
||||
a = { "<cmd>lua vim.lsp.buf.code_action()<cr>", "Code Action" },
|
||||
d = { "<cmd>Telescope diagnostics bufnr=0 theme=get_ivy<cr>", "Buffer Diagnostics" },
|
||||
w = { "<cmd>Telescope diagnostics<cr>", "Diagnostics" },
|
||||
-- f = { require("lvim.lsp.utils").format, "Format" },
|
||||
i = { "<cmd>LspInfo<cr>", "Info" },
|
||||
I = { "<cmd>Mason<cr>", "Mason Info" },
|
||||
j = {
|
||||
vim.diagnostic.goto_next,
|
||||
"Next Diagnostic",
|
||||
},
|
||||
k = {
|
||||
vim.diagnostic.goto_prev,
|
||||
"Prev Diagnostic",
|
||||
},
|
||||
l = { vim.lsp.codelens.run, "CodeLens Action" },
|
||||
q = { vim.diagnostic.setloclist, "Quickfix" },
|
||||
r = { vim.lsp.buf.rename, "Rename" },
|
||||
s = { "<cmd>Telescope lsp_document_symbols<cr>", "Document Symbols" },
|
||||
S = {
|
||||
"<cmd>Telescope lsp_dynamic_workspace_symbols<cr>",
|
||||
"Workspace Symbols",
|
||||
},
|
||||
e = { "<cmd>Telescope quickfix<cr>", "Telescope Quickfix" },
|
||||
},
|
||||
|
||||
|
||||
a = { "<cmd>lua require('telescope.builtin').lsp_code_actions()<cr>", "Code Actions" },
|
||||
d = { "<cmd>lua require('telescope.builtin').lsp_document_diagnostics()<cr>", "LSP Diagnostics" },
|
||||
k = { "<cmd>lua vim.lsp.buf.signature_help()<cr>", "Signature Help" },
|
||||
P = { "<cmd>lua require'telescope'.extensions.projects.projects{}<cr>", "Signature Help" },
|
||||
}
|
||||
})
|
||||
|
||||
wk.register(
|
||||
{
|
||||
["/"] = { "<Plug>(comment_toggle_linewise_visual)", "Comment toggle linewise (visual)" },
|
||||
},
|
||||
{
|
||||
mode = "v", -- VISUAL mode
|
||||
prefix = "<leader>",
|
||||
buffer = nil, -- Global mappings. Specify a buffer number for buffer local mappings
|
||||
silent = true, -- use `silent` when creating keymaps
|
||||
noremap = true, -- use `noremap` when creating keymaps
|
||||
nowait = true, -- use `nowait` when creating keymaps
|
||||
}
|
||||
)
|
||||
@@ -1,83 +0,0 @@
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
environment.variables = { EDITOR = "vim"; };
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
nodePackages.typescript-language-server
|
||||
lua-language-server
|
||||
nodePackages.intelephense
|
||||
nodePackages.vscode-css-languageserver-bin
|
||||
nodePackages.yaml-language-server
|
||||
gopls
|
||||
lazygit
|
||||
(neovim.override {
|
||||
vimAlias = true;
|
||||
configure = {
|
||||
packages.myPlugins = with pkgs.vimPlugins; {
|
||||
start = [
|
||||
bufferline-nvim
|
||||
catppuccin-nvim
|
||||
cmp-buffer
|
||||
cmp-nvim-lsp
|
||||
cmp-path
|
||||
cmp-spell
|
||||
cmp-treesitter
|
||||
cmp-vsnip
|
||||
comment-nvim
|
||||
dracula-vim
|
||||
friendly-snippets
|
||||
gitsigns-nvim
|
||||
lightline-vim
|
||||
lspkind-nvim
|
||||
neogit
|
||||
null-ls-nvim
|
||||
nvim-autopairs
|
||||
nvim-cmp
|
||||
nvim-colorizer-lua
|
||||
nvim-lspconfig
|
||||
nvim-tree-lua
|
||||
nvim-ts-rainbow
|
||||
pkgs.vimPlugins.nvim-treesitter.withAllGrammars
|
||||
# (nvim-treesitter.withPlugins (_: pkgs.tree-sitter.allGrammars))
|
||||
plenary-nvim
|
||||
project-nvim
|
||||
telescope-fzf-native-nvim
|
||||
telescope-nvim
|
||||
toggleterm-nvim
|
||||
vim-floaterm
|
||||
vim-sneak
|
||||
vim-vsnip
|
||||
which-key-nvim
|
||||
];
|
||||
opt = [];
|
||||
};
|
||||
customRC = let
|
||||
luaRequire = module:
|
||||
builtins.readFile (builtins.toString
|
||||
./config
|
||||
+ "/${module}.lua");
|
||||
luaConfig = builtins.concatStringsSep "\n" (map luaRequire [
|
||||
"init"
|
||||
"keymappings"
|
||||
"icons"
|
||||
"lspconfig"
|
||||
"nvim-cmp"
|
||||
"theming"
|
||||
"project"
|
||||
"telescope"
|
||||
"terminal"
|
||||
"treesitter"
|
||||
"treesitter-textobjects"
|
||||
"utils"
|
||||
"bufferline"
|
||||
"which-key"
|
||||
]);
|
||||
in ''
|
||||
lua << EOF
|
||||
${luaConfig}
|
||||
EOF
|
||||
'';
|
||||
};
|
||||
}
|
||||
)];
|
||||
}
|
||||
@@ -1,342 +0,0 @@
|
||||
{ config, pkgs, lib, ... }:
|
||||
{
|
||||
environment.etc = {
|
||||
"sway/config".text = ''
|
||||
# Oxide theme
|
||||
#
|
||||
# Author: Diki Ananta <diki1aap@gmail.com> Repository: https://github.com/dikiaap/dotfiles
|
||||
# License: MIT
|
||||
# i3 config file (v4)
|
||||
|
||||
# font for window titles and bar
|
||||
font pango:Source Sans Pro 10
|
||||
|
||||
# use win key
|
||||
set $mod Mod4
|
||||
|
||||
# use these keys for focus, movement, and resize directions
|
||||
set $left h
|
||||
set $down j
|
||||
set $up k
|
||||
set $right l
|
||||
|
||||
# define names for workspaces
|
||||
set $ws1 "1: "
|
||||
set $ws2 "2: "
|
||||
set $ws3 "3: "
|
||||
set $ws4 "4: "
|
||||
set $ws5 "5: "
|
||||
set $ws6 "6: "
|
||||
set $ws7 "7: "
|
||||
set $ws8 "8: "
|
||||
set $ws9 "9: "
|
||||
set $ws10 "10: "
|
||||
|
||||
# assign workspaces to primary monitor
|
||||
workspace $ws1 output primary
|
||||
workspace $ws2 output primary
|
||||
workspace $ws3 output primary
|
||||
workspace $ws4 output primary
|
||||
workspace $ws5 output primary
|
||||
workspace $ws6 output primary
|
||||
workspace $ws7 output primary
|
||||
workspace $ws8 output primary
|
||||
workspace $ws9 output primary
|
||||
|
||||
# use $mod+Mouse to drag floating windows to their wanted position
|
||||
floating_modifier $mod
|
||||
|
||||
# control focused window when follows the mouse movements
|
||||
focus_follows_mouse no
|
||||
|
||||
# window border settings
|
||||
default_border none
|
||||
default_floating_border none
|
||||
|
||||
# hiding borders adjacent to the screen edges
|
||||
hide_edge_borders none
|
||||
|
||||
# set popups during fullscreen mode
|
||||
popup_during_fullscreen smart
|
||||
|
||||
# start a terminal
|
||||
#bindsym $mod+Return workspace $ws1; exec --no-startup-id alacritty
|
||||
bindsym $mod+Return workspace $ws1; exec foot -c /etc/xdg/foot/foot.ini -T terminal-sway
|
||||
|
||||
# start a program launcher
|
||||
# bindsym $mod+d exec --no-startup-id wofi -s /etc/wofi/style.css --show drun --lines 5 --columns 1 -t alacritty
|
||||
bindsym $mod+d exec foot -c /etc/xdg/foot/foot.ini -a launcher -e env TERMINAL_COMMAND="foot -e" sway-launcher-desktop
|
||||
#bindsym $mod+d exec --no-startup-id bemenu
|
||||
#bindsym $mod+d exec --no-startup-id i3-dmenu-desktop --dmenu="dmenu -i -fn 'Source Sans Pro-10' -nb '#212121' -sb '#2b83a6' -sf '#ffffff'
|
||||
#bindsym $mod+d exec --no-startup-id bemenu --dmenu="dmenu -i -fn 'Source Sans Pro-10' -nb '#212121' -sb '#2b83a6' -sf '#ffffff'
|
||||
|
||||
# start an explorer
|
||||
bindsym $mod+e exec --no-startup-id pcmanfm
|
||||
|
||||
# switching window with win+tab
|
||||
bindsym $mod+Tab exec --no-startup-id wofi -show window
|
||||
|
||||
# kill focused window
|
||||
bindsym $mod+Shift+q kill
|
||||
|
||||
# change keyboard layout
|
||||
bindsym $mod+i swaymsg input "*" us
|
||||
bindsym $mod+Shift+i swaymsg input "*" de
|
||||
|
||||
# change focus
|
||||
bindsym $mod+$left focus left
|
||||
bindsym $mod+$down focus down
|
||||
bindsym $mod+$up focus up
|
||||
bindsym $mod+$right focus right
|
||||
|
||||
# alternatively, you can use the cursor keys:
|
||||
bindsym $mod+Left focus left
|
||||
bindsym $mod+Down focus down
|
||||
bindsym $mod+Up focus up
|
||||
bindsym $mod+Right focus right
|
||||
|
||||
# move focused window
|
||||
bindsym $mod+Shift+$left move left
|
||||
bindsym $mod+Shift+$down move down
|
||||
bindsym $mod+Shift+$up move up
|
||||
bindsym $mod+Shift+$right move right
|
||||
|
||||
# alternatively, you can use the cursor keys:
|
||||
bindsym $mod+Shift+Left move left
|
||||
bindsym $mod+Shift+Down move down
|
||||
bindsym $mod+Shift+Up move up
|
||||
bindsym $mod+Shift+Right move right
|
||||
|
||||
# split in horizontal orientation
|
||||
bindsym $mod+c split h
|
||||
|
||||
# split in vertical orientation
|
||||
bindsym $mod+v split v
|
||||
|
||||
# enter fullscreen mode for the focused container
|
||||
bindsym $mod+f fullscreen toggle
|
||||
|
||||
# change container layout
|
||||
bindsym $mod+s layout stacking
|
||||
bindsym $mod+w layout tabbed
|
||||
bindsym $mod+p layout toggle split
|
||||
|
||||
# toggle tiling / floating
|
||||
# bindsym $mod+Shift+space floating toggle
|
||||
|
||||
# change focus between tiling / floating windows
|
||||
# bindsym $mod+space focus mode_toggle
|
||||
|
||||
# focus the parent container
|
||||
bindsym $mod+a focus parent
|
||||
|
||||
# focus the child container
|
||||
bindsym $mod+Shift+a focus child
|
||||
|
||||
# move the currently focused window to the scratchpad
|
||||
bindsym $mod+Shift+minus move scratchpad
|
||||
|
||||
# show the next scratchpad window or hide the focused scratchpad window
|
||||
bindsym $mod+minus scratchpad show
|
||||
|
||||
# move focused floating window to the current position of the cursor
|
||||
bindsym $mod+Shift+m move position mouse
|
||||
|
||||
# set a window to stick to the glass
|
||||
bindsym $mod+Shift+s sticky toggle
|
||||
|
||||
# sticky preview for media
|
||||
bindsym $mod+Shift+p fullscreen disable; floating enable; resize set 350 px 197 px; sticky enable; move window to position 1006 px 537 px
|
||||
|
||||
# shortcut to change window border
|
||||
bindsym $mod+t border normal 0
|
||||
bindsym $mod+y border pixel 1
|
||||
bindsym $mod+u border none
|
||||
|
||||
# switch to workspace
|
||||
|
||||
bindcode $mod+10 workspace $ws1
|
||||
bindcode $mod+11 workspace $ws2
|
||||
bindcode $mod+12 workspace $ws3
|
||||
bindcode $mod+13 workspace $ws4
|
||||
bindcode $mod+14 workspace $ws5
|
||||
bindcode $mod+15 workspace $ws6
|
||||
bindcode $mod+16 workspace $ws7
|
||||
bindcode $mod+17 workspace $ws8
|
||||
bindcode $mod+18 workspace $ws9
|
||||
bindcode $mod+19 workspace $ws10
|
||||
|
||||
# move focused container to workspace
|
||||
bindcode $mod+Shift+10 move container to workspace $ws1
|
||||
bindcode $mod+Shift+11 move container to workspace $ws2
|
||||
bindcode $mod+Shift+12 move container to workspace $ws3
|
||||
bindcode $mod+Shift+13 move container to workspace $ws4
|
||||
bindcode $mod+Shift+14 move container to workspace $ws5
|
||||
bindcode $mod+Shift+15 move container to workspace $ws6
|
||||
bindcode $mod+Shift+16 move container to workspace $ws7
|
||||
bindcode $mod+Shift+17 move container to workspace $ws8
|
||||
bindcode $mod+Shift+18 move container to workspace $ws9
|
||||
bindcode $mod+Shift+19 move container to workspace $ws10
|
||||
|
||||
# shortcut applications
|
||||
bindsym Print exec --no-startup-id gnome-screenshot
|
||||
bindcode $mod+9 exec swaylock --image ~/.wallpaper.jpg
|
||||
bindsym Ctrl+Shift+Space exec 1password --quick-access
|
||||
bindsym $mod+Space exec rofi-rbw --menu-keybindings ctrl+p:copy:password
|
||||
|
||||
# volume
|
||||
bindsym XF86AudioLowerVolume exec amixer -q sset Master 5%- unmute
|
||||
bindsym XF86AudioRaiseVolume exec amixer -q sset Master 5%+ unmute
|
||||
bindsym XF86AudioMute exec amixer -q sset Master toggle
|
||||
|
||||
# touchpad
|
||||
# bindsym XF86NotificationCenter exec swaymsg input type:touchpad events toggle enabled disabled
|
||||
|
||||
# set brightness logarithmically by factor 1.4
|
||||
# .72 is just slightly bigger than 1 / 1.4
|
||||
bindsym --locked XF86MonBrightnessUp exec light -S "$(light -G | awk '{ print int(($1 + .72) * 1.4) }')"
|
||||
bindsym --locked XF86MonBrightnessDown exec light -S "$(light -G | awk '{ print int($1 / 1.4) }')"
|
||||
|
||||
# reload the configuration file
|
||||
bindsym $mod+Shift+c reload
|
||||
|
||||
# restart i3 inplace
|
||||
bindsym $mod+Shift+r restart
|
||||
|
||||
# manage i3 session
|
||||
bindsym $mod+Shift+e exec swaynag --background f1fa8c --border ffb86c --border-bottom-size 0 --button-background ffb86c --button-text 282a36 -t warning -f "pango:Hack 9" -m "Do you really want to exit?" -B " Exit " "swaymsg exit" -B " Lock " "pkill swaynag && swaylock --image ~/.wallpaper.jpg" -B " Reboot " "pkill swaynag && reboot" -B " Shutdown " "pkill swaynag && shutdown -h now" -B " Suspend " "pkill swaynag && systemctl suspend"
|
||||
|
||||
# resize window
|
||||
bindsym $mod+r mode " "
|
||||
mode " " {
|
||||
# pressing left and up will shrink the window's width and height
|
||||
# pressing right and down will grow the window's width and height
|
||||
bindsym $left resize shrink width 10 px or 10 ppt
|
||||
bindsym $down resize grow height 10 px or 10 ppt
|
||||
bindsym $up resize shrink height 10 px or 10 ppt
|
||||
bindsym $right resize grow width 10 px or 10 ppt
|
||||
|
||||
# same bindings, but for the arrow keys
|
||||
bindsym Left resize shrink width 10 px or 10 ppt
|
||||
bindsym Down resize grow height 10 px or 10 ppt
|
||||
bindsym Up resize shrink height 10 px or 10 ppt
|
||||
bindsym Right resize grow width 10 px or 10 ppt
|
||||
|
||||
# back to normal: Enter or win+r
|
||||
bindsym Return mode "default"
|
||||
bindsym $mod+r mode "default"
|
||||
}
|
||||
|
||||
# set specific windows to floating mode
|
||||
for_window [window_role="app"] floating enable
|
||||
#for_window [window_role="pop-up"] floating enable
|
||||
for_window [window_role="task_dialog"] floating enable
|
||||
for_window [title="Preferences$"] floating enable
|
||||
for_window [class="Lightdm-gtk-greeter-settings"] floating enable
|
||||
for_window [class="Lxappearance"] floating enable
|
||||
for_window [class="Menu"] floating enable
|
||||
for_window [class="Nm-connection-editor"] floating enable
|
||||
for_window [class="Software-properties-gtk"] floating enable
|
||||
for_window [app_id="launcher"] floating enable
|
||||
|
||||
# set specific windows to tabbed mode
|
||||
#for_window [class="Signal"]tabbed
|
||||
|
||||
# assign program to workspace
|
||||
assign [title="terminal-sway"] → $ws1
|
||||
assign [app_id="foot" title="^(?!terminal-sway)$"] → $ws2
|
||||
assign [app_id="chromium"] → $ws3
|
||||
assign [app_id="firefox"] → $ws3
|
||||
assign [app_id="pcmanfm"] → $ws4
|
||||
assign [app_id="libreoffice-calc"] → $ws5
|
||||
assign [app_id="libreoffice-writer"] → $ws5
|
||||
assign [class="vlc"] → $ws6
|
||||
assign [class="Gimp"] → $ws7
|
||||
assign [class="Signal"] → $ws8
|
||||
assign [app_id="social"] → $ws8
|
||||
assign [app_id="thunderbird"] → $ws8
|
||||
assign [class="Lightdm-gtk-greeter-settings"] → $ws10
|
||||
assign [class="Software-properties-gtk"] → $ws10
|
||||
|
||||
# class border backgr. text indicator child_border
|
||||
client.focused #2b83a6 #2b83a6 #ffffff #dddddd #2b83a6
|
||||
client.focused_inactive #212121 #212121 #86888c #292d2e #5a5a5a
|
||||
client.unfocused #212121 #212121 #86888c #292d2e #5a5a5a
|
||||
client.urgent #d64e4e #d64e4e #ffffff #d64e4e #d64e4e
|
||||
client.placeholder #212121 #0c0c0c #ffffff #212121 #262626
|
||||
client.background #212121
|
||||
|
||||
bar {
|
||||
swaybar_command waybar
|
||||
}
|
||||
|
||||
# gaps
|
||||
smart_gaps on
|
||||
gaps inner 12
|
||||
gaps outer 0
|
||||
|
||||
# startup applications
|
||||
exec /run/wrappers/bin/gnome-keyring-daemon --start --daemonize
|
||||
exec dbus-sway-environment
|
||||
exec configure-gtk
|
||||
exec nm-applet --indicator
|
||||
exec foot -c /etc/xdg/foot/foot.ini -T terminal-sway
|
||||
exec signal-desktop
|
||||
exec firefox --name=social -P social
|
||||
exec thunderbird
|
||||
exec firefox
|
||||
exec nextcloud
|
||||
exec swayidle \
|
||||
before-sleep 'loginctl lock-session $XDG_SESSION_ID' \
|
||||
lock 'swaylock --image ~/.wallpaper.jpg' \
|
||||
timeout 180 'swaylock --screenshots --effect-blur 7x5' \
|
||||
timeout 1800 'systemctl suspend'
|
||||
exec dunst
|
||||
#exec --no-startup-id swaybg -c "#000000" -m fill -i ~/.config/wallpaper/wot.jpg
|
||||
# exec --no-startup-id gnome-keyring-daemon --start --components=pkcs11,secrets,ssh
|
||||
exec 'sleep 2; swaymsg workspace $ws8; swaymsg layout tabbed'
|
||||
|
||||
# wallpaper
|
||||
output eDP-1 bg ~/.wallpaper.jpg fill
|
||||
output DP-4 bg ~/.wallpaper.jpg fill
|
||||
output DP-5 bg ~/.wallpaper.jpg fill
|
||||
|
||||
input * xkb_layout "de"
|
||||
input * xkb_variant "colemak,,typewriter"
|
||||
input * xkb_options "grp:win_space_toggle"
|
||||
input "MANUFACTURER1 Keyboard" xkb_model "pc101"
|
||||
|
||||
# notebook
|
||||
set $laptop eDP-1
|
||||
# bindswitch lid:on output $laptop disable
|
||||
# bindswitch lid:off output $laptop enable
|
||||
|
||||
# A lock command used in several places
|
||||
set $lock_script swaylock --image ~/.wallpaper.jpg
|
||||
|
||||
# A sleep command used in several places.
|
||||
# We leave a bit of time for locking to happen before putting the system to sleep
|
||||
set $sleep $lock_script && sleep 3 && systemctl suspend
|
||||
|
||||
# Triggers a short notification
|
||||
set $notify dunstify --timeout 1500
|
||||
|
||||
# Set your laptop screen name
|
||||
set $laptop_screen 'eDP-1'
|
||||
|
||||
# Clamshell mode or lock & sleep
|
||||
# This is a if/else statement: [ outputs_count == 1 ] && true || false
|
||||
bindswitch --reload --locked lid:on exec '[ $(swaymsg -t get_outputs | grep name | wc -l) == 1 ] && ($sleep) || ($notify "Clamshell mode" "Laptop screen off" && swaymsg output $laptop_screen disable)'
|
||||
bindswitch --reload --locked lid:off output $laptop_screen enable
|
||||
|
||||
# disable xwayland
|
||||
#xwayland disable
|
||||
|
||||
# Touchpad
|
||||
input type:touchpad {
|
||||
tap enabled
|
||||
natural_scroll enabled
|
||||
}
|
||||
'';
|
||||
};
|
||||
}
|
||||
@@ -1,63 +0,0 @@
|
||||
{ config, pkgs, lib, ... }:
|
||||
{
|
||||
environment.systemPackages = with pkgs; [
|
||||
foot
|
||||
];
|
||||
|
||||
environment.etc = {
|
||||
"xdg/foot/foot.ini".text = ''
|
||||
[environment]
|
||||
|
||||
[bell]
|
||||
|
||||
[scrollback]
|
||||
|
||||
[url]
|
||||
|
||||
[cursor]
|
||||
|
||||
[mouse]
|
||||
|
||||
[colors]
|
||||
# alpha=1.0
|
||||
background=282a36
|
||||
foreground=f8f8f2
|
||||
|
||||
## Normal/regular colors (color palette 0-7)
|
||||
regular0=21222c # black
|
||||
regular1=ff5555 # red
|
||||
regular2=50fa7b # green
|
||||
regular3=f1fa8c # yellow
|
||||
regular4=bd93f9 # blue
|
||||
regular5=ff79c6 # magenta
|
||||
regular6=8be9fd # cyan
|
||||
regular7=f8f8f2 # white
|
||||
|
||||
## Bright colors (color palette 8-15)
|
||||
bright0=6272a4 # bright black
|
||||
bright1=ff6e6e # bright red
|
||||
bright2=69ff94 # bright green
|
||||
bright3=ffffa5 # bright yellow
|
||||
bright4=d6acff # bright blue
|
||||
bright5=ff92df # bright magenta
|
||||
bright6=a4ffff # bright cyan
|
||||
bright7=ffffff # bright white
|
||||
|
||||
selection-foreground=ffffff
|
||||
selection-background=44475a
|
||||
urls=8be9fd
|
||||
|
||||
[csd]
|
||||
|
||||
[key-bindings]
|
||||
|
||||
[search-bindings]
|
||||
|
||||
[url-bindings]
|
||||
|
||||
[text-bindings]
|
||||
|
||||
[mouse-bindings]
|
||||
'';
|
||||
};
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
{ pkgs, ... }:
|
||||
|
||||
let
|
||||
unstable = import (fetchTarball https://nixos.org/channels/nixos-unstable/nixexprs.tar.xz) {
|
||||
config = { allowUnfree = true; };
|
||||
};
|
||||
parsecDesktopItem = pkgs.makeDesktopItem {
|
||||
name = "parsec";
|
||||
desktopName = "Parsec Gaming";
|
||||
exec = "parsecd";
|
||||
};
|
||||
in {
|
||||
environment.systemPackages = with pkgs; [
|
||||
unstable.parsec-bin
|
||||
parsecDesktopItem
|
||||
];
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
|
||||
{ pkgs, ... }:
|
||||
|
||||
let
|
||||
signalWorkDesktopItem = pkgs.makeDesktopItem {
|
||||
name = "signal-work";
|
||||
desktopName = "Signal with work profile";
|
||||
icon = "signal-desktop";
|
||||
exec = "signal-desktop --user-data-dir=/home/dominik/.config/Signal-work -- %u";
|
||||
};
|
||||
in {
|
||||
environment.systemPackages = [
|
||||
pkgs.signal-desktop
|
||||
pkgs.signal-cli
|
||||
signalWorkDesktopItem
|
||||
];
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
|
||||
{ pkgs, ... }:
|
||||
|
||||
let
|
||||
socialDesktopItem = pkgs.makeDesktopItem {
|
||||
name = "social";
|
||||
desktopName = "Firefox browser with social profile";
|
||||
exec = "firefox -P social";
|
||||
};
|
||||
in {
|
||||
environment.systemPackages = [ socialDesktopItem ];
|
||||
}
|
||||
@@ -1,132 +0,0 @@
|
||||
{ config, pkgs, lib, ... }:
|
||||
|
||||
let
|
||||
dbus-sway-environment = pkgs.writeTextFile {
|
||||
name = "dbus-sway-environment";
|
||||
destination = "/bin/dbus-sway-environment";
|
||||
executable = true;
|
||||
|
||||
text = ''
|
||||
dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=sway
|
||||
systemctl --user stop pipewire pipewire-media-session xdg-desktop-portal xdg-desktop-portal-wlr
|
||||
systemctl --user start pipewire pipewire-media-session xdg-desktop-portal xdg-desktop-portal-wlr
|
||||
'';
|
||||
};
|
||||
|
||||
in {
|
||||
imports = [
|
||||
./config.nix
|
||||
./wofi-styles.nix
|
||||
./xdg-waybar-config.nix
|
||||
./foot.nix
|
||||
|
||||
./social.nix
|
||||
./signal-work.nix
|
||||
# ./thunderbird.nix
|
||||
./parsec.nix
|
||||
];
|
||||
|
||||
hardware.pulseaudio.enable = false;
|
||||
|
||||
services.xserver = {
|
||||
enable = true;
|
||||
excludePackages = [ pkgs.xterm ];
|
||||
displayManager.gdm.enable = true;
|
||||
displayManager.gdm.wayland = true;
|
||||
# displayManager.sddm.enable = true;
|
||||
displayManager.sessionPackages = [ pkgs.sway ];
|
||||
displayManager.defaultSession = "sway";
|
||||
libinput.enable = true;
|
||||
desktopManager.gnome = {
|
||||
enable = true;
|
||||
extraGSettingsOverrides = ''
|
||||
[org.gnome.desktop.interface]
|
||||
gtk-theme='Dracula'
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
services.teamviewer.enable = true;
|
||||
services.gnome.gnome-keyring.enable = true;
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
alsaUtils
|
||||
enlightenment.terminology
|
||||
bitwarden
|
||||
chromium
|
||||
cryptomator
|
||||
dbeaver
|
||||
dbus-sway-environment
|
||||
dracula-theme
|
||||
gcc
|
||||
git
|
||||
glib
|
||||
gimp
|
||||
gnome.seahorse
|
||||
gnome3.adwaita-icon-theme
|
||||
grim
|
||||
jmeter
|
||||
libreoffice
|
||||
mako
|
||||
networkmanagerapplet
|
||||
nextcloud-client
|
||||
obs-studio
|
||||
pavucontrol
|
||||
pcmanfm
|
||||
pinentry
|
||||
rbw
|
||||
rofi-rbw
|
||||
rustdesk
|
||||
slurp
|
||||
sway
|
||||
sway-launcher-desktop
|
||||
swayidle
|
||||
swaylock
|
||||
# thunderbird
|
||||
thunderbirdPackages.thunderbird-115
|
||||
tor-browser-bundle-bin
|
||||
unzip
|
||||
vlc
|
||||
waybar
|
||||
wayland
|
||||
wl-clipboard
|
||||
wofi
|
||||
wtype
|
||||
apache-directory-studio
|
||||
firefox
|
||||
];
|
||||
|
||||
# nixpkgs.config.permittedInsecurePackages = [
|
||||
# "qtwebkit-5.212.0-alpha4"
|
||||
# "electron-13.6.9"
|
||||
# ];
|
||||
# nixpkgs.config.allowBroken = true;
|
||||
|
||||
programs._1password-gui = {
|
||||
enable = true;
|
||||
polkitPolicyOwners = [ "dominik" ];
|
||||
};
|
||||
|
||||
programs.light.enable = true;
|
||||
|
||||
fonts.fonts = with pkgs; [
|
||||
noto-fonts
|
||||
noto-fonts-cjk
|
||||
noto-fonts-emoji
|
||||
nerdfonts
|
||||
];
|
||||
|
||||
security.rtkit.enable = true;
|
||||
services.pipewire = {
|
||||
enable = true;
|
||||
alsa.enable = true;
|
||||
alsa.support32Bit = true;
|
||||
pulse.enable = true;
|
||||
jack.enable = true;
|
||||
};
|
||||
|
||||
programs.sway = {
|
||||
enable = true;
|
||||
wrapperFeatures.gtk = true;
|
||||
};
|
||||
}
|
||||
@@ -1,39 +0,0 @@
|
||||
|
||||
{ pkgs, ... }:
|
||||
let
|
||||
thunderbirdWorkDesktopItem = pkgs.makeDesktopItem {
|
||||
name = "thunderbird-work";
|
||||
desktopName = "Thunderbird Work";
|
||||
icon = "thunderbird";
|
||||
exec = "thunderbird -P Work";
|
||||
};
|
||||
thunderbirdCloonarDesktopItem = pkgs.makeDesktopItem {
|
||||
name = "thunderbird-cloonar";
|
||||
desktopName = "Thunderbird Cloonar";
|
||||
icon = "thunderbird";
|
||||
exec = "thunderbird -P Cloonar";
|
||||
};
|
||||
in
|
||||
{
|
||||
|
||||
nixpkgs.overlays = [
|
||||
(self: super:
|
||||
{
|
||||
thunderbird-bin-unwrapped = super.thunderbird-bin-unwrapped.overrideAttrs ( old: rec {
|
||||
version = "112.0b7";
|
||||
name = "thunderbird-bin";
|
||||
src = super.fetchurl {
|
||||
url = "https://download-installer.cdn.mozilla.net/pub/thunderbird/releases/${version}/linux-x86_64/en-US/thunderbird-${version}.tar.bz2";
|
||||
sha256 = "30d23df34834096a79261439d5ea6d78d44921f0218893f100596ee6296cd806";
|
||||
};
|
||||
});
|
||||
}
|
||||
)
|
||||
];
|
||||
environment.systemPackages = [
|
||||
# (import ../../pkgs/thunderbird.nix)
|
||||
pkgs.thunderbird-bin-unwrapped
|
||||
thunderbirdWorkDesktopItem
|
||||
thunderbirdCloonarDesktopItem
|
||||
];
|
||||
}
|
||||
@@ -1,46 +0,0 @@
|
||||
{ config, pkgs, lib, ... }:
|
||||
{
|
||||
environment.etc = {
|
||||
"wofi/style.css".text = ''
|
||||
window {
|
||||
margin: 0px;
|
||||
border: 1px solid #bd93f9;
|
||||
background-color: #282a36;
|
||||
}
|
||||
|
||||
#input {
|
||||
margin: 5px;
|
||||
border: none;
|
||||
color: #f8f8f2;
|
||||
background-color: #44475a;
|
||||
}
|
||||
|
||||
#inner-box {
|
||||
margin: 5px;
|
||||
border: none;
|
||||
background-color: #282a36;
|
||||
}
|
||||
|
||||
#outer-box {
|
||||
margin: 5px;
|
||||
border: none;
|
||||
background-color: #282a36;
|
||||
}
|
||||
|
||||
#scroll {
|
||||
margin: 0px;
|
||||
border: none;
|
||||
}
|
||||
|
||||
#text {
|
||||
margin: 5px;
|
||||
border: none;
|
||||
color: #f8f8f2;
|
||||
}
|
||||
|
||||
#entry:selected {
|
||||
background-color: #44475a;
|
||||
}
|
||||
'';
|
||||
};
|
||||
}
|
||||
@@ -1,220 +0,0 @@
|
||||
{ config, pkgs, lib, ... }:
|
||||
{
|
||||
environment.etc = {
|
||||
"xdg/waybar/config".text = ''
|
||||
// -*- mode: json -*-
|
||||
|
||||
{
|
||||
"layer": "top",
|
||||
"position": "top",
|
||||
|
||||
"modules-left": [
|
||||
"sway/workspaces",
|
||||
"custom/right-arrow-dark"
|
||||
],
|
||||
"modules-center": [
|
||||
"custom/left-arrow-dark",
|
||||
"clock#1",
|
||||
"custom/left-arrow-light",
|
||||
"custom/left-arrow-dark",
|
||||
"clock#2",
|
||||
"custom/right-arrow-dark",
|
||||
"custom/right-arrow-light",
|
||||
"clock#3",
|
||||
"custom/right-arrow-dark"
|
||||
],
|
||||
"modules-right": [
|
||||
"custom/left-arrow-dark",
|
||||
"network",
|
||||
"custom/left-arrow-light",
|
||||
"custom/left-arrow-dark",
|
||||
"pulseaudio",
|
||||
"custom/left-arrow-light",
|
||||
"custom/left-arrow-dark",
|
||||
"memory",
|
||||
"custom/left-arrow-light",
|
||||
"custom/left-arrow-dark",
|
||||
"cpu",
|
||||
"custom/left-arrow-light",
|
||||
"custom/left-arrow-dark",
|
||||
"battery",
|
||||
"custom/left-arrow-light",
|
||||
"custom/left-arrow-dark",
|
||||
"disk",
|
||||
"custom/left-arrow-light",
|
||||
"custom/left-arrow-dark",
|
||||
"tray"
|
||||
],
|
||||
|
||||
"custom/left-arrow-dark": {
|
||||
"format": "",
|
||||
"tooltip": false
|
||||
},
|
||||
"custom/left-arrow-light": {
|
||||
"format": "",
|
||||
"tooltip": false
|
||||
},
|
||||
"custom/right-arrow-dark": {
|
||||
"format": "",
|
||||
"tooltip": false
|
||||
},
|
||||
"custom/right-arrow-light": {
|
||||
"format": "",
|
||||
"tooltip": false
|
||||
},
|
||||
|
||||
"sway/workspaces": {
|
||||
"disable-scroll": true,
|
||||
"format": "{name}"
|
||||
},
|
||||
|
||||
"clock#1": {
|
||||
"format": "{:%a}",
|
||||
"tooltip": false
|
||||
},
|
||||
"clock#2": {
|
||||
"format": "{:%H:%M}",
|
||||
"tooltip": false
|
||||
},
|
||||
"clock#3": {
|
||||
"format": "{:%d.%m}",
|
||||
"tooltip": false
|
||||
},
|
||||
|
||||
"pulseaudio": {
|
||||
"format": "{icon}{volume}%",
|
||||
"format-muted": "ﱝ",
|
||||
"format-icons": {
|
||||
"phone": ["奄", "奔", "墳"],
|
||||
"default": ["奄", "奔", "墳"]
|
||||
},
|
||||
"scroll-step": 5,
|
||||
"on-click": "pavucontrol",
|
||||
"tooltip": false
|
||||
},
|
||||
"network": {
|
||||
// "interface": "wlp2*", // (Optional) To force the use of this interface
|
||||
"format-wifi": "{essid} ({signalStrength}%) ",
|
||||
"format-ethernet": "{ipaddr}/{cidr} ",
|
||||
"tooltip-format": "{ifname} via {gwaddr} ",
|
||||
"format-linked": "{ifname} (No IP) ",
|
||||
"format-disconnected": "Disconnected ",
|
||||
"format-alt": "{ifname}: {ipaddr}/{cidr}"
|
||||
},
|
||||
"memory": {
|
||||
"interval": 5,
|
||||
"format": "{}%"
|
||||
},
|
||||
"cpu": {
|
||||
"interval": 5,
|
||||
"format": "{usage:2}%"
|
||||
},
|
||||
"battery": {
|
||||
"states": {
|
||||
"good": 95,
|
||||
"warning": 30,
|
||||
"critical": 15
|
||||
},
|
||||
"format": "{icon} {capacity}%",
|
||||
"format-icons": [
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
""
|
||||
]
|
||||
},
|
||||
"disk": {
|
||||
"interval": 5,
|
||||
"format": "{percentage_used:2}%",
|
||||
"path": "/home/"
|
||||
},
|
||||
"tray": {
|
||||
"icon-size": 20
|
||||
}
|
||||
}
|
||||
'';
|
||||
|
||||
"xdg/waybar/style.css".text = ''
|
||||
* {
|
||||
font-size: 20px;
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
window#waybar {
|
||||
background: #282a36;
|
||||
color: #f8f8f2;
|
||||
}
|
||||
|
||||
#custom-right-arrow-dark,
|
||||
#custom-left-arrow-dark {
|
||||
color: #252525;
|
||||
}
|
||||
#custom-right-arrow-light,
|
||||
#custom-left-arrow-light {
|
||||
color: #282a36;
|
||||
background: #252525;
|
||||
}
|
||||
|
||||
#workspaces,
|
||||
#clock.1,
|
||||
#clock.2,
|
||||
#clock.3,
|
||||
#network,
|
||||
#pulseaudio,
|
||||
#memory,
|
||||
#cpu,
|
||||
#battery,
|
||||
#disk,
|
||||
#tray {
|
||||
background: #252525;
|
||||
}
|
||||
|
||||
#workspaces button {
|
||||
padding: 0 2px;
|
||||
color: #f8f8f2;
|
||||
}
|
||||
#workspaces button.focused {
|
||||
color: #50fa7b;
|
||||
}
|
||||
#workspaces button:hover {
|
||||
box-shadow: inherit;
|
||||
text-shadow: inherit;
|
||||
}
|
||||
#workspaces button:hover {
|
||||
background: #252525;
|
||||
border: #252525;
|
||||
padding: 0 3px;
|
||||
}
|
||||
|
||||
#network {
|
||||
color: #8be9fd;
|
||||
}
|
||||
#pulseaudio {
|
||||
color: #6272a4;
|
||||
}
|
||||
#memory {
|
||||
color: #f8f8f2;
|
||||
}
|
||||
#cpu {
|
||||
color: #bd93f9;
|
||||
}
|
||||
#battery {
|
||||
color: #f1fa8c;
|
||||
}
|
||||
#disk {
|
||||
color: #ffb86c;
|
||||
}
|
||||
|
||||
#clock,
|
||||
#network,
|
||||
#pulseaudio,
|
||||
#memory,
|
||||
#cpu,
|
||||
#battery,
|
||||
#disk {
|
||||
padding: 0 10px;
|
||||
}
|
||||
'';
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user