diff --git a/home/muzaffar.nix b/home/muzaffar.nix index 558fdeb..59f509c 100644 --- a/home/muzaffar.nix +++ b/home/muzaffar.nix @@ -10,6 +10,7 @@ }: { imports = [ outputs.homeManagerModules.zsh + outputs.homeManagerModules.helix outputs.homeManagerModules.nixpkgs outputs.homeManagerModules.packages ]; diff --git a/home/sakhib.nix b/home/sakhib.nix index 8ceb8f4..46c6fba 100644 --- a/home/sakhib.nix +++ b/home/sakhib.nix @@ -10,7 +10,7 @@ }: { imports = [ outputs.homeManagerModules.zsh - outputs.homeManagerModules.neovim + outputs.homeManagerModules.helix outputs.homeManagerModules.nixpkgs outputs.homeManagerModules.topgrade outputs.homeManagerModules.packages diff --git a/home/shakhzod.nix b/home/shakhzod.nix index e467114..96b5f5f 100644 --- a/home/shakhzod.nix +++ b/home/shakhzod.nix @@ -10,7 +10,7 @@ }: { imports = [ outputs.homeManagerModules.zsh - outputs.homeManagerModules.neovim + outputs.homeManagerModules.helix outputs.homeManagerModules.nixpkgs outputs.homeManagerModules.topgrade outputs.homeManagerModules.packages diff --git a/modules/home/default.nix b/modules/home/default.nix index c6cddcc..337484a 100644 --- a/modules/home/default.nix +++ b/modules/home/default.nix @@ -3,7 +3,7 @@ { # List your module files here zsh = import ./zsh; - neovim = import ./neovim; + helix = import ./helix; nixpkgs = import ./nixpkgs; topgrade = import ./topgrade; packages = import ./packages; diff --git a/modules/home/neovim/default.nix b/modules/home/helix/default.nix similarity index 68% rename from modules/home/neovim/default.nix rename to modules/home/helix/default.nix index 36fa3b8..94d2d39 100644 --- a/modules/home/neovim/default.nix +++ b/modules/home/helix/default.nix @@ -1,39 +1,67 @@ -{ - inputs, - pkgs, - ... -}: { - imports = []; - - xdg.configFile = { - # astronvim's config - "nvim".source = inputs.astronvim; - - # my custom astronvim config, astronvim will load it after base config - # https://github.com/AstroNvim/AstroNvim/blob/v3.32.0/lua/astronvim/bootstrap.lua#L15-L16 - "astronvim/lua/user".source = ./user; - }; - - nixpkgs.config = { - programs.npm.npmrc = '' - prefix = ''${HOME}/.npm-global - ''; - }; - - programs = { - neovim = { +{ pkgs, ... }: { + config = { + programs.helix = { enable = true; - defaultEditor = true; - viAlias = true; - vimAlias = true; - - # currently we use lazy.nvim as neovim's package manager, so comment this one. - # plugins = with pkgs.vimPlugins; [ - # # search all the plugins using https://search.nixos.org/packages - # ]; + settings = { + theme = "autumn_night"; + + editor = { + line-number = "relative"; + + cursor-shape = { + insert = "bar"; + normal = "block"; + select = "underline"; + }; + + file-picker = { + hidden = false; + git-ignore = true; + git-global = true; + }; + + lsp = { + enable = true; + display-messages = true; + display-inlay-hints = true; + }; + + statusline = { + left = [ "mode" "spinner" "read-only-indicator" "file-modification-indicator" ]; + + center = [ "file-name" ]; + + right = [ + "diagnostics" + "selections" + "position" + "file-encoding" + "file-line-ending" + "file-type" + ]; + + separator = "│"; + + mode = { + normal = "SLAVE"; + insert = "MASTER"; + select = "DUNGEON"; + }; + }; + }; + + keys.normal = { + # Easy window movement + "C-left" = "jump_view_left"; + "C-right" = "jump_view_right"; + "C-up" = "jump_view_up"; + "C-down" = "jump_view_down"; + + "C-r" = ":reload"; + }; + }; - # Extra packages only available to nvim(won't pollute the global home environment) extraPackages = with pkgs; [ #-- c/c++ @@ -71,6 +99,10 @@ #-- nix nil + nixd + nixpkgs-fmt + nixpkgs-lint + # nixd statix # Lints and suggestions for the nix programming language deadnix # Find and remove unused code in .nix source files @@ -134,11 +166,10 @@ #-- Optional Requirements: gdu # disk usage analyzer, required by AstroNvim ripgrep # fast search tool, required by AstroNvim's 'fw'( is space key) - git # git ] ++ ( if pkgs.stdenv.isDarwin - then [] + then [ ] else [ #-- verilog / systemverilog verible diff --git a/modules/home/neovim/readme.md b/modules/home/neovim/readme.md deleted file mode 100644 index 73d728f..0000000 --- a/modules/home/neovim/readme.md +++ /dev/null @@ -1,228 +0,0 @@ -# AstroNvim Configuration and Shortcuts - -My Neovim config based on [AstroNvim](https://github.com/AstroNvim/AstroNvim). -For more details, visit the [AstroNvim website](https://astronvim.com/). - -This document outlines neovim's configuration structure and various shortcuts/commands for efficient usage. - -## Configuration Structure - -| Description | Standard Location | My Location | -| ------------------------------------------------- | ------------------------------------------- | ------------------------------------------------------------------------- | -| Neovim's config | `~/.config/nvim` | AstroNvim's github repository, referenced as a flake input in this flake. | -| AstroNvim's user configuration | `$XDG_CONFIG_HOME/astronvim/lua/user` | [./astronvim_user/](./astronvim_user/) | -| Plugins installation directory (lazy.nvim) | `~/.local/share/nvim/` | The same as standard location, generated and managed by lazy.nvim. | -| LSP servers, DAP servers, linters, and formatters | `~/.local/share/nvim/mason/`(by mason.nvim) | [./default.nix](./default.nix), installed by nix. | - -## Update/Clean Plugins - -Note that lazy.nvim will not automatically update plugins, so you need to update them manually. - -```bash -:Lazy update -``` - -Remove all unused plugins: - -```bash -:Lazy clean -``` - -## Screenshots - -![](/_img/astronvim_2023-07-13_00-39.webp) -![](/_img/hyprland_2023-07-29_2.webp) - -## Visual Modes - -| Action | Shortcut | -| ------------------------ | ---------------------------------------- | -| Toggle visual mode | `v` | -| Toggle visual block mode | ` + v` (select a block vertically) | - -## Incremental Selection - -Provided by nvim-treesitter. - -| Action | Shortcut | -| ----------------- | -------------- | -| init selection | `` | -| node incremental | `` | -| scope incremental | `` | -| node decremental | `Backspace` | - -## Search and Jump - -Provided by [flash.nvim](https://github.com/folke/flash.nvim), it's a intelligent search and jump plugin. - -1. It enhaces the default search and jump behavior of neovim.(search with prefix `/`) - -| Action | Shortcut | -| ----------------- | ------------------------------------------------------------------------------------------------------------- | -| Search | `/`(normal search), `s`(disable all code highlight, only highlight matches) | -| Treesitter Search | `yR`,`dR`, `cR`, `vR`, `ctrl+v+R`(arround your matches, all the surrounding Treesitter nodes will be labeled) | -| Remote Flash | `yr`, `dr`, `cr`, (arround your matches, all the surrounding Treesitter nodes will be labeled) | - -## Text Manipulation - -- Add at the end of multiple lines: `:normal A` - - - Execublock: `:A` - - - visual block mode(ctrl + v) - - Append text at the end of each line in the selected block - - If position exceeds line end, neovim adds spaces automatically - -- Delete the last char of multivle lines: `:normal $x` - - - Execute `$x` on each line - - visual mode(v) - - `$` moves cursor to the end of line - - `x` deletes the character under the cursor - -- Delete the last word of multiple lines: `:normal $bD` - - Execute `$bD` on each line - - visual mode(v) - - `$` moves cursor to the end of line - - `b` moves cursor to the beginning of the last word - - `D` deletes from cursor to the end of line - -## Commands & Shortcuts - -| Action | Shortcut | -| ----------------------------- | -------------- | -| Learn Neovim's Basics | `:Tutor` | -| Open file explorer | ` + e` | -| Focus Neotree to current file | ` + o` | -| Floating Terminal | ` + tf` | -| Horizontal Split Terminal | ` + th` | -| Vertical Split Terminal | ` + tv` | -| Open IPython REPL | ` + tp` | -| Toggle line wrap | ` + uw` | -| Show line diagnostics | `gl` | -| Show function/variable info | `K` | -| Go to definition | `gd` | -| References of a symbol | `gr` | - -## Window Navigation - -- Switch between windows: ` + h/j/k/l` -- Resize windows: ` + Up/Down/Left/Right` - - Note: On macOS, conflicts with system shortcuts - - Disable in System Preferences -> Keyboard -> Shortcuts -> Mission Control - -## Splitting and Buffers - -| Action | Shortcut | -| --------------------- | ------------- | -| Horizontal Split | `\` | -| Vertical Split | `\|` | -| Next Buffer (Tab) | `]b` | -| Previous Buffer (Tab) | `[b` | -| Close Buffer | ` + c` | - -## Editing and Formatting - -| Action | Shortcut | -| ----------------------------------------------------- | -------------- | -| Toggle buffer auto formatting | ` + uf` | -| Format Document | ` + lf` | -| Code Actions | ` + la` | -| Rename | ` + lr` | -| Opening LSP symbols | ` + lS` | -| Comment Line(support multiple lines) | ` + /` | -| Open filepath/URL at cursor(neovim's builtin command) | `gx` | -| Find files by name (fzf) | ` + ff` | -| Grep string in files (ripgrep) | ` + fw` | - -## Sessions - -| Action | Shortcut | -| ------------------------------ | -------------- | -| Save Session | ` + Ss` | -| Last Session | ` + Sl` | -| Delete Session | ` + Sd` | -| Search Session | ` + Sf` | -| Load Current Directory Session | ` + S.` | - -## Debugging - -Press ` + D` to view available bindings and options. - -## Find and Replace - -| Action | Command | -| ------------------------ | ----------------------------------- | -| Replace in selected area | `:s/old/new/g` | -| Replace in current line | Same as above | -| Replace in whole file | `:% s/old/new/g` | -| Replace with regex | `:% s@\vhttp://(\w+)@https://\1@gc` | - -1. `\v` means means that in the regex pattern after it can be used without backslash escaping(similar to python's raw string). -2. `\1` means the first matched group in the pattern. - -## Replace in the specific lines - -| Action | Command | -| ----------------------------------------- | -------------------------------------- | -| From the 10th line to the end of the file | `:10,$ s/old/new/g` or `:10,$ s@^@#@g` | -| From the 10th line to the 20th line | `:10,20 s/old/new/g` | - -The postfix(flags) in the above commands: - -1. `g` means replace all the matched strings in the current line/file. -2. `c` means ask for confirmation before replacing. -3. `i` means ignore case. - -## Search and Replace Globally - -| Description | Shortcut | -| ------------------------------------------------------------ | ---------------------------------------------------------------- | -| Open spectre.nvim search and replace panel | ` + ss` | -| Search and replace in command line(need install `sad` first) | `find -name "*.nix" \| sad '' '' \| delta` | - -## Surrounding Characters - -Provided by mini.surround plugin. - -- Prefix `gz` - -| Action | Shortcut | Description | -| ------------------------------ | -------- | ----------------------------------------------- | -| Add surrounding characters | `gzaiw'` | Add `'` around the word under cursor | -| Delete surrounding characters | `gzd'` | Delete `'` around the word under cursor | -| Replace surrounding characters | `gzr'"` | Replace `'` by `"` around the word under cursor | -| Highlight surrounding | `gzh'` | Highlight `'` around the word under cursor | - -## Text Manipulation - -| Action | | -| -------------------------------------- | ------------- | -| Join Selection of Lines With Space | `:join` | -| Join without spaces | `:join!` | -| Join with LSP intelligence(treesj) | ` + j` | -| Split Line into Multiple Lines(treesj) | ` + s` | - -## Convert Text Case - -| Action | | -| -------------------- | --- | -| Toggle text's case | `~` | -| Convert to uppercase | `U` | -| Convert to lowercase | `u` | - -## Miscellaneous - -| Action | | -| ---------------------------- | -------------------------------------------- | -| Save selected text to a file | `:w filename` (Will show `:'<,'>w filename`) | -| Show all Yank History | `: + yh` | -| Show undo history | `: + uh` | - -## Additional Resources - -For more detailed information and advanced usage, refer to: - -1. [AstroNvim walkthrough](https://astronvim.com/Basic%20Usage/walkthrough) -2. [./astronvim_user/mapping.lua](./astronvim_user/mappings.lua) -3. All the plugins' documentations \ No newline at end of file diff --git a/modules/home/neovim/user/init.lua b/modules/home/neovim/user/init.lua deleted file mode 100644 index c8ad282..0000000 --- a/modules/home/neovim/user/init.lua +++ /dev/null @@ -1,458 +0,0 @@ -return { - colorscheme = "oxocarbon", - - options = { - opt = { - relativenumber = true, -- Show relative numberline - signcolumn = "auto", -- Show sign column when used only - spell = false, -- Spell checking - swapfile = false, -- Swapfile - smartindent = false, -- fix https://github.com/ryan4yin/nix-config/issues/4 - }, - }, - - plugins = { - "AstroNvim/astrocommunity", - -- colorscheme - oxocarbon - { import = "astrocommunity.colorscheme.oxocarbon-nvim" }, - -- Highly experimental plugin that completely replaces - -- the UI for messages, cmdline and the popupmenu. - { import = "astrocommunity.utility.noice-nvim" }, - -- Fully featured & enhanced replacement for copilot.vim - -- work with both auto completion in cmp and copilot - { import = "astrocommunity.motion.leap-nvim" }, - { import = "astrocommunity.motion.flit-nvim" }, - { import = "astrocommunity.scrolling.nvim-scrollbar" }, - { import = "astrocommunity.editing-support.todo-comments-nvim" }, - -- Language Support - ---- Frontend & NodeJS - { import = "astrocommunity.pack.typescript-all-in-one" }, - { import = "astrocommunity.pack.tailwindcss" }, - { import = "astrocommunity.pack.html-css" }, - { import = "astrocommunity.pack.prisma" }, - { import = "astrocommunity.pack.vue" }, - ---- Configuration Language - { import = "astrocommunity.pack.markdown" }, - { import = "astrocommunity.pack.json" }, - { import = "astrocommunity.pack.yaml" }, - { import = "astrocommunity.pack.toml" }, - ---- Backend - { import = "astrocommunity.pack.lua" }, - { import = "astrocommunity.pack.go" }, - { import = "astrocommunity.pack.rust" }, - { import = "astrocommunity.pack.python" }, - { import = "astrocommunity.pack.java" }, - { import = "astrocommunity.pack.nix" }, -- manually add config for nix, comment this one. - { import = "astrocommunity.pack.proto" }, - ---- Operation & Cloud Native - { import = "astrocommunity.pack.terraform" }, - { import = "astrocommunity.pack.bash" }, - { import = "astrocommunity.pack.cmake" }, - { import = "astrocommunity.pack.cpp" }, - { import = "astrocommunity.pack.docker" }, - -- Motion - { import = "astrocommunity.motion.mini-surround" }, - -- https://github.com/echasnovski/mini.ai - { import = "astrocommunity.motion.mini-ai" }, - { import = "astrocommunity.motion.flash-nvim" }, - { "folke/flash.nvim", vscode = false }, - -- Lua implementation of CamelCaseMotion, with extra consideration of punctuation. - { import = "astrocommunity.motion.nvim-spider" }, - -- AI Assistant - { import = "astrocommunity.completion.copilot-lua-cmp" }, - -- Custom copilot-lua to enable filtypes: markdown - { - "zbirenbaum/copilot.lua", - opts = function(_, opts) - opts.filetypes = { - yaml = true, - markdown = true, - } - end, - }, - - { - "0x00-ketsu/autosave.nvim", - -- lazy-loading on events - event = { "InsertLeave", "TextChanged" }, - opts = function(_, opts) - opts.prompt_style = "notify" -- or stdout - end, - }, - - -- markdown preview - { - "0x00-ketsu/markdown-preview.nvim", - ft = { "md", "markdown", "mkd", "mkdn", "mdwn", "mdown", "mdtxt", "mdtext", "rmd", "wiki" }, - config = function() - require("markdown-preview").setup({ - -- your configuration comes here - -- or leave it empty to use the default settings - -- refer to the setup section below - }) - end, - }, - - -- clipboard manager - { - "gbprod/yanky.nvim", - opts = function() - local mapping = require("yanky.telescope.mapping") - local mappings = mapping.get_defaults() - mappings.i[""] = nil - return { - highlight = { timer = 200 }, - picker = { - telescope = { - use_default_mappings = false, - mappings = mappings, - }, - }, - } - end, - keys = { - { - "y", - "(YankyYank)", - mode = { "n", "x" }, - desc = "Yank text", - }, - { - "p", - "(YankyPutAfter)", - mode = { "n", "x" }, - desc = "Put yanked text after cursor", - }, - { - "P", - "(YankyPutBefore)", - mode = { "n", "x" }, - desc = "Put yanked text before cursor", - }, - { - "gp", - "(YankyGPutAfter)", - mode = { "n", "x" }, - desc = "Put yanked text after selection", - }, - { - "gP", - "(YankyGPutBefore)", - mode = { "n", "x" }, - desc = "Put yanked text before selection", - }, - { "[y", "(YankyCycleForward)", desc = "Cycle forward through yank history" }, - { "]y", "(YankyCycleBackward)", desc = "Cycle backward through yank history" }, - { "]p", "(YankyPutIndentAfterLinewise)", desc = "Put indented after cursor (linewise)" }, - { "[p", "(YankyPutIndentBeforeLinewise)", desc = "Put indented before cursor (linewise)" }, - { "]P", "(YankyPutIndentAfterLinewise)", desc = "Put indented after cursor (linewise)" }, - { "[P", "(YankyPutIndentBeforeLinewise)", desc = "Put indented before cursor (linewise)" }, - { ">p", "(YankyPutIndentAfterShiftRight)", desc = "Put and indent right" }, - { "(YankyPutIndentAfterShiftLeft)", desc = "Put and indent left" }, - { ">P", "(YankyPutIndentBeforeShiftRight)", desc = "Put before and indent right" }, - { "(YankyPutIndentBeforeShiftLeft)", desc = "Put before and indent left" }, - { "=p", "(YankyPutAfterFilter)", desc = "Put after applying a filter" }, - { "=P", "(YankyPutBeforeFilter)", desc = "Put before applying a filter" }, - }, - }, - - -- Enhanced matchparen.vim plugin for Neovim to highlight the outer pair. - { - "utilyre/sentiment.nvim", - version = "*", - event = "VeryLazy", -- keep for lazy loading - opts = { - -- config - }, - init = function() - -- `matchparen.vim` needs to be disabled manually in case of lazy loading - vim.g.loaded_matchparen = 1 - end, - }, - - -- joining blocks of code into oneline, or splitting one line into multiple lines. - { - "Wansmer/treesj", - keys = { "m", "j", "s" }, - dependencies = { "nvim-treesitter/nvim-treesitter" }, - config = function() - require("treesj").setup({ --[[ your config ]] - }) - end, - }, - - -- File explorer(Custom configs) - { - "nvim-neo-tree/neo-tree.nvim", - opts = { - filesystem = { - filtered_items = { - visible = true, -- visible by default - hide_dotfiles = false, - hide_gitignored = false, - }, - }, - }, - }, - -- The plugin offers the alibity to refactor code. - { - "ThePrimeagen/refactoring.nvim", - dependencies = { - { "nvim-lua/plenary.nvim" }, - { "nvim-treesitter/nvim-treesitter" }, - }, - }, - -- The plugin offers the abilibty to search and replace. - { - "nvim-pack/nvim-spectre", - dependencies = { - { "nvim-lua/plenary.nvim" }, - }, - }, - - -- full signature help, docs and completion for the nvim lua API. - { "folke/neodev.nvim", opts = {} }, - - { "RRethy/vim-illuminate", config = function() end }, - - -- Language Parser for syntax highlighting / indentation / folding / Incremental selection - { - "nvim-treesitter/nvim-treesitter", - opts = function(_, opts) - local utils = require("astronvim.utils") - opts.incremental_selection = { - enable = true, - keymaps = { - init_selection = "", -- Ctrl + Space - node_incremental = "", - scope_incremental = "", -- Alt + Space - node_decremental = "", -- Backspace - }, - } - opts.ensure_installed = utils.list_insert_unique(opts.ensure_installed, { - -- neovim - "vim", - "lua", - -- operation & cloud native - "dockerfile", - "hcl", - "jsonnet", - "regex", - "terraform", - "nix", - }) - end, - }, - - -- implementation/definition preview - { - "rmagatti/goto-preview", - config = function() - require("goto-preview").setup({}) - end, - }, - - -- Undo tree - { "debugloop/telescope-undo.nvim" }, - - -- Install lsp, formmatter and others via home manager instead of Mason.nvim - -- LSP installations - { - "williamboman/mason-lspconfig.nvim", - -- overwrite ensure_installed to install lsp via home manager(except emmet_ls) - opts = function(_, opts) - opts.ensure_installed = { - "emmet_ls", -- not exist in nixpkgs, so install it via mason - } - end, - }, - -- Formatters/Linter installation - { - "jay-babu/mason-null-ls.nvim", - -- ensure_installed nothing - opts = function(_, opts) - opts.ensure_installed = nil - opts.automatic_installation = false - end, - }, - { - "jose-elias-alvarez/null-ls.nvim", - opts = function(_, opts) - local null_ls = require("null-ls") - local code_actions = null_ls.builtins.code_actions - local diagnostics = null_ls.builtins.diagnostics - local formatting = null_ls.builtins.formatting - local hover = null_ls.builtins.hover - local completion = null_ls.builtins.completion - -- https://github.com/jose-elias-alvarez/null-ls.nvim/blob/main/doc/BUILTINS.md - if type(opts.sources) == "table" then - vim.list_extend(opts.sources, { - -- Common Code Actions - code_actions.gitsigns, - -- common refactoring actions based off the Refactoring book by Martin Fowler - code_actions.refactoring, - code_actions.gomodifytags, -- Go - modify struct field tags - code_actions.impl, -- Go - generate interface method stubs - code_actions.shellcheck, - code_actions.proselint, -- English prose linter - code_actions.statix, -- Lints and suggestions for Nix. - - -- Diagnostic - diagnostics.actionlint, -- GitHub Actions workflow syntax checking - diagnostics.buf, -- check text in current buffer - diagnostics.checkmake, -- check Makefiles - diagnostics.deadnix, -- Scan Nix files for dead code. - - -- Formatting - formatting.prettier, -- js/ts/vue/css/html/json/... formatter - diagnostics.hadolint, -- Dockerfile linter - formatting.black, -- Python formatter - formatting.ruff, -- extremely fast Python linter - formatting.goimports, -- Go formatter - formatting.shfmt, -- Shell formatter - formatting.rustfmt, -- Rust formatter - formatting.taplo, -- TOML formatteautoindentr - formatting.terraform_fmt, -- Terraform formatter - formatting.stylua, -- Lua formatter - formatting.alejandra, -- Nix formatter - formatting.sqlfluff.with({ -- SQL formatter - extra_args = { "--dialect", "postgres" }, -- change to your dialect - }), - formatting.nginx_beautifier, -- Nginx formatter - null_ls.builtins.formatting.verible_verilog_format, -- Verilog formatter - }) - end - end, - }, - -- Debugger installation - { - "jay-babu/mason-nvim-dap.nvim", - -- overrides `require("mason-nvim-dap").setup(...)` - opts = function(_, opts) - opts.ensure_installed = nil - opts.automatic_installation = false - end, - }, - - { - "nvim-telescope/telescope.nvim", - branch = "0.1.x", - dependencies = { "nvim-lua/plenary.nvim" }, - init = function() - -- 1. Disable highlighting for certain filetypes - -- 2. Ignore files larger than a certain filesize - local previewers = require("telescope.previewers") - - local _bad = { ".*%.csv", ".*%.min.js" } -- Put all filetypes that slow you down in this array - local filesize_threshold = 300 * 1024 -- 300KB - local bad_files = function(filepath) - for _, v in ipairs(_bad) do - if filepath:match(v) then - return false - end - end - return true - end - - local new_maker = function(filepath, bufnr, opts) - opts = opts or {} - if opts.use_ft_detect == nil then - opts.use_ft_detect = true - end - - -- 1. Check if the file is in the bad_files array, and if so, don't highlight it - opts.use_ft_detect = opts.use_ft_detect == false and false or bad_files(filepath) - - -- 2. Check the file size, and ignore it if it's too big(preview nothing). - filepath = vim.fn.expand(filepath) - vim.loop.fs_stat(filepath, function(_, stat) - if not stat then - return - end - if stat.size > filesize_threshold then - return - else - previewers.buffer_previewer_maker(filepath, bufnr, opts) - end - end) - end - - require("telescope").setup({ - defaults = { - buffer_previewer_maker = new_maker, - }, - }) - end, - }, - }, - - -- Configure require("lazy").setup() options - lazy = { - defaults = { lazy = true }, - performance = { - rtp = { - -- customize default disabled vim plugins - disabled_plugins = {}, - }, - }, - }, - - -- https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md - lsp = { - config = { - -- the offset_enconding of clangd will confilicts whit null-ls - -- so we need to manually set it to utf-8 - clangd = { - capabilities = { - offsetEncoding = "utf-8", - }, - }, - }, - -- enable servers that installed by home-manager instead of mason - servers = { - ---- Frontend & NodeJS - "tsserver", -- typescript/javascript language server - "tailwindcss", -- tailwindcss language server - "html", -- html language server - "cssls", -- css language server - "prismals", -- prisma language server - "volar", -- vue language server - ---- Configuration Language - "marksman", -- markdown ls - "jsonls", -- json language server - "yamlls", -- yaml language server - "taplo", -- toml language server - ---- Backend - "lua_ls", -- lua - "gopls", -- go - "rust_analyzer", -- rust - "pyright", -- python - "ruff_lsp", -- extremely fast Python linter and code transformation - "jdtls", -- java - "nil_ls", -- nix language server - "bufls", -- protocol buffer language server - "zls", -- zig language server - ---- HDL - "verible", -- verilog language server - ---- Operation & Cloud Nativautoindente - "bashls", -- bash - "cmake", -- cmake language server - "clangd", -- c/c++ - "dockerls", -- dockerfile - "jsonnet_ls", -- jsonnet language server - "terraformls", -- terraform hcl - }, - formatting = { - disabled = {}, - format_on_save = { - enabled = true, - allow_filetypes = { - "go", - "jsonnet", - "rust", - "terraform", - }, - }, - }, - }, - } diff --git a/modules/home/neovim/user/mappings.lua b/modules/home/neovim/user/mappings.lua deleted file mode 100644 index e84ff00..0000000 --- a/modules/home/neovim/user/mappings.lua +++ /dev/null @@ -1,68 +0,0 @@ --- Mapping data with "desc" stored directly by vim.keymap.set(). --- --- Please use this mappings table to set keyboard mapping since this is the --- lower level configuration and more robust one. (which-key will --- automatically pick-up stored data by this setting.) -local utils = require "astronvim.utils" - -require("telescope").load_extension("refactoring") -require("telescope").load_extension("yank_history") -require("telescope").load_extension("undo") - -return { - -- normal mode - n = { - -- second key is the lefthand side of the map - -- mappings seen under group name "Buffer" - ["bn"] = { "tabnew", desc = "New tab" }, - -- quick save - [""] = { ":w!", desc = "Save File" }, -- change description but the same command - - -- Terminal - -- NOTE: https://neovim.io/doc/user/builtin.html#jobstart() - -- 1. If {cmd} is a List it runs directly (no 'shell') - -- 2. If {cmd} is a String it runs in the 'shell' - ["tp"] = { function() utils.toggle_term_cmd({ cmd = "ipython" }) end, desc = "ToggleTerm python" }, - - -- search and replace globally - ['ss'] = {'lua require("spectre").toggle()', desc = "Toggle Spectre" }, - ['sw'] = {'lua require("spectre").open_visual({select_word=true})', desc = "Search current word" }, - ['sp'] ={'lua require("spectre").open_file_search({select_word=true})', desc = "Search on current file" }, - - -- refactoring - ["ri"] = { function() require('refactoring').refactor('Inline Variable') end, desc = "Inverse of extract variable" }, - ["rb"] = { function() require('refactoring').refactor('Extract Block') end, desc = "Extract Block" }, - ["rbf"] = { function() require('refactoring').refactor('Extract Block To File') end, desc = "Extract Block To File" }, - ["rr"] = { function() require('telescope').extensions.refactoring.refactors() end, desc = "Prompt for a refactor to apply" }, - ["rp"] = { function() require('refactoring').debug.printf({below = false}) end, desc = "Insert print statement to mark the calling of a function" }, - ["rv"] = { function() require('refactoring').debug.print_var() end, desc = "Insert print statement to print a variable" }, - ["rc"] = { function() require('refactoring').debug.cleanup({}) end, desc = "Cleanup of all generated print statements" }, - - -- yank_history - ["yh"] = { function() require("telescope").extensions.yank_history.yank_history() end, desc = "Preview Yank History" }, - - -- undo history - ["uh"] = {"Telescope undo", desc="Telescope undo" }, - - -- implementation/definition preview - ["gpd"] = { "lua require('goto-preview').goto_preview_definition()", desc="goto_preview_definition" }, - ["gpt"] = { "lua require('goto-preview').goto_preview_type_definition()", desc="goto_preview_type_definition" }, - ["gpi"] = { "lua require('goto-preview').goto_preview_implementation()", desc="goto_preview_implementation" }, - ["gP" ] = { "lua require('goto-preview').close_all_win()", desc="close_all_win" }, - ["gpr"] = { "lua require('goto-preview').goto_preview_references()", desc="goto_preview_references" }, - }, - -- Visual mode - v = { - -- search and replace globally - ['sw'] = {'lua require("spectre").open_visual()', desc = "Search current word" }, - }, - -- visual mode(what's the difference between v and x???) - x = { - -- refactoring - ["ri"] = { function() require('refactoring').refactor('Inline Variable') end, desc = "Inverse of extract variable" }, - ["re"] = { function() require('refactoring').refactor('Extract Function') end, desc = "Extracts the selected code to a separate function" }, - ["rf"] = { function() require('refactoring').refactor('Extract Function To File') end, desc = "Extract Function To File" }, - ["rv"] = { function() require('refactoring').refactor('Extract Variable') end, desc = "Extracts occurrences of a selected expression to its own variable" }, - ["rr"] = { function() require('telescope').extensions.refactoring.refactors() end, desc = "Prompt for a refactor to apply" }, - }, -} \ No newline at end of file diff --git a/modules/home/zsh/default.nix b/modules/home/zsh/default.nix index c6440fa..ac6a71b 100644 --- a/modules/home/zsh/default.nix +++ b/modules/home/zsh/default.nix @@ -58,8 +58,10 @@ refresh = "source ~/.zshrc"; clean = "nix store gc && nix-collect-garbage -d"; - # Zellij + # Development hack = "zellij"; + vim = "hx"; + nvim = "hx"; # Others (Developer) ports = "sudo lsof -PiTCP -sTCP:LISTEN";