diff --git a/dotfiles/.config/nvim/.neoconf.json b/dotfiles/.config/nvim/.neoconf.json new file mode 100644 index 0000000..7c48087 --- /dev/null +++ b/dotfiles/.config/nvim/.neoconf.json @@ -0,0 +1,15 @@ +{ + "neodev": { + "library": { + "enabled": true, + "plugins": true + } + }, + "neoconf": { + "plugins": { + "lua_ls": { + "enabled": true + } + } + } +} diff --git a/dotfiles/.config/nvim/LICENSE b/dotfiles/.config/nvim/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/dotfiles/.config/nvim/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/dotfiles/.config/nvim/README.md b/dotfiles/.config/nvim/README.md new file mode 100644 index 0000000..1375d9d --- /dev/null +++ b/dotfiles/.config/nvim/README.md @@ -0,0 +1,18 @@ +# ๐Ÿ’ค LazyVim + +A starter template for [LazyVim](https://github.com/LazyVim/LazyVim). +Refer to the [documentation](https://lazyvim.github.io/installation) to get started. + +## Plugins + +- Markdown support: using Markdown-priview.nvim ## Fix Markdown Code-box display +- Clipboard support: using nvim-osc52 +- Git UI support: using lazygit.nvim +- Dashboard support: using snacks.nvim + +## Keymaps + +- Add Ctrl+W to quit buffer; +- Add Ctrl+Tab to switch buffer; +- Add Ctrl+Shift+5 to start a new terminal; +- Add Ctrl+/h/j/k/l to switch between terminals; diff --git a/dotfiles/.config/nvim/init.lua b/dotfiles/.config/nvim/init.lua new file mode 100644 index 0000000..bb0d29c --- /dev/null +++ b/dotfiles/.config/nvim/init.lua @@ -0,0 +1,9 @@ +-- bootstrap lazy.nvim, LazyVim and your plugins +require("config.lazy") + +vim.api.nvim_create_autocmd("FileType", { + pattern = "markdown", + callback = function() + vim.opt_local.conceallevel = 0 + end, +}) diff --git a/dotfiles/.config/nvim/lazy-lock.json b/dotfiles/.config/nvim/lazy-lock.json new file mode 100644 index 0000000..3445ef1 --- /dev/null +++ b/dotfiles/.config/nvim/lazy-lock.json @@ -0,0 +1,46 @@ +{ + "LazyVim": { "branch": "main", "commit": "25abbf546d564dc484cf903804661ba12de45507" }, + "SchemaStore.nvim": { "branch": "main", "commit": "a9ba109549de51e3b4594d39a1c07f14b9d0cfa5" }, + "blink.cmp": { "branch": "main", "commit": "022521a8910a5543b0251b21c9e1a1e989745796" }, + "bufferline.nvim": { "branch": "main", "commit": "655133c3b4c3e5e05ec549b9f8cc2894ac6f51b3" }, + "catppuccin": { "branch": "main", "commit": "56a9dfd1e05868cf3189369aad87242941396563" }, + "clangd_extensions.nvim": { "branch": "main", "commit": "db28f29be928d18cbfb86fbfb9f83f584f658feb" }, + "cmake-tools.nvim": { "branch": "master", "commit": "591ae37fc5494677e929118f0a182d2b61fe1af1" }, + "conform.nvim": { "branch": "master", "commit": "6feb2f28f9a9385e401857b21eeac3c1b66dd628" }, + "flash.nvim": { "branch": "main", "commit": "3c942666f115e2811e959eabbdd361a025db8b63" }, + "friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" }, + "gitsigns.nvim": { "branch": "main", "commit": "8b729e489f1475615dc6c9737da917b3bc163605" }, + "grug-far.nvim": { "branch": "main", "commit": "f24022147ca4a0fe1d424a520a9437accbeba193" }, + "lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" }, + "lazydev.nvim": { "branch": "main", "commit": "2367a6c0a01eb9edb0464731cc0fb61ed9ab9d2c" }, + "lazygit.nvim": { "branch": "main", "commit": "b9eae3badab982e71abab96d3ee1d258f0c07961" }, + "lualine.nvim": { "branch": "master", "commit": "0c6cca9f2c63dadeb9225c45bc92bb95a151d4af" }, + "markdown-preview.nvim": { "branch": "master", "commit": "a923f5fc5ba36a3b17e289dc35dc17f66d0548ee" }, + "mason-lspconfig.nvim": { "branch": "main", "commit": "1a31f824b9cd5bc6f342fc29e9a53b60d74af245" }, + "mason-nvim-dap.nvim": { "branch": "main", "commit": "4c2cdc69d69fe00c15ae8648f7e954d99e5de3ea" }, + "mason.nvim": { "branch": "main", "commit": "fc98833b6da5de5a9c5b1446ac541577059555be" }, + "mini.ai": { "branch": "main", "commit": "7f1fe86277f0e977642cf8fe15f004229f61e61a" }, + "mini.icons": { "branch": "main", "commit": "397ed3807e96b59709ef3292f0a3e253d5c1dc0a" }, + "mini.pairs": { "branch": "main", "commit": "69864a2efb36c030877421634487fd90db1e4298" }, + "noice.nvim": { "branch": "main", "commit": "0427460c2d7f673ad60eb02b35f5e9926cf67c59" }, + "nui.nvim": { "branch": "main", "commit": "7cd18e73cfbd70e1546931b7268b3eebaeff9391" }, + "nvim-dap": { "branch": "master", "commit": "b0f983507e3702f073bfe1516846e58b56d4e42f" }, + "nvim-dap-go": { "branch": "main", "commit": "8763ced35b19c8dc526e04a70ab07c34e11ad064" }, + "nvim-dap-ui": { "branch": "master", "commit": "73a26abf4941aa27da59820fd6b028ebcdbcf932" }, + "nvim-dap-virtual-text": { "branch": "master", "commit": "fbdb48c2ed45f4a8293d0d483f7730d24467ccb6" }, + "nvim-lint": { "branch": "master", "commit": "b47cbb249351873e3a571751c3fb66ed6369852f" }, + "nvim-lspconfig": { "branch": "master", "commit": "b8e7957bde4cbb3cb25a13a62548f7c273b026e9" }, + "nvim-nio": { "branch": "master", "commit": "21f5324bfac14e22ba26553caf69ec76ae8a7662" }, + "nvim-osc52": { "branch": "main", "commit": "04cfaba1865ae5c53b6f887c3ca7304973824fb2" }, + "nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" }, + "nvim-treesitter-textobjects": { "branch": "master", "commit": "0f051e9813a36481f48ca1f833897210dbcfffde" }, + "nvim-ts-autotag": { "branch": "main", "commit": "a1d526af391f6aebb25a8795cbc05351ed3620b5" }, + "persistence.nvim": { "branch": "main", "commit": "166a79a55bfa7a4db3e26fc031b4d92af71d0b51" }, + "plenary.nvim": { "branch": "master", "commit": "857c5ac632080dba10aae49dba902ce3abf91b35" }, + "snacks.nvim": { "branch": "main", "commit": "bc0630e43be5699bb94dadc302c0d21615421d93" }, + "todo-comments.nvim": { "branch": "main", "commit": "304a8d204ee787d2544d8bc23cd38d2f929e7cc5" }, + "tokyonight.nvim": { "branch": "main", "commit": "057ef5d260c1931f1dffd0f052c685dcd14100a3" }, + "trouble.nvim": { "branch": "main", "commit": "85bedb7eb7fa331a2ccbecb9202d8abba64d37b3" }, + "ts-comments.nvim": { "branch": "main", "commit": "1bd9d0ba1d8b336c3db50692ffd0955fe1bb9f0c" }, + "which-key.nvim": { "branch": "main", "commit": "370ec46f710e058c9c1646273e6b225acf47cbed" } +} diff --git a/dotfiles/.config/nvim/lazyvim.json b/dotfiles/.config/nvim/lazyvim.json new file mode 100644 index 0000000..54fa8d2 --- /dev/null +++ b/dotfiles/.config/nvim/lazyvim.json @@ -0,0 +1,15 @@ +{ + "extras": [ + "lazyvim.plugins.extras.dap.core", + "lazyvim.plugins.extras.lang.clangd", + "lazyvim.plugins.extras.lang.cmake", + "lazyvim.plugins.extras.lang.docker", + "lazyvim.plugins.extras.lang.go", + "lazyvim.plugins.extras.lang.yaml" + ], + "install_version": 8, + "news": { + "NEWS.md": "10960" + }, + "version": 8 +} \ No newline at end of file diff --git a/dotfiles/.config/nvim/lua/config/autocmds.lua b/dotfiles/.config/nvim/lua/config/autocmds.lua new file mode 100644 index 0000000..4221e75 --- /dev/null +++ b/dotfiles/.config/nvim/lua/config/autocmds.lua @@ -0,0 +1,8 @@ +-- Autocmds are automatically loaded on the VeryLazy event +-- Default autocmds that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/autocmds.lua +-- +-- Add any additional autocmds here +-- with `vim.api.nvim_create_autocmd` +-- +-- Or remove existing autocmds by their group name (which is prefixed with `lazyvim_` for the defaults) +-- e.g. vim.api.nvim_del_augroup_by_name("lazyvim_wrap_spell") diff --git a/dotfiles/.config/nvim/lua/config/keymaps.lua b/dotfiles/.config/nvim/lua/config/keymaps.lua new file mode 100644 index 0000000..aa48b03 --- /dev/null +++ b/dotfiles/.config/nvim/lua/config/keymaps.lua @@ -0,0 +1,31 @@ +-- Keymaps are automatically loaded on the VeryLazy event +-- Default keymaps that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/keymaps.lua +-- Add any additional keymaps here + +local map = vim.keymap.set +local opts = { noremap = true, silent = true } + +-- === VSCode-like buffer/tab navigation === +map("n", "", "bnext", { desc = "Next buffer (like VSCode)" }) +map("n", "", "bprevious", { desc = "Previous buffer (like VSCode)" }) + +-- === Close buffer like Ctrl + W in VSCode === +vim.keymap.set("n", "", "BufferLinePickClose", { desc = "Close buffer (BufferLine)" }) + +vim.keymap.set("n", "", function() + if vim.bo.buftype == "terminal" then + vim.cmd("vsplit | terminal") + else + vim.cmd("botright split | terminal") + end +end, { desc = "Split terminal" }) + +-- ๅœจ็ปˆ็ซฏๆจกๅผไธ‹็š„ๅฟซๆท้”ฎ +vim.keymap.set("t", "", "h", { desc = "Go to left window" }) +vim.keymap.set("t", "", "j", { desc = "Go to lower window" }) +vim.keymap.set("t", "", "k", { desc = "Go to upper window" }) +vim.keymap.set("t", "", "l", { desc = "Go to right window" }) + +vim.keymap.set("n", "xo", function() + vim.fn.jobstart({ "xdg-open", vim.fn.expand("%:p") }, { detach = true }) +end, { desc = "ไฝฟ็”จ็ณป็ปŸ้ป˜่ฎคๅบ”็”จ็จ‹ๅบๆ‰“ๅผ€ๅฝ“ๅ‰ๆ–‡ไปถ" }) diff --git a/dotfiles/.config/nvim/lua/config/lazy.lua b/dotfiles/.config/nvim/lua/config/lazy.lua new file mode 100644 index 0000000..d73bfa1 --- /dev/null +++ b/dotfiles/.config/nvim/lua/config/lazy.lua @@ -0,0 +1,53 @@ +local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" +if not (vim.uv or vim.loop).fs_stat(lazypath) then + local lazyrepo = "https://github.com/folke/lazy.nvim.git" + local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) + if vim.v.shell_error ~= 0 then + vim.api.nvim_echo({ + { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, + { out, "WarningMsg" }, + { "\nPress any key to exit..." }, + }, true, {}) + vim.fn.getchar() + os.exit(1) + end +end +vim.opt.rtp:prepend(lazypath) + +require("lazy").setup({ + spec = { + -- add LazyVim and import its plugins + { "LazyVim/LazyVim", import = "lazyvim.plugins" }, + -- import/override with your plugins + { import = "plugins" }, + }, + defaults = { + -- By default, only LazyVim plugins will be lazy-loaded. Your custom plugins will load during startup. + -- If you know what you're doing, you can set this to `true` to have all your custom plugins lazy-loaded by default. + lazy = false, + -- It's recommended to leave version=false for now, since a lot the plugin that support versioning, + -- have outdated releases, which may break your Neovim install. + version = false, -- always use the latest git commit + -- version = "*", -- try installing the latest stable version for plugins that support semver + }, + install = { colorscheme = { "tokyonight", "habamax" } }, + checker = { + enabled = true, -- check for plugin updates periodically + notify = false, -- notify on update + }, -- automatically check for plugin updates + performance = { + rtp = { + -- disable some rtp plugins + disabled_plugins = { + "gzip", + -- "matchit", + -- "matchparen", + -- "netrwPlugin", + "tarPlugin", + "tohtml", + "tutor", + "zipPlugin", + }, + }, + }, +}) diff --git a/dotfiles/.config/nvim/lua/config/options.lua b/dotfiles/.config/nvim/lua/config/options.lua new file mode 100644 index 0000000..3ea1454 --- /dev/null +++ b/dotfiles/.config/nvim/lua/config/options.lua @@ -0,0 +1,3 @@ +-- Options are automatically loaded before lazy.nvim startup +-- Default options that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/options.lua +-- Add any additional options here diff --git a/dotfiles/.config/nvim/lua/plugins/dashboard.lua b/dotfiles/.config/nvim/lua/plugins/dashboard.lua new file mode 100644 index 0000000..02a47d1 --- /dev/null +++ b/dotfiles/.config/nvim/lua/plugins/dashboard.lua @@ -0,0 +1,18 @@ +-- ~/.config/nvim/lua/plugins/dashboard.lua +return { + "folke/snacks.nvim", + opts = { + dashboard = { + preset = { + header = [[ +โ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ•— โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ–ˆโ•— +โ–ˆโ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•”โ•โ•โ•โ•โ•โ–ˆโ–ˆโ•”โ•โ•โ•โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•‘ โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ–ˆโ–ˆโ•‘ +โ–ˆโ–ˆโ•”โ–ˆโ–ˆโ•— โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ•‘ โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘ โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•”โ–ˆโ–ˆโ–ˆโ–ˆโ•”โ–ˆโ–ˆโ•‘ +โ–ˆโ–ˆโ•‘โ•šโ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•”โ•โ•โ• โ–ˆโ–ˆโ•‘ โ–ˆโ–ˆโ•‘โ•šโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ•”โ•โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘โ•šโ–ˆโ–ˆโ•”โ•โ–ˆโ–ˆโ•‘ +โ–ˆโ–ˆโ•‘ โ•šโ–ˆโ–ˆโ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—โ•šโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•”โ• โ•šโ–ˆโ–ˆโ–ˆโ–ˆโ•”โ• โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘ โ•šโ•โ• โ–ˆโ–ˆโ•‘ +โ•šโ•โ• โ•šโ•โ•โ•โ•โ•šโ•โ•โ•โ•โ•โ•โ• โ•šโ•โ•โ•โ•โ•โ• โ•šโ•โ•โ•โ• โ•šโ•โ•โ•šโ•โ• โ•šโ•โ• + ]], + }, + }, + }, +} diff --git a/dotfiles/.config/nvim/lua/plugins/example.lua b/dotfiles/.config/nvim/lua/plugins/example.lua new file mode 100644 index 0000000..17f53d6 --- /dev/null +++ b/dotfiles/.config/nvim/lua/plugins/example.lua @@ -0,0 +1,197 @@ +-- since this is just an example spec, don't actually load anything here and return an empty spec +-- stylua: ignore +if true then return {} end + +-- every spec file under the "plugins" directory will be loaded automatically by lazy.nvim +-- +-- In your plugin files, you can: +-- * add extra plugins +-- * disable/enabled LazyVim plugins +-- * override the configuration of LazyVim plugins +return { + -- add gruvbox + { "ellisonleao/gruvbox.nvim" }, + + -- Configure LazyVim to load gruvbox + { + "LazyVim/LazyVim", + opts = { + colorscheme = "gruvbox", + }, + }, + + -- change trouble config + { + "folke/trouble.nvim", + -- opts will be merged with the parent spec + opts = { use_diagnostic_signs = true }, + }, + + -- disable trouble + { "folke/trouble.nvim", enabled = false }, + + -- override nvim-cmp and add cmp-emoji + { + "hrsh7th/nvim-cmp", + dependencies = { "hrsh7th/cmp-emoji" }, + ---@param opts cmp.ConfigSchema + opts = function(_, opts) + table.insert(opts.sources, { name = "emoji" }) + end, + }, + + -- change some telescope options and a keymap to browse plugin files + { + "nvim-telescope/telescope.nvim", + keys = { + -- add a keymap to browse plugin files + -- stylua: ignore + { + "fp", + function() require("telescope.builtin").find_files({ cwd = require("lazy.core.config").options.root }) end, + desc = "Find Plugin File", + }, + }, + -- change some options + opts = { + defaults = { + layout_strategy = "horizontal", + layout_config = { prompt_position = "top" }, + sorting_strategy = "ascending", + winblend = 0, + }, + }, + }, + + -- add pyright to lspconfig + { + "neovim/nvim-lspconfig", + ---@class PluginLspOpts + opts = { + ---@type lspconfig.options + servers = { + -- pyright will be automatically installed with mason and loaded with lspconfig + pyright = {}, + }, + }, + }, + + -- add tsserver and setup with typescript.nvim instead of lspconfig + { + "neovim/nvim-lspconfig", + dependencies = { + "jose-elias-alvarez/typescript.nvim", + init = function() + require("lazyvim.util").lsp.on_attach(function(_, buffer) + -- stylua: ignore + vim.keymap.set( "n", "co", "TypescriptOrganizeImports", { buffer = buffer, desc = "Organize Imports" }) + vim.keymap.set("n", "cR", "TypescriptRenameFile", { desc = "Rename File", buffer = buffer }) + end) + end, + }, + ---@class PluginLspOpts + opts = { + ---@type lspconfig.options + servers = { + -- tsserver will be automatically installed with mason and loaded with lspconfig + tsserver = {}, + }, + -- you can do any additional lsp server setup here + -- return true if you don't want this server to be setup with lspconfig + ---@type table + setup = { + -- example to setup with typescript.nvim + tsserver = function(_, opts) + require("typescript").setup({ server = opts }) + return true + end, + -- Specify * to use this function as a fallback for any server + -- ["*"] = function(server, opts) end, + }, + }, + }, + + -- for typescript, LazyVim also includes extra specs to properly setup lspconfig, + -- treesitter, mason and typescript.nvim. So instead of the above, you can use: + { import = "lazyvim.plugins.extras.lang.typescript" }, + + -- add more treesitter parsers + { + "nvim-treesitter/nvim-treesitter", + opts = { + ensure_installed = { + "bash", + "html", + "javascript", + "json", + "lua", + "markdown", + "markdown_inline", + "python", + "query", + "regex", + "tsx", + "typescript", + "vim", + "yaml", + }, + }, + }, + + -- since `vim.tbl_deep_extend`, can only merge tables and not lists, the code above + -- would overwrite `ensure_installed` with the new value. + -- If you'd rather extend the default config, use the code below instead: + { + "nvim-treesitter/nvim-treesitter", + opts = function(_, opts) + -- add tsx and treesitter + vim.list_extend(opts.ensure_installed, { + "tsx", + "typescript", + }) + end, + }, + + -- the opts function can also be used to change the default opts: + { + "nvim-lualine/lualine.nvim", + event = "VeryLazy", + opts = function(_, opts) + table.insert(opts.sections.lualine_x, { + function() + return "๐Ÿ˜„" + end, + }) + end, + }, + + -- or you can return new options to override all the defaults + { + "nvim-lualine/lualine.nvim", + event = "VeryLazy", + opts = function() + return { + --[[add your custom lualine config here]] + } + end, + }, + + -- use mini.starter instead of alpha + { import = "lazyvim.plugins.extras.ui.mini-starter" }, + + -- add jsonls and schemastore packages, and setup treesitter for json, json5 and jsonc + { import = "lazyvim.plugins.extras.lang.json" }, + + -- add any tools you want to have installed below + { + "williamboman/mason.nvim", + opts = { + ensure_installed = { + "stylua", + "shellcheck", + "shfmt", + "flake8", + }, + }, + }, +} diff --git a/dotfiles/.config/nvim/lua/plugins/lazygit.lua b/dotfiles/.config/nvim/lua/plugins/lazygit.lua new file mode 100644 index 0000000..f260504 --- /dev/null +++ b/dotfiles/.config/nvim/lua/plugins/lazygit.lua @@ -0,0 +1,16 @@ +return { + "kdheepak/lazygit.nvim", + cmd = { + "LazyGit", + "LazyGitConfig", + "LazyGitCurrentFile", + "LazyGitFilter", + "LazyGitFilterCurrentFile", + }, + keys = { + { "gg", "LazyGit", desc = "Open LazyGit" }, + }, + dependencies = { + "nvim-lua/plenary.nvim", + }, +} diff --git a/dotfiles/.config/nvim/lua/plugins/markdown.lua b/dotfiles/.config/nvim/lua/plugins/markdown.lua new file mode 100644 index 0000000..1b0209f --- /dev/null +++ b/dotfiles/.config/nvim/lua/plugins/markdown.lua @@ -0,0 +1,9 @@ +return { + { + "iamcco/markdown-preview.nvim", + cmd = { "MarkdownPreviewToggle", "MarkdownPreview", "MarkdownPreviewStop" }, + ft = { "markdown" }, + build = ':call mkdp#util#install()' + } +} + diff --git a/dotfiles/.config/nvim/lua/plugins/osc52.lua b/dotfiles/.config/nvim/lua/plugins/osc52.lua new file mode 100644 index 0000000..7a20603 --- /dev/null +++ b/dotfiles/.config/nvim/lua/plugins/osc52.lua @@ -0,0 +1,18 @@ +return { + "ojroques/nvim-osc52", + config = function() + require("osc52").setup { + max_length = 0, -- ไธ้™ๅˆถ้•ฟๅบฆ + silent = false, + trim = false, + } + + local function copy() + if vim.v.event.operator == "y" and vim.v.event.regname == "" then + require("osc52").copy_register("") + end + end + + vim.api.nvim_create_autocmd("TextYankPost", { callback = copy }) + end, +} diff --git a/dotfiles/.config/nvim/stylua.toml b/dotfiles/.config/nvim/stylua.toml new file mode 100644 index 0000000..5d6c50d --- /dev/null +++ b/dotfiles/.config/nvim/stylua.toml @@ -0,0 +1,3 @@ +indent_type = "Spaces" +indent_width = 2 +column_width = 120 \ No newline at end of file diff --git a/home/tui/nixvim/keymaps.nix b/home/tui/nixvim/keymaps.nix deleted file mode 100644 index b2ac14f..0000000 --- a/home/tui/nixvim/keymaps.nix +++ /dev/null @@ -1,225 +0,0 @@ -_: { - programs.nixvim = { - extraConfigLua = '' - function ToggleLineNumber() - if vim.wo.number then - vim.wo.number = false - else - vim.wo.number = true - vim.wo.relativenumber = false - end - end - - function ToggleRelativeLineNumber() - if vim.wo.relativenumber then - vim.wo.relativenumber = false - else - vim.wo.relativenumber = true - vim.wo.number = false - end - end - - function ToggleWrap() - vim.wo.wrap = not vim.wo.wrap - end - - if vim.lsp.inlay_hint then - vim.keymap.set('n', 'uh', function() - vim.lsp.inlay_hint(0, nil) - end, { desc = 'Toggle Inlay Hints' }) - end - ''; - keymaps = [ - { - action = " norm! ggVG"; - key = ""; - mode = "i"; - options.desc = "Select all lines in buffer"; - } - { - action = "c"; - key = "wd"; - mode = "n"; - options = { - desc = "Delete window"; - silent = true; - }; - } - { - action = "s"; - key = "-"; - mode = "n"; - options = { - desc = "Split window below"; - silent = true; - }; - } - { - action = "v"; - key = "|"; - mode = "n"; - options = { - desc = "Split window right"; - silent = true; - }; - } - { - action = "m .+1=="; - key = ""; - mode = "n"; - options.desc = "Move line down"; - } - { - action = "m .-2=="; - key = ""; - mode = "n"; - options.desc = "Move line up"; - } - { - action = "quitall"; - key = "qq"; - mode = "n"; - options = { - desc = "Quit all"; - silent = true; - }; - } - { - action = "w"; - key = ""; - mode = "n"; - options = { - desc = "Save file"; - silent = true; - }; - } - { - action = "j"; - key = ""; - mode = "n"; - options.desc = "Move To Window Down"; - } - { - action = "h"; - key = ""; - mode = "n"; - options.desc = "Move To Window Left"; - } - { - action = "l"; - key = ""; - mode = "n"; - options.desc = "Move To Window Right"; - } - { - action = "k"; - key = ""; - mode = "n"; - options.desc = "Move To Window Up"; - } - { - action = "\"_d"; - key = "D"; - mode = [ - "n" - "v" - ]; - options.desc = "Delete to void register"; - } - { - action = "noh"; - key = ""; - mode = [ - "n" - "i" - ]; - options = { - desc = "Escape and clear hlsearch"; - silent = true; - }; - } - { - action = ":lua ToggleLineNumber()"; - key = "ul"; - mode = "n"; - options = { - desc = "Toggle Line Numbers"; - silent = true; - }; - } - { - action = ":lua ToggleRelativeLineNumber()"; - key = "uL"; - mode = "n"; - options = { - desc = "Toggle Relative Line Numbers"; - silent = true; - }; - } - { - action = ":lua ToggleWrap()"; - key = "uw"; - mode = "n"; - options = { - desc = "Toggle Line Wrap"; - silent = true; - }; - } - { - action = "\"+y"; - key = "y"; - mode = [ - "n" - "v" - ]; - options.desc = "Copy to system clipboard"; - } - { - action = ":m '>+1gv=gv"; - key = ""; - mode = "v"; - options.desc = "Move line Down"; - } - { - action = ":m '<-2gv=gv"; - key = ""; - mode = "v"; - options.desc = "Move line up"; - } - { - action = "q" = { - action = "setloclist"; - desc = "Open diagnostic [Q]uickfix list"; - }; - }; - - extra = [ - { - mode = "n"; - key = "gd"; - action.__raw = "require('telescope.builtin').lsp_definitions"; - options = { - desc = "LSP: [G]oto [D]efinition"; - }; - } - { - mode = "n"; - key = "gr"; - action.__raw = "require('telescope.builtin').lsp_references"; - options = { - desc = "LSP: [G]oto [R]eferences"; - }; - } - { - mode = "n"; - key = "gI"; - action.__raw = "require('telescope.builtin').lsp_implementations"; - options = { - desc = "LSP: [G]oto [I]mplementation"; - }; - } - { - mode = "n"; - key = "D"; - action.__raw = "require('telescope.builtin').lsp_type_definitions"; - options = { - desc = "LSP: Type [D]efinition"; - }; - } - { - mode = "n"; - key = "ds"; - action.__raw = "require('telescope.builtin').lsp_document_symbols"; - options = { - desc = "LSP: [D]ocument [S]ymbols"; - }; - } - { - mode = "n"; - key = "ws"; - action.__raw = "require('telescope.builtin').lsp_dynamic_workspace_symbols"; - options = { - desc = "LSP: [W]orkspace [S]ymbols"; - }; - } - ]; - - lspBuf = { - "rn" = { - action = "rename"; - desc = "LSP: [R]e[n]ame"; - }; - "ca" = { - action = "code_action"; - desc = "LSP: [C]ode [A]ction"; - }; - "gD" = { - action = "declaration"; - desc = "LSP: [G]oto [D]eclaration"; - }; - }; - }; - - servers = { - # clangd = { - # enable = true; - # }; - # lua_ls = { - # enable = true; - # settings = { - # completion = { - # callSnippet = "Replace"; - # }; - # }; - # }; - # gopls = { - # enable = true; - # }; - # pyright = { - # enable = true; - # }; - # rust_analyzer = { - # enable = true; - # }; - # ...etc. See `https://nix-community.github.io/nixvim/plugins/lsp` for a list of pre-configured LSPs - - # Some languages (like typscript) have entire language plugins that can be useful: - # `https://nix-community.github.io/nixvim/plugins/typescript-tools/index.html?highlight=typescript-tools#pluginstypescript-toolspackage` - - # But for many setups the LSP (`ts_ls`) will work just fine - ts_ls = { - enable = true; - }; - }; - }; - }; - }; -} diff --git a/home/tui/nixvim/plugins/mini.nix b/home/tui/nixvim/plugins/mini.nix deleted file mode 100755 index dd4b16d..0000000 --- a/home/tui/nixvim/plugins/mini.nix +++ /dev/null @@ -1,23 +0,0 @@ -_: { - programs.nixvim = { - plugins.mini = { - enable = true; - - modules = { - ai = { - n_lines = 500; - }; - statusline = { - use_icons.__raw = "vim.g.have_nerd_font"; - }; - surround = { - }; - }; - }; - extraConfigLua = '' - require('mini.statusline').section_location = function() - return '%2l:%-2v' - end - ''; - }; -} diff --git a/home/tui/nixvim/plugins/nvim-cmp.nix b/home/tui/nixvim/plugins/nvim-cmp.nix deleted file mode 100755 index eb8df75..0000000 --- a/home/tui/nixvim/plugins/nvim-cmp.nix +++ /dev/null @@ -1,56 +0,0 @@ -_: { - programs.nixvim = { - plugins.cmp = { - enable = true; - - settings = { - completion = { - completeopt = "menu,menuone,noinsert"; - }; - - mapping = { - "" = "cmp.mapping.select_next_item()"; - "" = "cmp.mapping.select_prev_item()"; - "" = "cmp.mapping.scroll_docs(-4)"; - "" = "cmp.mapping.scroll_docs(4)"; - "" = "cmp.mapping.confirm { select = true }"; - "" = "cmp.mapping.complete {}"; - "" = '' - cmp.mapping(function() - if luasnip.expand_or_locally_jumpable() then - luasnip.expand_or_jump() - end - end, { 'i', 's' }) - ''; - "" = '' - cmp.mapping(function() - if luasnip.locally_jumpable(-1) then - luasnip.jump(-1) - end - end, { 'i', 's' }) - ''; - }; - - snippet = { - expand = '' - function(args) - require('luasnip').lsp_expand(args.body) - end - ''; - }; - - sources = [ - { - name = "luasnip"; - } - { - name = "nvim_lsp"; - } - { - name = "path"; - } - ]; - }; - }; - }; -} diff --git a/home/tui/nixvim/plugins/nvim-tree.nix b/home/tui/nixvim/plugins/nvim-tree.nix deleted file mode 100644 index 431d30d..0000000 --- a/home/tui/nixvim/plugins/nvim-tree.nix +++ /dev/null @@ -1,17 +0,0 @@ -_: { - programs.nixvim = { - plugins.nvim-tree = { - enable = true; - }; - - keymaps = [ - { - key = ""; - action = "NvimTreeToggle"; - options = { - desc = "NvimTree Toggle"; - }; - } - ]; - }; -} diff --git a/home/tui/nixvim/plugins/telescope.nix b/home/tui/nixvim/plugins/telescope.nix deleted file mode 100755 index 54926da..0000000 --- a/home/tui/nixvim/plugins/telescope.nix +++ /dev/null @@ -1,137 +0,0 @@ -_: { - programs.nixvim = { - plugins.telescope = { - enable = true; - - extensions = { - fzf-native.enable = true; - ui-select.enable = true; - }; - - keymaps = { - "sh" = { - mode = "n"; - action = "help_tags"; - options = { - desc = "[S]earch [H]elp"; - }; - }; - "sk" = { - mode = "n"; - action = "keymaps"; - options = { - desc = "[S]earch [K]eymaps"; - }; - }; - "sf" = { - mode = "n"; - action = "find_files"; - options = { - desc = "[S]earch [F]iles"; - }; - }; - "ss" = { - mode = "n"; - action = "builtin"; - options = { - desc = "[S]earch [S]elect Telescope"; - }; - }; - "sw" = { - mode = "n"; - action = "grep_string"; - options = { - desc = "[S]earch current [W]ord"; - }; - }; - "sg" = { - mode = "n"; - action = "live_grep"; - options = { - desc = "[S]earch by [G]rep"; - }; - }; - "sd" = { - mode = "n"; - action = "diagnostics"; - options = { - desc = "[S]earch [D]iagnostics"; - }; - }; - "sr" = { - mode = "n"; - action = "resume"; - options = { - desc = "[S]earch [R]esume"; - }; - }; - "s" = { - mode = "n"; - action = "oldfiles"; - options = { - desc = "[S]earch Recent Files ('.' for repeat)"; - }; - }; - "" = { - mode = "n"; - action = "buffers"; - options = { - desc = "[ ] Find existing buffers"; - }; - }; - }; - settings = { - extensions.__raw = "{ ['ui-select'] = { require('telescope.themes').get_dropdown() } }"; - }; - }; - - keymaps = [ - { - mode = "n"; - key = "/"; - action.__raw = '' - function() - require('telescope.builtin').current_buffer_fuzzy_find( - require('telescope.themes').get_dropdown { - winblend = 10, - previewer = false - } - ) - end - ''; - options = { - desc = "[/] Fuzzily search in current buffer"; - }; - } - { - mode = "n"; - key = "s/"; - action.__raw = '' - function() - require('telescope.builtin').live_grep { - grep_open_files = true, - prompt_title = 'Live Grep in Open Files' - } - end - ''; - options = { - desc = "[S]earch [/] in Open Files"; - }; - } - { - mode = "n"; - key = "sn"; - action.__raw = '' - function() - require('telescope.builtin').find_files { - cwd = vim.fn.stdpath 'config' - } - end - ''; - options = { - desc = "[S]earch [N]eovim files"; - }; - } - ]; - }; -} diff --git a/home/tui/nixvim/plugins/toggleterm.nix b/home/tui/nixvim/plugins/toggleterm.nix deleted file mode 100644 index 7689496..0000000 --- a/home/tui/nixvim/plugins/toggleterm.nix +++ /dev/null @@ -1,66 +0,0 @@ -_: { - programs.nixvim = { - keymaps = [ - { - action = "2ToggleTerm"; - key = ""; - mode = "t"; - options.desc = "Open/Close Terminal 2"; - } - { - action = "wincmd j"; - key = ""; - mode = "t"; - options.desc = "Go to Down window"; - } - { - action = "wincmd h"; - key = ""; - mode = "t"; - options.desc = "Go to Left window"; - } - { - action = "wincmd l"; - key = ""; - mode = "t"; - options.desc = "Go to Right window"; - } - { - action = "wincmd k"; - key = ""; - mode = "t"; - options.desc = "Go to Up window"; - } - ]; - plugins.toggleterm = { - enable = true; - settings = { - close_on_exit = true; - direction = "horizontal"; # 'vertical' | 'horizontal' | 'tab' | 'float' - float_opts = { - border = "single"; # 'single' | 'double' | 'shadow' | 'curved' | ... other options supported by win open - height = 20; - width = 80; - winblend = 0; - }; - hide_numbers = true; - insert_mappings = true; - open_mapping = "[[]]"; - persist_mode = true; - shade_terminals = true; - shell = "nu"; - size = '' - function(term) - if term.direction == "horizontal" then - return 30 - elseif term.direction == "vertical" then - return vim.o.columns * 0.4 - end - end - ''; - start_in_insert = true; - terminal_mappings = true; - }; - }; - }; -} diff --git a/home/tui/nixvim/plugins/treesitter.nix b/home/tui/nixvim/plugins/treesitter.nix deleted file mode 100755 index 0f12a82..0000000 --- a/home/tui/nixvim/plugins/treesitter.nix +++ /dev/null @@ -1,35 +0,0 @@ -_: { - programs.nixvim = { - plugins.treesitter = { - enable = true; - - settings = { - ensureInstalled = [ - "bash" - "c" - "diff" - "html" - "lua" - "luadoc" - "markdown" - "markdown_inline" - "query" - "vim" - "vimdoc" - ]; - - highlight = { - additional_vim_regex_highlighting = true; - enable = true; - }; - - indent = { - enable = true; - disable = [ - "ruby" - ]; - }; - }; - }; - }; -} diff --git a/home/tui/nixvim/plugins/ui.nix b/home/tui/nixvim/plugins/ui.nix deleted file mode 100644 index ac60531..0000000 --- a/home/tui/nixvim/plugins/ui.nix +++ /dev/null @@ -1,189 +0,0 @@ -_: { - programs.nixvim = { - plugins = { - alpha = { - enable = true; - layout = let - padding = val: { - type = "padding"; - inherit val; - }; - in [ - (padding 4) - { - opts = { - hl = "AlphaHeader"; - position = "center"; - }; - type = "text"; - val = [ - " โ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ•— โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ•— โ–ˆโ–ˆโ•— โ–ˆโ–ˆโ•— โ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ–ˆโ•—" - " โ–ˆโ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ•‘ โ–ˆโ–ˆโ•”โ•โ•โ•โ•โ•โ–ˆโ–ˆโ•”โ•โ•โ•โ–ˆโ–ˆโ•— โ–ˆโ–ˆโ•‘ โ–ˆโ–ˆโ•‘ โ–ˆโ–ˆโ•‘ โ–ˆโ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ–ˆโ–ˆโ•‘" - " โ–ˆโ–ˆโ•”โ–ˆโ–ˆโ•— โ–ˆโ–ˆโ•‘ โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ•‘ โ–ˆโ–ˆโ•‘ โ–ˆโ–ˆโ•‘ โ–ˆโ–ˆโ•‘ โ–ˆโ–ˆโ•‘ โ–ˆโ–ˆโ•”โ–ˆโ–ˆโ–ˆโ–ˆโ•”โ–ˆโ–ˆโ•‘" - " โ–ˆโ–ˆโ•‘โ•šโ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•‘ โ–ˆโ–ˆโ•”โ•โ•โ• โ–ˆโ–ˆโ•‘ โ–ˆโ–ˆโ•‘ โ•šโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ•”โ• โ–ˆโ–ˆโ•‘ โ–ˆโ–ˆโ•‘โ•šโ–ˆโ–ˆโ•”โ•โ–ˆโ–ˆโ•‘" - " โ–ˆโ–ˆโ•‘ โ•šโ–ˆโ–ˆโ–ˆโ–ˆโ•‘ โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—โ•šโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•”โ• โ•šโ–ˆโ–ˆโ–ˆโ–ˆโ•”โ• โ–ˆโ–ˆโ•‘ โ–ˆโ–ˆโ•‘ โ•šโ•โ• โ–ˆโ–ˆโ•‘" - " โ•šโ•โ• โ•šโ•โ•โ•โ• โ•šโ•โ•โ•โ•โ•โ•โ• โ•šโ•โ•โ•โ•โ•โ• โ•šโ•โ•โ•โ• โ•šโ•โ• โ•šโ•โ• โ•šโ•โ•" - ]; - } - (padding 6) - { - type = "button"; - val = "๎š Find File"; - on_press.raw = "require('telescope.builtin').find_files"; - opts = { - keymap = [ - "n" - "f" - ":Telescope find_files " - { - noremap = true; - silent = true; - nowait = true; - } - ]; - shortcut = "f"; - - position = "center"; - cursor = 3; - width = 40; - align_shortcut = "right"; - hl_shortcut = "Keyword"; - }; - } - (padding 1) - { - type = "button"; - val = "๎ฉฟ New File"; - on_press.__raw = "function() vim.cmd[[ene]] end"; - opts = { - keymap = [ - "n" - "n" - ":ene startinsert " - { - noremap = true; - silent = true; - nowait = true; - } - ]; - shortcut = "n"; - - position = "center"; - cursor = 3; - width = 40; - align_shortcut = "right"; - hl_shortcut = "Keyword"; - }; - } - (padding 1) - { - type = "button"; - val = "๏…œ Recent Files"; - on_press.raw = "require('telescope.builtin').oldfiles"; - opts = { - keymap = [ - "n" - "r" - ":Telescope oldfiles " - { - noremap = true; - silent = true; - nowait = true; - } - ]; - shortcut = "r"; - - position = "center"; - cursor = 3; - width = 40; - align_shortcut = "right"; - hl_shortcut = "Keyword"; - }; - } - (padding 1) - { - type = "button"; - val = "๏‡‚ Find Word"; - on_press.raw = "require('telescope.builtin').live_grep"; - opts = { - keymap = [ - "n" - "w" - ":Telescope live_grep " - { - noremap = true; - silent = true; - nowait = true; - } - ]; - shortcut = "w"; - - position = "center"; - cursor = 3; - width = 40; - align_shortcut = "right"; - hl_shortcut = "Keyword"; - }; - } - (padding 1) - { - type = "button"; - val = "๓ฑ€ธ Restore Session"; - on_press.raw = "require('persistence').load()"; - opts = { - keymap = [ - "n" - "s" - ":lua require('persistence').load()" - { - noremap = true; - silent = true; - nowait = true; - } - ]; - shortcut = "s"; - - position = "center"; - cursor = 3; - width = 40; - align_shortcut = "right"; - hl_shortcut = "Keyword"; - }; - } - (padding 1) - { - type = "button"; - val = "๓ฐˆ† Quit Neovim"; - on_press.__raw = "function() vim.cmd[[qa]] end"; - opts = { - keymap = [ - "n" - "q" - ":qa" - { - noremap = true; - silent = true; - nowait = true; - } - ]; - shortcut = "q"; - - position = "center"; - cursor = 3; - width = 40; - align_shortcut = "right"; - hl_shortcut = "Keyword"; - }; - } - ]; - }; - dressing.enable = true; - neoscroll.enable = true; - nui.enable = true; - persistence.enable = true; - todo-comments.enable = true; - trim.enable = true; - web-devicons.enable = true; - }; - }; -} diff --git a/home/tui/nixvim/plugins/which-key.nix b/home/tui/nixvim/plugins/which-key.nix deleted file mode 100755 index 18d227a..0000000 --- a/home/tui/nixvim/plugins/which-key.nix +++ /dev/null @@ -1,43 +0,0 @@ -_: { - programs.nixvim = { - plugins.which-key = { - enable = true; - settings = { - spec = [ - { - __unkeyed-1 = "c"; - group = "[C]ode"; - } - { - __unkeyed-1 = "d"; - group = "[D]ocument"; - } - { - __unkeyed-1 = "h"; - group = "Git [H]unk"; - mode = [ - "n" - "v" - ]; - } - { - __unkeyed-1 = "r"; - group = "[R]ename"; - } - { - __unkeyed-1 = "s"; - group = "[S]earch"; - } - { - __unkeyed-1 = "t"; - group = "[T]oggle"; - } - { - __unkeyed-1 = "w"; - group = "[W]orkspace"; - } - ]; - }; - }; - }; -} diff --git a/modules/system/environment.nix b/modules/system/environment.nix index 6d21327..399d69b 100644 --- a/modules/system/environment.nix +++ b/modules/system/environment.nix @@ -59,6 +59,7 @@ in { zola go pnpm + tree #Android android-tools @@ -68,6 +69,9 @@ in { libnotify libvirt lm_sensors + gcc + clang + zig ]; };