├── .config ├── alacritty │ └── alacritty.yml ├── fish │ └── config.fish ├── gh │ ├── config.yml │ └── hosts.yml ├── macchina │ ├── macchina.toml │ └── themes │ │ └── Lithium.toml ├── nvim │ ├── .gitignore │ ├── init.lua │ ├── lazy-lock.json │ └── lua │ │ └── nexxel │ │ ├── core │ │ ├── init.lua │ │ ├── keymap.lua │ │ └── options.lua │ │ ├── lazy.lua │ │ └── plugins │ │ ├── autopairs.lua │ │ ├── cmp.lua │ │ ├── colorscheme.lua │ │ ├── comment.lua │ │ ├── dressing.lua │ │ ├── flash.lua │ │ ├── lsp │ │ ├── lspconfig.lua │ │ └── mason.lua │ │ ├── lualine.lua │ │ ├── telescope.lua │ │ └── treesitter.lua ├── skhd │ └── skhdrc ├── starship.toml └── yabai │ └── yabairc ├── .gitconfig ├── .tmux.conf ├── Library └── Application Support │ └── Code - Insiders │ └── User │ ├── keybindings.json │ └── settings.json ├── README.md └── images └── screenshot.png /.config/alacritty/alacritty.yml: -------------------------------------------------------------------------------- 1 | env: 2 | TERM: xterm-256color 3 | 4 | font: 5 | size: 14 6 | normal: 7 | family: "Hack Nerd Font" 8 | style: Regular 9 | bold: 10 | style: Bold 11 | talic: 12 | style: Italic 13 | bold_italic: 14 | style: Bold Italic 15 | 16 | window: 17 | option_as_alt: Both 18 | # Window padding (changes require restart) 19 | # 20 | # Blank space added around the window in pixels. This padding is not scaled by 21 | # DPI and the specified value is always added at both opposing sides. 22 | padding: 23 | x: 12 24 | y: 12 25 | 26 | # Spread additional padding evenly around the terminal content. 27 | dynamic_padding: false 28 | 29 | # Window decorations 30 | decorations: buttonless 31 | # 32 | # Startup Mode (changes require restart) 33 | # 34 | # Values for `startup_mode`: 35 | # - Windowed 36 | # - Maximized 37 | # - Fullscreen 38 | # 39 | # Values for `startup_mode` (macOS only): 40 | # - SimpleFullscreen 41 | startup_mode: Windowed 42 | 43 | # Background opacity 44 | opacity: 1 45 | 46 | # Colors (Mellow) 47 | colors: 48 | # Default colors 49 | primary: 50 | background: "#161617" 51 | foreground: "#c9c7cd" 52 | 53 | # Cursor colors 54 | cursor: 55 | text: "#c9c7cd" 56 | cursor: "#757581" 57 | 58 | # Normal colors 59 | normal: 60 | black: "#27272a" 61 | red: "#f5a191" 62 | green: "#90b99f" 63 | yellow: "#e6b99d" 64 | blue: "#aca1cf" 65 | magenta: "#e29eca" 66 | cyan: "#ea83a5" 67 | white: "#c1c0d4" 68 | 69 | # Bright colors 70 | bright: 71 | black: "#353539" 72 | red: "#ffae9f" 73 | green: "#9dc6ac" 74 | yellow: "#f0c5a9" 75 | blue: "#b9aeda" 76 | magenta: "#ecaad6" 77 | cyan: "#f591b2" 78 | white: "#cac9dd" 79 | -------------------------------------------------------------------------------- /.config/fish/config.fish: -------------------------------------------------------------------------------- 1 | fish_vi_key_bindings 2 | 3 | 4 | 5 | if status is-interactive 6 | # Commands to run in interactive sessions can go here 7 | end 8 | 9 | set -gx PNPM_HOME "/Users/nxl/Library/pnpm" 10 | if not contains $PNPM_HOME $PATH 11 | set -gx PATH $PNPM_HOME $PATH 12 | end 13 | 14 | 15 | alias g=git 16 | alias fishrc="nvim ~/.config/fish/config.fish" 17 | alias reload="source ~/.config/fish/config.fish" 18 | alias c="open $1 -a \"Cursor\"" 19 | alias pn=pnpm 20 | alias ll="exa -l -g --git" 21 | alias llt="exa -1 --git --tree --git-ignore" 22 | alias e="nvim" 23 | alias py="python3" 24 | alias aocd="cd /Users/nxl/Code/aoc/" 25 | alias aoc="aot; aos" 26 | alias aot="aocd; echo -e '\033[94m'; python3 main.py < test.txt; echo -e '\033[0m'" 27 | alias aos="aocd; python3 main.py < in.txt" 28 | alias ds="caffeinate -d" 29 | alias fds="git add -A && git commit -m 'fastcommit' && git push" 30 | alias fetch="macchina" 31 | 32 | # opam configuration 33 | source /Users/nxl/.opam/opam-init/init.fish > /dev/null 2> /dev/null; or true 34 | 35 | zoxide init fish | source 36 | 37 | set -q GHCUP_INSTALL_BASE_PREFIX[1]; or set GHCUP_INSTALL_BASE_PREFIX $HOME ; set -gx PATH $HOME/.cabal/bin $PATH /Users/nxl/.ghcup/bin # ghcup-env 38 | 39 | # bun 40 | set --export BUN_INSTALL "$HOME/.bun" 41 | set --export PATH $BUN_INSTALL/bin $PATH 42 | 43 | fish_add_path /Users/nxl/.spicetify 44 | direnv hook fish | source 45 | 46 | -------------------------------------------------------------------------------- /.config/gh/config.yml: -------------------------------------------------------------------------------- 1 | # What protocol to use when performing git operations. Supported values: ssh, https 2 | git_protocol: https 3 | # What editor gh should run when creating issues, pull requests, etc. If blank, will refer to environment. 4 | editor: 5 | # When to interactively prompt. This is a global config that cannot be overridden by hostname. Supported values: enabled, disabled 6 | prompt: enabled 7 | # A pager program to send command output to, e.g. "less". Set the value to "cat" to disable the pager. 8 | pager: 9 | # Aliases allow you to create nicknames for gh commands 10 | aliases: 11 | co: pr checkout 12 | # The path to a unix socket through which send HTTP connections. If blank, HTTP traffic will be handled by net/http.DefaultTransport. 13 | http_unix_socket: 14 | # What web browser gh should use when opening URLs. If blank, will refer to environment. 15 | browser: 16 | version: "1" 17 | -------------------------------------------------------------------------------- /.config/gh/hosts.yml: -------------------------------------------------------------------------------- 1 | github.com: 2 | user: nexxeln 3 | git_protocol: ssh 4 | users: 5 | nexxeln: 6 | -------------------------------------------------------------------------------- /.config/macchina/macchina.toml: -------------------------------------------------------------------------------- 1 | theme = "Lithium" 2 | show = ["Host", "Kernel", "Distribution", "Packages", "Terminal", "Shell", "Uptime", "Processor", "Memory", "Battery"] 3 | -------------------------------------------------------------------------------- /.config/macchina/themes/Lithium.toml: -------------------------------------------------------------------------------- 1 | # Lithium 2 | 3 | spacing = 1 4 | padding = 0 5 | hide_ascii = true 6 | separator = " " 7 | key_color = "Yellow" 8 | separator_color = "Yellow" 9 | 10 | [palette] 11 | type = "Light" 12 | glyph = " ● " 13 | visible = true 14 | 15 | [bar] 16 | glyph = "●" 17 | symbol_open = '(' 18 | symbol_close = ')' 19 | visible = false 20 | hide_delimiters = true 21 | 22 | [box] 23 | title = " " 24 | border = "plain" 25 | visible = false 26 | 27 | [box.inner_margin] 28 | x = 2 29 | y = 1 30 | 31 | [custom_ascii] 32 | color = "Yellow" 33 | 34 | [randomize] 35 | key_color = false 36 | separator_color = false 37 | pool = "base" 38 | 39 | [keys] 40 | host = "Host" 41 | kernel = "Kernel" 42 | battery = "Battery" 43 | os = "OS" 44 | de = "DE" 45 | wm = "WM" 46 | distro = "Distro" 47 | terminal = "Terminal" 48 | shell = "Shell" 49 | packages = "Packages" 50 | uptime = "Uptime" 51 | memory = "Memory" 52 | machine = "Machine" 53 | local_ip = "IP" 54 | backlight = "Brightness" 55 | resolution = "Resolution" 56 | cpu_load = "CPU Load" 57 | cpu = "CPU" 58 | gpu = "GPU" 59 | disk_space = "Disk Space" 60 | -------------------------------------------------------------------------------- /.config/nvim/.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled Lua sources 2 | luac.out 3 | 4 | 5 | # luarocks build files 6 | *.src.rock 7 | *.zip 8 | *.tar.gz 9 | 10 | # Object files 11 | *.o 12 | *.os 13 | *.ko 14 | *.obj 15 | *.elf 16 | 17 | # Precompiled Headers 18 | *.gch 19 | *.pch 20 | 21 | # Libraries 22 | *.lib 23 | *.a 24 | *.la 25 | *.lo 26 | *.def 27 | *.exp 28 | 29 | # Shared objects (inc. Windows DLLs) 30 | *.dll 31 | *.so 32 | *.so.* 33 | *.dylib 34 | 35 | # Executables 36 | *.exe 37 | *.out 38 | *.app 39 | *.i*86 40 | *.x86_64 41 | *.hex 42 | -------------------------------------------------------------------------------- /.config/nvim/init.lua: -------------------------------------------------------------------------------- 1 | require("nexxel.core") 2 | require("nexxel.lazy") 3 | -------------------------------------------------------------------------------- /.config/nvim/lazy-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "Comment.nvim": { "branch": "master", "commit": "0236521ea582747b58869cb72f70ccfa967d2e89" }, 3 | "LuaSnip": { "branch": "master", "commit": "1f4ad8bb72bdeb60975e98652636b991a9b7475d" }, 4 | "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" }, 5 | "cmp-nvim-lsp": { "branch": "main", "commit": "44b16d11215dce86f253ce0c30949813c0a90765" }, 6 | "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" }, 7 | "cmp_luasnip": { "branch": "master", "commit": "05a9ab28b53f71d1aece421ef32fee2cb857a843" }, 8 | "dressing.nvim": { "branch": "master", "commit": "fe3071330a0720ce3695ac915820c8134b22d1b0" }, 9 | "flash.nvim": { "branch": "main", "commit": "48817af25f51c0590653bbc290866e4890fe1cbe" }, 10 | "friendly-snippets": { "branch": "main", "commit": "43727c2ff84240e55d4069ec3e6158d74cb534b6" }, 11 | "kanagawa.nvim": { "branch": "master", "commit": "f491b0fe68fffbece7030181073dfe51f45cda81" }, 12 | "lazy.nvim": { "branch": "main", "commit": "96584866b9c5e998cbae300594d0ccfd0c464627" }, 13 | "lualine.nvim": { "branch": "master", "commit": "2248ef254d0a1488a72041cfb45ca9caada6d994" }, 14 | "mason-lspconfig.nvim": { "branch": "main", "commit": "faeb361507aa1ef1b0e5645781e2aa0d36a4aa84" }, 15 | "mason.nvim": { "branch": "main", "commit": "41e75af1f578e55ba050c863587cffde3556ffa6" }, 16 | "nvim-autopairs": { "branch": "master", "commit": "0f04d78619cce9a5af4f355968040f7d675854a1" }, 17 | "nvim-cmp": { "branch": "main", "commit": "0b751f6beef40fd47375eaf53d3057e0bfa317e4" }, 18 | "nvim-lspconfig": { "branch": "master", "commit": "48347089666d5b77d054088aa72e4e0b58026e6e" }, 19 | "nvim-treesitter": { "branch": "master", "commit": "557561fbc17269cdd4e9e88ef0ca1a9ff0bbf7e6" }, 20 | "nvim-treesitter-textobjects": { "branch": "master", "commit": "dbcd9388e3b119a87c785e10a00d62876077d23d" }, 21 | "plenary.nvim": { "branch": "master", "commit": "50012918b2fc8357b87cff2a7f7f0446e47da174" }, 22 | "telescope.nvim": { "branch": "0.1.x", "commit": "7011eaae0ac1afe036e30c95cf80200b8dc3f21a" } 23 | } -------------------------------------------------------------------------------- /.config/nvim/lua/nexxel/core/init.lua: -------------------------------------------------------------------------------- 1 | require("nexxel.core.options") 2 | require("nexxel.core.keymap") 3 | -------------------------------------------------------------------------------- /.config/nvim/lua/nexxel/core/keymap.lua: -------------------------------------------------------------------------------- 1 | local map = vim.keymap.set 2 | 3 | vim.g.mapleader = " " 4 | 5 | map("v", "J", ":m '>+1gv=gv") 6 | map("v", "K", ":m '<-2gv=gv") 7 | map("n", "", "zz") 8 | map("n", "", "zz") 9 | map("n", "J", "mzJ`z") 10 | map("n", "n", "nzzzv") 11 | map("n", "N", "Nzzzv") 12 | map("n", "n", "nohlsearch") 13 | map("n", "", function() 14 | vim.cmd("so") 15 | end) 16 | -------------------------------------------------------------------------------- /.config/nvim/lua/nexxel/core/options.lua: -------------------------------------------------------------------------------- 1 | local opt = vim.opt 2 | 3 | -- 2 spaces for each indentation 4 | opt.shiftwidth = 4 5 | -- insert 2 spaces for tab while editing 6 | opt.tabstop = 4 7 | opt.softtabstop = 4 8 | opt.timeoutlen = 1000 -- time to wait for a mapped sequence to complete in milliseconds 9 | opt.completeopt = "menuone,noselect" -- for autocomplete which we'll be doing in the future 10 | opt.splitbelow = true -- force all horizontal splits to go below current window 11 | opt.splitright = true -- force all vertical splits to go to the right of current window 12 | opt.termguicolors = true -- enable 2 bit RGB colors, most modern terminal emulators support this 13 | opt.autoindent = true -- auto indent when using `o` or `O` 14 | opt.smartindent = true -- smart indenting 15 | opt.wrap = false -- wrap lines 16 | opt.cmdheight = 2 -- height of command bar 17 | opt.fileencoding = "utf-8" -- encoding of files 18 | opt.mouse = "a" -- enable mouse in all modes, for more options see :help 'mouse' 19 | opt.ignorecase = true -- ignore case while searching 20 | opt.smartcase = true -- ovveride ignore case if search pattern contains upper case characters 21 | opt.number = false -- numbered lines 22 | -- opt.relativenumber = true -- relative line numbers 23 | opt.numberwidth = 4 -- number column width 24 | opt.pumheight = 10 -- height of pop up menu 25 | opt.scrolloff = 8 -- minimium number of lines above and below the cursor 26 | opt.sidescrolloff = 8 -- minimum number of columns on the left and right of the cursor 27 | opt.whichwrap:append("b,s,<,>,[,],h,l") -- see :help 'whichwrap' 28 | opt.shortmess:append("c") -- see :help 'shortmess' 29 | opt.showmode = false -- won't show the mode in the command bar 30 | opt.clipboard = "unnamedplus" -- sync clipboard with system clipboard 31 | opt.swapfile = false -- creates a swap file 32 | opt.cursorline = true -- highlights the current line 33 | opt.conceallevel = 0 -- to show text normally 34 | opt.signcolumn = "yes" -- always show the sign column 35 | opt.undofile = true -- persistent undo 36 | opt.expandtab = false -- use tabs 37 | opt.guicursor = "n-v-c-i:block" -- cursor style in different modes, see :help 'guicursor' 38 | -------------------------------------------------------------------------------- /.config/nvim/lua/nexxel/lazy.lua: -------------------------------------------------------------------------------- 1 | local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" 2 | if not vim.loop.fs_stat(lazypath) then 3 | vim.fn.system({ 4 | "git", 5 | "clone", 6 | "--filter=blob:none", 7 | "https://github.com/folke/lazy.nvim.git", 8 | "--branch=stable", -- latest stable release 9 | lazypath, 10 | }) 11 | end 12 | vim.opt.rtp:prepend(lazypath) 13 | 14 | require("lazy").setup({ 15 | { import = "nexxel.plugins" }, 16 | { import = "nexxel.plugins.lsp" } 17 | }, 18 | { 19 | install = { 20 | colorscheme = { "solarized-osaka" } 21 | }, 22 | change_detection = { 23 | notify = false 24 | } 25 | } 26 | ) 27 | -------------------------------------------------------------------------------- /.config/nvim/lua/nexxel/plugins/autopairs.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "windwp/nvim-autopairs", 3 | event = "InsertEnter", 4 | config = function () 5 | local npairs = require("nvim-autopairs") 6 | local Rule = require("nvim-autopairs.rule") 7 | 8 | npairs.setup({ 9 | check_ts = true, 10 | ts_config = { 11 | lua = { "string" }, 12 | japascript = { "template_string" }, 13 | java = false 14 | }, 15 | enable_check_bracket_line = false 16 | }) 17 | 18 | local ts_conds = require("nvim-autopairs.ts-conds") 19 | 20 | -- press % => %% only while inside a comment or string 21 | npairs.add_rules({ 22 | Rule("%", "%", "lua") 23 | :with_pair(ts_conds.is_ts_node({ "string", "comment" })), 24 | Rule("$", "$", "lua") 25 | :with_pair(ts_conds.is_not_ts_node({ "function" })) 26 | }) 27 | end 28 | } 29 | -------------------------------------------------------------------------------- /.config/nvim/lua/nexxel/plugins/cmp.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "hrsh7th/nvim-cmp", 3 | event = "InsertEnter", 4 | dependencies = { 5 | "hrsh7th/cmp-buffer", -- source for text in buffer 6 | "hrsh7th/cmp-path", -- source for file system paths 7 | "L3MON4D3/LuaSnip", -- snippet engine 8 | "saadparwaiz1/cmp_luasnip", -- for autocompletion 9 | "rafamadriz/friendly-snippets", -- useful snippets 10 | }, 11 | config = function() 12 | local cmp = require("cmp") 13 | 14 | local luasnip = require("luasnip") 15 | 16 | -- loads vscode style snippets from installed plugins (e.g. friendly-snippets) 17 | require("luasnip.loaders.from_vscode").lazy_load() 18 | 19 | cmp.setup({ 20 | completion = { 21 | completeopt = "menu,menuone,preview,noselect", 22 | }, 23 | snippet = { -- configure how nvim-cmp interacts with snippet engine 24 | expand = function(args) 25 | luasnip.lsp_expand(args.body) 26 | end, 27 | }, 28 | mapping = cmp.mapping.preset.insert({ 29 | [""] = cmp.mapping.select_prev_item(), -- previous suggestion 30 | [""] = cmp.mapping.select_next_item(), -- next suggestion 31 | [""] = cmp.mapping.scroll_docs(-4), 32 | [""] = cmp.mapping.scroll_docs(4), 33 | [""] = cmp.mapping.complete(), -- show completion suggestions 34 | [""] = cmp.mapping.abort(), -- close completion window 35 | [""] = cmp.mapping.confirm({ select = false }), 36 | }), 37 | -- sources for autocompletion 38 | sources = cmp.config.sources({ 39 | { name = "nvim_lsp" }, 40 | { name = "buffer" }, -- text within current buffer 41 | { name = "luasnip" }, -- snippets 42 | { name = "path" }, -- file system paths 43 | }), 44 | }) 45 | end, 46 | } 47 | -------------------------------------------------------------------------------- /.config/nvim/lua/nexxel/plugins/colorscheme.lua: -------------------------------------------------------------------------------- 1 | return { 2 | -- { 3 | -- "bluz71/vim-nightfly-guicolors", 4 | -- priority = 1000, 5 | -- config = function() 6 | -- vim.g.nightflyTransparent = true 7 | -- vim.cmd.colorscheme("nightfly") 8 | -- end, 9 | -- } 10 | { 11 | "rebelot/kanagawa.nvim", 12 | priority = 1000, 13 | config = function() 14 | vim.cmd.colorscheme("kanagawa-dragon") 15 | end, 16 | } 17 | -- { 18 | -- "craftzdog/solarized-osaka.nvim", 19 | -- lazy = false, 20 | -- priority = 1000, 21 | -- opts = {}, 22 | -- config = function () 23 | -- require("solarized-osaka").setup({ 24 | -- transparent = true 25 | -- }) 26 | -- vim.cmd[[colorscheme solarized-osaka]] 27 | -- end 28 | -- 29 | -- } 30 | } 31 | -------------------------------------------------------------------------------- /.config/nvim/lua/nexxel/plugins/comment.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "numToStr/Comment.nvim", 3 | event = { "BufReadPre", "BufNewFile" }, 4 | config = true 5 | } 6 | -------------------------------------------------------------------------------- /.config/nvim/lua/nexxel/plugins/dressing.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "stevearc/dressing.nvim", 3 | event = "VeryLazy" 4 | } 5 | -------------------------------------------------------------------------------- /.config/nvim/lua/nexxel/plugins/flash.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "folke/flash.nvim", 3 | event = "VeryLazy", 4 | opts = {}, 5 | -- stylua: ignore 6 | keys = { 7 | { "s", mode = { "n", "x", "o" }, function() require("flash").jump() end, desc = "Flash" }, 8 | { "S", mode = { "n", "x", "o" }, function() require("flash").treesitter() end, desc = "Flash Treesitter" }, 9 | { "r", mode = "o", function() require("flash").remote() end, desc = "Remote Flash" }, 10 | { "R", mode = { "o", "x" }, function() require("flash").treesitter_search() end, desc = "Treesitter Search" }, 11 | { "", mode = { "c" }, function() require("flash").toggle() end, desc = "Toggle Flash Search" }, 12 | }, 13 | } 14 | -------------------------------------------------------------------------------- /.config/nvim/lua/nexxel/plugins/lsp/lspconfig.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "neovim/nvim-lspconfig", 3 | dependencies = { 4 | "hrsh7th/cmp-nvim-lsp" 5 | }, 6 | config = function() 7 | local lspconfig = require("lspconfig") 8 | local cmp_nvim_lsp = require("cmp_nvim_lsp") 9 | 10 | local keymap = vim.keymap 11 | 12 | local opts = { noremap = true, silent = true } 13 | 14 | local on_attach = function(client, bufnr) 15 | opts.buffer = bufnr 16 | 17 | -- set keybinds 18 | opts.desc = "Show LSP references" 19 | keymap.set("n", "gR", "Telescope lsp_references", opts) -- show definition, references 20 | 21 | opts.desc = "Go to declaration" 22 | keymap.set("n", "gD", vim.lsp.buf.declaration, opts) -- go to declaration 23 | 24 | opts.desc = "Show LSP definitions" 25 | keymap.set("n", "gd", "Telescope lsp_definitions", opts) -- show lsp definitions 26 | 27 | opts.desc = "Show LSP implementations" 28 | keymap.set("n", "gi", "Telescope lsp_implementations", opts) -- show lsp implementations 29 | 30 | opts.desc = "Show LSP type definitions" 31 | keymap.set("n", "gt", "Telescope lsp_type_definitions", opts) -- show lsp type definitions 32 | 33 | opts.desc = "See available code actions" 34 | keymap.set({ "n", "v" }, "ca", vim.lsp.buf.code_action, opts) -- see available code actions, in visual mode will apply to selection 35 | 36 | opts.desc = "Smart rename" 37 | keymap.set("n", "gr", vim.lsp.buf.rename, opts) -- smart rename 38 | 39 | opts.desc = "Show buffer diagnostics" 40 | keymap.set("n", "D", "Telescope diagnostics bufnr=0", opts) -- show diagnostics for file 41 | 42 | opts.desc = "Show line diagnostics" 43 | keymap.set("n", "d", vim.diagnostic.open_float, opts) -- show diagnostics for line 44 | 45 | opts.desc = "Go to previous diagnostic" 46 | keymap.set("n", "[d", vim.diagnostic.goto_prev, opts) -- jump to previous diagnostic in buffer 47 | 48 | opts.desc = "Go to next diagnostic" 49 | keymap.set("n", "]d", vim.diagnostic.goto_next, opts) -- jump to next diagnostic in buffer 50 | 51 | opts.desc = "Show documentation for what is under cursor" 52 | keymap.set("n", "K", vim.lsp.buf.hover, opts) -- show documentation for what is under cursor 53 | end 54 | 55 | local capabilities = cmp_nvim_lsp.default_capabilities() 56 | 57 | lspconfig["html"].setup({ 58 | capabilities = capabilities, 59 | on_attach = on_attach, 60 | }) 61 | 62 | -- configure typescript server with plugin 63 | lspconfig["tsserver"].setup({ 64 | capabilities = capabilities, 65 | on_attach = on_attach, 66 | }) 67 | 68 | -- configure css server 69 | lspconfig["cssls"].setup({ 70 | capabilities = capabilities, 71 | on_attach = on_attach, 72 | }) 73 | 74 | -- configure tailwindcss server 75 | lspconfig["tailwindcss"].setup({ 76 | capabilities = capabilities, 77 | on_attach = on_attach, 78 | }) 79 | 80 | 81 | lspconfig["prismals"].setup({ 82 | capabilities = capabilities, 83 | on_attach = on_attach, 84 | }) 85 | 86 | lspconfig["emmet_ls"].setup({ 87 | capabilities = capabilities, 88 | on_attach = on_attach, 89 | filetypes = { "html", "typescriptreact", "javascriptreact", "css", "sass", "scss", "less", "svelte" }, 90 | }) 91 | 92 | lspconfig["pyright"].setup({ 93 | capabilities = capabilities, 94 | on_attach = on_attach, 95 | }) 96 | 97 | lspconfig["lua_ls"].setup({ 98 | capabilities = capabilities, 99 | on_attach = on_attach, 100 | settings = { -- custom settings for lua 101 | Lua = { 102 | -- make the language server recognize "vim" global 103 | diagnostics = { 104 | globals = { "vim" }, 105 | }, 106 | workspace = { 107 | -- make language server aware of runtime files 108 | library = { 109 | [vim.fn.expand("$VIMRUNTIME/lua")] = true, 110 | [vim.fn.stdpath("config") .. "/lua"] = true, 111 | }, 112 | }, 113 | }, 114 | }, 115 | }) 116 | 117 | lspconfig["clangd"].setup({ 118 | capabilities = capabilities, 119 | on_attach = on_attach 120 | }) 121 | 122 | end 123 | } 124 | -------------------------------------------------------------------------------- /.config/nvim/lua/nexxel/plugins/lsp/mason.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "williamboman/mason.nvim", 3 | dependencies = { 4 | "williamboman/mason-lspconfig.nvim", 5 | }, 6 | config = function() 7 | local mason = require("mason") 8 | local mason_lspconfig = require("mason-lspconfig") 9 | 10 | mason.setup({ 11 | ui = { 12 | icons = { 13 | package_installed = "✓", 14 | package_pending = "➜", 15 | package_uninstalled = "✗" 16 | } 17 | } 18 | }) 19 | 20 | mason_lspconfig.setup({ 21 | ensure_installed = { 22 | "tsserver", 23 | "astro", 24 | "html", 25 | "cssls", 26 | "tailwindcss", 27 | "lua_ls", 28 | "emmet_ls", 29 | "prismals", 30 | "pyright", 31 | "clangd" 32 | }, 33 | automatic_installation = true 34 | }) 35 | end 36 | } 37 | -------------------------------------------------------------------------------- /.config/nvim/lua/nexxel/plugins/lualine.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "nvim-lualine/lualine.nvim", 3 | config = function () 4 | require("lualine").setup({ 5 | options = { 6 | theme = "solarized_dark" 7 | } 8 | }) 9 | end 10 | } 11 | -------------------------------------------------------------------------------- /.config/nvim/lua/nexxel/plugins/telescope.lua: -------------------------------------------------------------------------------- 1 | return { 2 | "nvim-telescope/telescope.nvim", 3 | branch = "0.1.x", 4 | dependencies = { 5 | "nvim-lua/plenary.nvim", 6 | -- { "nvim-telescope/telescope-fzf-native.nvim", build = "make" }, 7 | }, 8 | config = function() 9 | local telescope = require("telescope") 10 | local actions = require("telescope.actions") 11 | 12 | telescope.setup({ 13 | defaults = { 14 | path_display = { "truncate " }, 15 | mappings = { 16 | i = { 17 | [""] = actions.move_selection_previous, -- move to prev result 18 | [""] = actions.move_selection_next, -- move to next result 19 | [""] = actions.send_selected_to_qflist + actions.open_qflist, 20 | }, 21 | }, 22 | }, 23 | }) 24 | 25 | -- telescope.load_extension("fzf") 26 | 27 | -- set keymaps 28 | local keymap = vim.keymap -- for conciseness 29 | 30 | keymap.set("n", "ff", "Telescope find_files", { desc = "Fuzzy find files in cwd" }) 31 | keymap.set("n", "fr", "Telescope oldfiles", { desc = "Fuzzy find recent files" }) 32 | keymap.set("n", "fg", "Telescope live_grep", { desc = "Find string in cwd" }) 33 | end, 34 | } 35 | -------------------------------------------------------------------------------- /.config/nvim/lua/nexxel/plugins/treesitter.lua: -------------------------------------------------------------------------------- 1 | return { 2 | { 3 | "nvim-treesitter/nvim-treesitter", 4 | event = { "BufReadPre", "BufNewFile" }, 5 | build = ":TSUpdate", 6 | dependencies = { 7 | "nvim-treesitter/nvim-treesitter-textobjects", 8 | }, 9 | config = function () 10 | local treesitter = require("nvim-treesitter.configs") 11 | 12 | treesitter.setup({ 13 | highlight = { 14 | enable = true 15 | }, 16 | indent = { 17 | enable = true 18 | }, 19 | autotag = { 20 | enable = true 21 | }, 22 | ensure_installed = { 23 | "c", 24 | "cpp", 25 | "astro", 26 | "json", 27 | "javascript", 28 | "typescript", 29 | "tsx", 30 | "yaml", 31 | "html", 32 | "css", 33 | "prisma", 34 | "markdown", 35 | "markdown_inline", 36 | "svelte", 37 | "graphql", 38 | "bash", 39 | "lua", 40 | "vim", 41 | "dockerfile", 42 | "gitignore", 43 | "query", 44 | }, 45 | incremental_selection = { 46 | enable = true, 47 | keymaps = { 48 | init_selection = "", 49 | node_incremental = "", 50 | scope_incremental = false, 51 | node_decremental = "" 52 | } 53 | }, 54 | context_commentstring = { 55 | enable = true, 56 | enable_autocmd = false 57 | } 58 | }) 59 | end 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /.config/skhd/skhdrc: -------------------------------------------------------------------------------- 1 | # start and stop 2 | ctrl + alt - q : yabai --stop-service 3 | ctrl + alt - s : yabai --start-service 4 | 5 | # changing window focus 6 | alt - s : yabai -m window --focus south 7 | alt - w : yabai -m window --focus north 8 | alt - a : yabai -m window --focus west 9 | alt - d : yabai -m window --focus east 10 | 11 | # rotate layout clockwise 12 | shift + alt - c : yabai -m space --rotate 270 13 | 14 | # rotate layout anti-clockwise 15 | shift + alt - a : yabai -m space --rotate 270 16 | 17 | # flip alone x-axis 18 | shift + alt - x : yabai -m space -- mirror x-axis 19 | 20 | # flip along y-axis 21 | shift + alt - y : yabai -m space --mirror y-axis 22 | 23 | # toggle window float 24 | shift + alt - t : yabai -m window --toggle float --grid 4:4:1:1:2:2 25 | 26 | # maximize a window 27 | shift + alt - m : yabai -m window --toggle zoom-fullscreen 28 | 29 | # reset window size 30 | shift + alt - e : yabai -m space --balance 31 | 32 | # swap windows 33 | shift + alt - h : yabai -m window --swap west 34 | shift + alt - j : yabai -m window --swap south 35 | shift + alt - k : yabai -m window --swap north 36 | shift + alt - l : yabai -m window --swap east 37 | 38 | # move window and split 39 | ctrl + alt - h : yabai -m window --warp west 40 | ctrl + alt - j : yabai -m window --warp south 41 | ctrl + alt - k : yabai -m window --warp north 42 | ctrl + alt - l : yabai -m window --warp east 43 | -------------------------------------------------------------------------------- /.config/starship.toml: -------------------------------------------------------------------------------- 1 | format = """ 2 | $username\ 3 | $hostname\ 4 | $directory\ 5 | $git_branch\ 6 | $git_state\ 7 | $git_status\ 8 | $cmd_duration\ 9 | $line_break\ 10 | $python\ 11 | $character""" 12 | 13 | [directory] 14 | style = "blue" 15 | 16 | [character] 17 | success_symbol = "[❯](purple)" 18 | error_symbol = "[❯](red)" 19 | vimcmd_symbol = "[❮](green)" 20 | 21 | [git_branch] 22 | format = "[$branch]($style)" 23 | style = "bright-black" 24 | 25 | [git_status] 26 | format = "[[(*$conflicted$untracked$modified$staged$renamed$deleted)](218) ($ahead_behind$stashed)]($style)" 27 | style = "cyan" 28 | conflicted = "​" 29 | untracked = "​" 30 | modified = "​" 31 | staged = "​" 32 | renamed = "​" 33 | deleted = "​" 34 | stashed = "≡" 35 | 36 | [git_state] 37 | format = '\([$state( $progress_current/$progress_total)]($style)\) ' 38 | style = "bright-black" 39 | 40 | [cmd_duration] 41 | format = "[$duration]($style) " 42 | style = "yellow" 43 | 44 | [python] 45 | format = "[$virtualenv]($style) " 46 | style = "bright-black" 47 | -------------------------------------------------------------------------------- /.config/yabai/yabairc: -------------------------------------------------------------------------------- 1 | # bsp, stack or float 2 | yabai -m config layout bsp 3 | 4 | yabai -m config window_placement second_child 5 | 6 | # padding 7 | yabai -m config window_gap 12 8 | yabai -m config top_padding 4 9 | yabai -m config bottom_padding 4 10 | yabai -m config right_padding 4 11 | yabai -m config left_padding 4 12 | 13 | # mouse settings 14 | yabai -m config mouse_follows_focus on 15 | yabai -m config mouse_modifier alt 16 | # left click and drag 17 | yabai -m config mouse_action1 move 18 | # right click and drag 19 | yabai -m config mouse_action2 resize 20 | yabai -m config mouse_drop_action swap 21 | 22 | # float system preferences. Most of these just diable Yabai form resizing them. 23 | yabai -m rule --add app="^System Preferences$" sticky=on layer=above manage=off 24 | yabai -m rule --add app="^Karabiner-Elements$" sticky=on layer=above manage=off 25 | yabai -m rule --add app="^Karabiner-EventViewer$" sticky=on layer=above manage=off 26 | yabai -m rule --add app="^Finder$" sticky=on layer=above manage=off 27 | yabai -m rule --add app="^Disk Utility$" sticky=on layer=above manage=off 28 | yabai -m rule --add app="^System Information$" sticky=on layer=above manage=off 29 | yabai -m rule --add app="^Activity Monitor$" sticky=on layer=above manage=off 30 | yabai -m rule --add app="^Path Finder$" manage=off 31 | yabai -m rule --add app="^TeamViewer$" sticky=off layer=above manage=off 32 | yabai -m rule --add app="Fantastical" manage=off 33 | yabai -m rule --add app="^Spotify$" manage=off 34 | yabai -m rule --add app="^Mail$" manage=off 35 | yabai -m rule --add app="^Discord$" manage=off 36 | yabai -m rule --add app="^Photo Booth$" manage=off 37 | yabai -m rule --add app="^Preview$" manage=off 38 | yabai -m rule --add app="^Calculator$" manage=off 39 | yabai -m rule --add app="^qBittorent" manage=off 40 | yabai -m rule --add app="^System Settings$" manage=off 41 | yabai -m rule --add app="^Postman$" manage=off 42 | yabai -m rule --add app="^Transparent-Note$" manage=off 43 | yabai -m rule --add app="Transparent-Note" manage=off 44 | yabai -m rule --add app="^Flux$" manage=off 45 | yabai -m rule --add app="^Time Out$" manage=off 46 | yabai -m rule --add app="^perl_client_app$" manage=off 47 | yabai -m rule --add app="^console$" manage=off 48 | yabai -m rule --add app="^Harvest$" manage=off 49 | yabai -m rule --add app="^CiscoSparkHelper$" manage=off 50 | yabai -m rule --add app="^Logi Options$" manage=off 51 | yabai -m rule --add app="^Cisco Webex Start$" manage=off 52 | yabai -m rule --add app="^Private Internet Access$" manage=off 53 | -------------------------------------------------------------------------------- /.gitconfig: -------------------------------------------------------------------------------- 1 | [user] 2 | email = shoubhit2005@gmail.com 3 | name = Shoubhit Dash 4 | [credential "https://github.com"] 5 | helper = 6 | helper = !/opt/homebrew/bin/gh auth git-credential 7 | [credential "https://gist.github.com"] 8 | helper = 9 | helper = !/opt/homebrew/bin/gh auth git-credential 10 | [init] 11 | defaultBranch = main 12 | [core] 13 | editor = "nvim" 14 | [alias] 15 | d = "diff" 16 | co = "checkout" 17 | cm = "commit" 18 | st = "status" 19 | a = "add" 20 | hist = log --pretty=format:\"%Cgreen%h %Creset%cd %Cblue[%cn] %Creset%s%C(yellow)%d%C(reset)\" --graph --date=relative --decorate --all 21 | llog = log --graph --name-status --pretty=format:\"%C(red)%h %C(reset)(%cd) %C(green)%an %Creset%s %C(yellow)%d%Creset\" --date=relative 22 | ps = "!git push origin $(git rev-parse --abbrev-ref HEAD)" 23 | pl = "!git pull origin $(git rev-parse --abbrev-ref HEAD)" 24 | open = "!gh browse" 25 | -------------------------------------------------------------------------------- /.tmux.conf: -------------------------------------------------------------------------------- 1 | unbind C-b 2 | set -g prefix ";" 3 | 4 | unbind r 5 | bind r source-file ~/.tmux.conf \; display "Reloaded ~/.tmux.conf" 6 | 7 | set -g mouse on 8 | set-option -g mouse on 9 | set-option -sg escape-time 10 10 | set-option -g focus-events on 11 | 12 | set -sg terminal-overrides ",*:RGB" 13 | 14 | set -g history-limit 100000 15 | 16 | unbind n # DEFAULT KEY: Move to next window 17 | unbind w # DEFAULT KEY: change current window interactively 18 | 19 | bind n command-prompt "rename-window '%%'" 20 | bind w new-window -c "#{pane_current_path}" 21 | 22 | set -g base-index 1 23 | set-window-option -g pane-base-index 1 24 | 25 | set-window-option -g mode-keys vi 26 | 27 | # theme 28 | set -g pane-border-style fg='#757581' 29 | set -g pane-active-border-style fg='#e29eca' 30 | set -g message-style bg='#252525',fg='#ea83a5' 31 | set -g status-style bg='#252525',fg='#aca1cf' 32 | set -g status-interval 1 33 | set -g status-right '#[fg=#8be9fd,bg=#252525] #(tmux-mem-cpu-load -g 5 --interval 2) ' 34 | set -ga status-right '#[fg=#ff79c6,bg=#252525] #(uptime | cut -f 4-5 -d " " | cut -f 1 -d ",") ' 35 | set -ga status-right '#[fg=#bd93f9,bg=#252525] %a %H:%M:%S' 36 | 37 | ### copy & paste ------------------------------------------------------- 38 | # Use vim keybindings in copy mode 39 | setw -g mode-keys vi 40 | # Setup 'v' to begin selection as in Vim 41 | bind-key -T copy-mode-vi v send -X begin-selection 42 | bind-key -T copy-mode-vi y send -X copy-pipe-and-cancel "reattach-to-user-namespace pbcopy" 43 | # Update default binding of `Enter` to also use copy-pipe 44 | unbind -T copy-mode-vi Enter 45 | bind-key -T copy-mode-vi Enter send -X copy-pipe-and-cancel "reattach-to-user-namespace pbcopy" 46 | -------------------------------------------------------------------------------- /Library/Application Support/Code - Insiders/User/keybindings.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "command": "expand_region", 4 | "key": "ctrl+=", 5 | "when": "editorTextFocus" 6 | }, 7 | { 8 | "command": "undo_expand_region", 9 | "key": "ctrl+-", 10 | "when": "editorTextFocus && editorHasSelection" 11 | }, 12 | { 13 | "command": "workbench.action.toggleSidebarVisibility", 14 | "key": "ctrl+e" 15 | }, 16 | { 17 | "command": "explorer.newFile", 18 | "key": "a", 19 | "when": "filesExplorerFocus && !inputFocus" 20 | }, 21 | { 22 | "command": "renameFile", 23 | "key": "r", 24 | "when": "filesExplorerFocus && !inputFocus" 25 | }, 26 | { 27 | "command": "cutfile", 28 | "key": "x", 29 | "when": "filesExplorerFocus && !inputFocus" 30 | }, 31 | { 32 | "command": "deleteFile", 33 | "key": "d", 34 | "when": "filesExplorerFocus && !inputFocus" 35 | }, 36 | { 37 | "key": "ctrl+e", 38 | "command": "workbench.explorer.fileView.focus" 39 | } 40 | ] 41 | -------------------------------------------------------------------------------- /Library/Application Support/Code - Insiders/User/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | // vscode meta stuff 3 | "workbench.startupEditor": "none", 4 | "editor.accessibilitySupport": "off", 5 | 6 | // text editing stuff 7 | "editor.formatOnSave": true, 8 | "editor.defaultFormatter": "esbenp.prettier-vscode", 9 | "editor.linkedEditing": true, 10 | "editor.inlineSuggest.enabled": true, 11 | "editor.unicodeHighlight.nonBasicASCII": false, 12 | 13 | // ui stuff 14 | // font 15 | "editor.fontFamily": "Dank Mono", 16 | "editor.fontSize": 16, 17 | "editor.lineHeight": 1.42857, // makes font size 14 have line height of ~20px 18 | "apc.font.family": "Geist Mono", // apply font to ALL the UI, requires APC extension 19 | 20 | // cursor 21 | "editor.cursorBlinking": "smooth", // smol cursor animation, looks nice 22 | "editor.cursorSmoothCaretAnimation": "on", // move cursor smoothly 23 | 24 | // window 25 | // title bar 26 | "window.title": "${dirty}${rootName}${separator}${activeEditorShort}", 27 | "vim.leader": "", 28 | "vim.normalModeKeyBindings": [ 29 | { 30 | "before": [""], 31 | "commands": ["editor.action.marker.next"] 32 | }, 33 | { 34 | "before": [""], 35 | "commands": ["editor.action.marker.prev"] 36 | }, 37 | { 38 | "after": ["g", "g", "V", "G"], 39 | "before": [""] 40 | }, 41 | { 42 | "before": ["K"], 43 | "commands": ["editor.action.showHover"] 44 | }, 45 | { 46 | "before": ["leader", "q"], 47 | "commands": ["editor.action.quickFix"] 48 | }, 49 | { 50 | "before": ["leader", "s"], 51 | "commands": ["bennycode.sort-everything.sortFile"] 52 | }, 53 | { 54 | "before": ["leader", "f"], 55 | "commands": ["workbench.action.quickOpen"] 56 | } 57 | ], 58 | 59 | // top bar 60 | "workbench.editor.showTabs": false, // hide tabs 61 | "breadcrumbs.enabled": false, // hides breadcrumb path at top of window 62 | "window.commandCenter": false, // hides command center at the top of the window. Use cmd+shift+p instead 63 | "workbench.layoutControl.enabled": false, // hides those little squares on the top right of the window 64 | "workbench.editor.editorActionsLocation": "hidden", // hides the "format" and ellipsis buttons on the top right of the window 65 | 66 | // minimap 67 | "editor.minimap.renderCharacters": false, // make minimap blockish (low level of detail) 68 | "editor.hideCursorInOverviewRuler": true, // don't highlight current line in scrollbar 69 | "editor.minimap.autohide": true, // shows minimap only on hover 70 | 71 | // sidebar 72 | "workbench.activityBar.location": "hidden", // hide sidebar icons, use cmd+b to toggle open 73 | "workbench.sideBar.location": "right", // puts sidebar on the right, less disruptive (doesn't shift code if text wrap is disabled) when opening with cmd+b 74 | 75 | // bottom bar 76 | "workbench.statusBar.visible": false, // hide bottom bar 77 | 78 | // editor 79 | "editor.stickyScroll.enabled": true, // keep block name fixed at top when scrolling 80 | "gitlens.mode.active": "zen", // toggle with command palette, zen mode hides gitlens stuff for when you don't need it 81 | "editor.wordWrap": "on", // wrap text instead of scrolling horizontally 82 | 83 | // Theme 84 | "workbench.iconTheme": "chalice-icon-theme", 85 | "workbench.colorTheme": "Vesper", 86 | // Overrides vesper theme start 87 | "workbench.colorCustomizations": { 88 | "editorGutter.addedBackground": "#A0A0A0", 89 | "editorGutter.deletedBackground": "#A0A0A0", 90 | "editorGutter.modifiedBackground": "#A0A0A0" 91 | }, 92 | "editor.tokenColorCustomizations": { 93 | "textMateRules": [ 94 | // remove peppermint flavor 95 | { 96 | "name": "String, Symbols, Inherited Class", 97 | "scope": [ 98 | "string", 99 | "constant.other.symbol", 100 | "constant.other.key", 101 | "meta.group.braces.curly constant.other.object.key.js string.unquoted.label.js" 102 | ], 103 | "settings": { 104 | "foreground": "#A0A0A0" 105 | } 106 | }, 107 | { 108 | "name": "CSS ID's", 109 | "scope": [ 110 | "source.sass keyword.control", 111 | "meta.attribute-selector.scss" 112 | ], 113 | "settings": { 114 | "foreground": "#ffffff" 115 | } 116 | }, 117 | { 118 | "name": "Inserted", 119 | "scope": ["markup.inserted"], 120 | "settings": { 121 | "foreground": "#ffffff" 122 | } 123 | } 124 | ] 125 | }, 126 | // Overrides vesper theme end 127 | 128 | // git stuff 129 | "git.openRepositoryInParentFolders": "always", 130 | "git.autofetch": true, 131 | "git.confirmNoVerifyCommit": false, 132 | "git.confirmSync": false, 133 | "git.ignoreMissingGitWarning": true, 134 | "gitlens.gitCommands.skipConfirmations": [ 135 | "fetch:command", 136 | "stash-push:command", 137 | "switch:command", 138 | "push:command" 139 | ], 140 | "gitlens.hovers.currentLine.over": "line", 141 | 142 | // js tooling stuff 143 | "typescript.preferences.importModuleSpecifier": "non-relative", // prefer aliases when importing 144 | "eslint.options": { 145 | "extensions": [".js", ".jsx", ".mdx", ".ts", ".tsx"] 146 | }, 147 | "eslint.validate": [ 148 | "mdx", 149 | "javascript", 150 | "javascriptreact", 151 | "typescript", 152 | "typescriptreact" 153 | ], 154 | "tailwindCSS.experimental.classRegex": [ 155 | // enables tailwind autocomplete for specified functions 156 | ["cva\\(([^)]*)\\)", "[\"'`]([^\"'`]*).*?[\"'`]"], 157 | ["cn\\(([^)]*)\\)", "[\"'`]([^\"'`]*).*?[\"'`]"], 158 | ["cx\\(([^)]*)\\)", "[\"'`]([^\"'`]*).*?[\"'`]"] 159 | ], 160 | "[c]": { 161 | "editor.defaultFormatter": "ms-vscode.cpptools" 162 | }, 163 | "git.enableSmartCommit": true 164 | } 165 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | hi these are my dotfiles 2 | 3 | ![screenshot](./images/screenshot.png) 4 | 5 | - macos 6 | - alacritty 7 | - starship 8 | - yabai 9 | - nvim 10 | - vscode 11 | -------------------------------------------------------------------------------- /images/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nexxeln/dots/76883fbe6201d9ae07153e7a8588473fc0596b33/images/screenshot.png --------------------------------------------------------------------------------