reorganize packages

This commit is contained in:
Tomas Mirchev 2025-10-20 18:29:59 +03:00
parent ec50d3f12f
commit 05bdb4abdc
35 changed files with 84 additions and 296 deletions

3
TODO.md Normal file
View File

@ -0,0 +1,3 @@
alacritty,borders,ghostty,htop,karabiner,linearmouse,nvim,sol,wezterm
- fix nvim in terminal nvim exit sequences

View File

@ -1,8 +0,0 @@
return {
cmd = { "vscode-json-language-server", "--stdio" },
filetypes = { "json", "jsonc" },
init_options = {
provideFormatter = true,
},
root_markers = { ".git" },
}

View File

@ -1,40 +0,0 @@
live_config_reload = true
[env]
TERM = "xterm-256color"
[font]
normal = { family = "SF Mono", style = "Regular" }
size = 12
offset = { x = 0, y = 0 }
[window]
decorations_theme_variant = "Dark"
padding = { x = 4, y = 0 }
dynamic_padding = false
resize_increments = true
[keyboard]
bindings = [
# Create new window
{ action = "SpawnNewInstance", key = "N", mods = "Command" },
# Jump back one word
{ key = "Left", mods = "Alt", chars = "\u001bb" },
# Jump forward one word
{ key = "Right", mods = "Alt", chars = "\u001bf" },
# Move to start of line
{ key = "Left", mods = "Command", chars = "\u0001" },
# Move to end of line
{ key = "Right", mods = "Command", chars = "\u0005" },
# Delete backwards
{ key = "Back", mods = "Alt", chars = "\u001B\u007F" }, # word
{ key = "Back", mods = "Command", chars = "\u0015" }, # line
# Delete forwards
{ key = "Delete", mods = "Alt", chars = "\u001Bd" }, # word
{ key = "Delete", mods = "Command", chars = "\u000B" } # line
]
[scrolling]
multiplier = 1

View File

@ -1,16 +0,0 @@
font=monospace:size=10
pad=4x0
[key-bindings]
# scrollback-up-page=Shift+Page_Up Shift+KP_Page_Up
# scrollback-up-half-page=none
# scrollback-up-line=none
# scrollback-down-page=Shift+Page_Down Shift+KP_Page_Down
# scrollback-down-half-page=none
# scrollback-down-line=none
# scrollback-home=none
# scrollback-end=none
clipboard-copy=Control+c XF86Copy
clipboard-paste=Control+v XF86Paste
[text-bindings]
\x03=Mod4+c

View File

@ -1,161 +0,0 @@
-- Helper function for key mappings
local function map(mode, lhs, rhs, opts)
local options = { silent = true, noremap = true }
if opts then
options = vim.tbl_extend("force", options, opts)
end
if type(mode) == "table" then
for _, m in ipairs(mode) do
vim.keymap.set(m, lhs, rhs, options)
end
else
vim.keymap.set(mode, lhs, rhs, options)
end
end
-- Mode-specific mapping functions
local function nmap(lhs, rhs, opts) map("n", lhs, rhs, opts) end
local function imap(lhs, rhs, opts) map("i", lhs, rhs, opts) end
local function vmap(lhs, rhs, opts) map("v", lhs, rhs, opts) end
local function tmap(lhs, rhs, opts) map("t", lhs, rhs, opts) end
vim.opt.signcolumn = "no"
-- Map Leader
vim.g.mapleader = " "
vim.g.maplocalleader = " "
-- Use Nerd Font
vim.g.have_nerd_font = true
-- Add vertical line
-- vim.opt.colorcolumn = "100"
-- Enable TrueColor
vim.opt.termguicolors = true
-- Disable Neovim background
vim.api.nvim_set_hl(0, "Normal", { bg = "none" })
vim.api.nvim_set_hl(0, "NormalFloat", { bg = "none" })
-- Scroll lines/columns
vim.opt.mousescroll = "hor:1,ver:1"
-- Set indentation preferences
vim.opt.expandtab = true -- Convert tabs to spaces
vim.opt.shiftwidth = 2 -- Number of spaces for auto-indent
vim.opt.tabstop = 2 -- Number of spaces a tab counts for
vim.opt.softtabstop = 2 -- Number of spaces a tab counts for when editing
vim.opt.autoindent = true -- Copy indent from current line when starting new line
vim.opt.smartindent = true -- Do smart autoindenting when starting a new line
-- Disable line wrapping
vim.opt.wrap = false
-- Enable break indent
vim.opt.breakindent = true
-- Make line numbers default
vim.opt.number = true
vim.opt.relativenumber = true
-- Enable mouse mode, can be useful for resizing splits for example
vim.opt.mouse = "a"
-- Full path on status line
vim.opt.statusline = "%F%m%r%h%w%=%l,%c %P"
-- Sync clipboard between OS and Neovim
vim.schedule(function()
vim.opt.clipboard = "unnamedplus"
end)
-- Save undo history
vim.opt.undofile = true
-- Case-insensitive searching UNLESS \C or one or more capital letters in the search term
vim.opt.ignorecase = true
vim.opt.smartcase = true
-- Decrease update time
vim.opt.updatetime = 250
-- Decrease mapped sequence wait time
-- Displays which-key popup sooner
vim.opt.timeoutlen = 300
-- Configure how new splits should be opened
vim.opt.splitright = true
vim.opt.splitbelow = true
-- Sets how neovim will display certain whitespace characters in the editor.
vim.opt.list = true
vim.opt.listchars = { tab = "» ", trail = "·", nbsp = "␣" }
-- Preview substitutions live, as you type
vim.opt.inccommand = "split"
-- Show which line your cursor is on
vim.opt.cursorline = true
-- Minimal number of screen lines to keep above and below the cursor
vim.opt.scrolloff = 10
-- Highlight when yanking (copying) text
vim.api.nvim_create_autocmd("TextYankPost", {
callback = function()
vim.highlight.on_yank()
end,
})
-- Keymaps
nmap("<leader>q", vim.diagnostic.setloclist, { desc = "Open diagnostic [Q]uickfix list" })
imap("jk", "<Esc>", { desc = "Exit insert mode with jk" })
nmap("<Esc>", "<cmd>nohlsearch<CR>", { desc = "Clear highlights" })
-- Prevent "x" from overriding the register
nmap("x", '"_x')
-- Window Navigation
nmap("<C-h>", "<C-w>h", { desc = "Move focus to the left window" })
nmap("<C-l>", "<C-w>l", { desc = "Move focus to the right window" })
nmap("<C-j>", "<C-w>j", { desc = "Move focus to the lower window" })
nmap("<C-k>", "<C-w>k", { desc = "Move focus to the upper window" })
-- Tab management
nmap("<Leader>tn", ":tabnew<CR>", { desc = "[T]ab [N]ew" })
nmap("<Leader>tc", ":tabclose<CR>", { desc = "[T]ab [C]lose" })
nmap("<Leader>to", ":tabonly<CR>", { desc = "[T]ab [O]nly" })
nmap("<Leader>tl", ":tabnext<CR>", { desc = "[T]ab Next" })
nmap("<Leader>th", ":tabprevious<CR>", { desc = "[T]ab Previous" })
nmap("<Leader>tm.", ":tabmove +1<CR>", { desc = "[T]ab [M]ove Right" })
nmap("<Leader>tm,", ":tabmove -1<CR>", { desc = "[T]ab [M]ove Left" })
for i = 1, 9 do
nmap(string.format("<Leader>%d", i), string.format("%dgt", i), { desc = string.format("[T]ab %d", i) })
end
-- Buffer Management
nmap("<Leader>bl", ":ls<CR>", { desc = "[B]uffer [L]ist" })
nmap("<Leader>bd", ":bdelete<CR>", { desc = "[B]uffer [D]elete" })
nmap("]b", ":bnext<CR>", { desc = "[B]uffer [N]ext" })
nmap("[b", ":bprevious<CR>", { desc = "[B]uffer [P]revious" })
nmap("<Leader>bb", ":b<Space>", { desc = "[B]uffer Select" })
nmap("<Leader>bo", ":bufdo bd|1bd<CR>", { desc = "[B]uffer Delete Others" })
-- Terminal
nmap("<Leader>tet", function()
vim.cmd("terminal")
vim.cmd("startinsert")
end, { desc = "[T]erminal" })
nmap("<leader>ter", function()
local buf_dir = vim.fn.expand("%:p:h")
vim.cmd("edit term://" .. buf_dir .. "//zsh")
vim.cmd("startinsert")
end, { desc = "[T]erminal [R]elative" })
tmap("<Esc>", "<C-\\><C-n>", { desc = "Terminal Normal Mode" })
tmap("jk", "<C-\\><C-n>", { desc = "Terminal Normal Mode" })
tmap("<C-w>", "<C-\\><C-n><C-w>", { desc = "Terminal Window Command" })

View File

@ -0,0 +1,6 @@
return {
cmd = { 'vscode-json-language-server', '--stdio' },
filetypes = { 'json', 'jsonc' },
init_options = { provideFormatter = true },
root_markers = { '.git' },
}

View File

@ -10,7 +10,7 @@ import shutil
DOTFILES_DIR = Path(__file__).parent DOTFILES_DIR = Path(__file__).parent
SETUPS_DIR = DOTFILES_DIR / "setups" SETUPS_DIR = DOTFILES_DIR / "setups"
CONFIG_DIR = DOTFILES_DIR / "config" CONFIG_DIR = DOTFILES_DIR / "config"
CONFIG_PATH = DOTFILES_DIR / "config.json" CONFIG_PATH = DOTFILES_DIR / "manifest.json"
def load_config(): def load_config():
if not CONFIG_PATH.exists(): if not CONFIG_PATH.exists():

View File

@ -1,23 +1,22 @@
{ {
"template": { "template": {
"htop": {
"link": {
"from": "shared/htop",
"to": "~/.config/htop"
}
},
"bin": { "bin": {
"link": { "link": {
"from": "shared/bin", "from": "shared/bin",
"to": "~/bin" "to": "~/bin"
} }
}, },
"nvim": { "htop": {
"link": { "link": {
"from": "shared/nvim", "from": "shared/htop",
"to": "~/.config/nvim/init.lua" "to": "~/.config/htop"
}
}, },
"post-link": "(grep -q 'alias vim=nvim' ~/.zshrc || echo 'alias vim=nvim' >> ~/.zshrc) || true" "git": {
"link": {
"from": "shared/git",
"to": "~/.gitconfig"
}
}, },
"zsh": { "zsh": {
"link": { "link": {
@ -31,51 +30,25 @@
"to": "~/.tmux.conf" "to": "~/.tmux.conf"
} }
}, },
"git": { "nvim": {
"link": { "link": {
"from": "shared/git", "from": "shared/nvim",
"to": "~/.gitconfig" "to": "~/.config/nvim"
}
},
"wezterm": {
"link": {
"from": "shared/wezterm",
"to": "~/.wezterm.lua"
}
},
"alacritty": {
"link": {
"from": "shared/alacritty",
"to": "~/.alacritty.toml"
}
},
"ghostty": {
"link": {
"from": "shared/ghostty",
"to": "~/.config/ghostty"
} }
} }
}, },
"environments": { "environments": {
"macos": [ "macos": [
"git",
"zsh", "zsh",
"tmux",
"nvim",
"bin",
{ {
"package": "bin", "package": "bin",
"link": { "link": {
"from": "macos/bin", "from": "macos/bin",
"to": "~/bin" "to": "~/.local/bin"
}
},
"tmux",
"nvim",
"git",
"ghostty",
"alacritty",
{
"package": "karabiner",
"link": {
"from": "macos/karabiner",
"to": "~/.config/karabiner"
} }
}, },
{ {
@ -88,9 +61,46 @@
{ {
"package": "rectangle", "package": "rectangle",
"link-comment": "Needs manual import from config/macos/linearmouse" "link-comment": "Needs manual import from config/macos/linearmouse"
},
{
"package": "wezterm",
"link": {
"from": "macos/wezterm",
"to": "~/.config/wezterm"
}
},
{
"package": "alacritty",
"link": {
"from": "macos/alacritty",
"to": "~/.config/alacritty"
}
},
{
"package": "ghostty",
"link": {
"from": "macos/ghostty",
"to": "~/.config/ghostty"
}
} }
], ],
"linux-vm": [ "linux-vm": [
"bin",
{
"package": "bin",
"link": {
"from": "linux-vm/bin",
"to": "~/.local/bin"
}
},
{
"package": "htop",
"install": "sudo apt install -y htop"
},
{
"package": "git",
"install": "sudo apt install -y git"
},
{ {
"package": "zsh", "package": "zsh",
"install": "sudo apt install -y zsh", "install": "sudo apt install -y zsh",
@ -98,48 +108,42 @@
}, },
{ {
"package": "tmux", "package": "tmux",
"link": {
"from": "linux-vm/tmux",
"to": "~/.tmux.conf"
},
"install": "sudo apt install -y tmux" "install": "sudo apt install -y tmux"
}, },
{ {
"package": "nvim", "package": "nvim",
"install": "bash -c 'wget -O nvim.deb https://gitea.tomastm.com/tomas.mirchev/neovim/releases/download/v0.10.0/nvim-linux-$(dpkg --print-architecture).deb && sudo dpkg -i nvim.deb && rm nvim.deb'" "post-install": "echo 'Neovim needs setup'"
}, }
],
"container": [
"bin",
{ {
"package": "git", "package": "bin",
"install": "sudo apt install -y git" "link": {
"from": "container/bin",
"to": "~/.local/bin"
}
}, },
{ {
"package": "htop", "package": "htop",
"install": "sudo apt install -y htop" "install": "sudo apt install -y htop"
}, },
"bin" {
], "package": "git",
"linux-dev": [ "install": "sudo apt install -y git"
},
{ {
"package": "zsh", "package": "zsh",
"install": "sudo apt install -y zsh", "install": "sudo apt install -y zsh",
"post-link": "./scripts/linux-setup_zsh.sh" "post-link": "./scripts/linux-setup_zsh.sh"
}, },
{
"package": "tmux",
"install": "sudo apt install -y tmux"
},
{ {
"package": "nvim", "package": "nvim",
"ignore-template": true, "post-install": "echo 'Neovim needs setup'"
"link": {
"from": "linux-dev/nvim",
"to": "~/.config/nvim"
},
"post-link": "nvim --headless '+Lazy! restore' +qa"
},
{
"package": "git",
"install": "sudo apt install -y git"
},
{
"package": "htop",
"install": "sudo apt install -y htop"
} }
] ]
} }