diff --git a/modules/editors/neovim/default.nix b/modules/editors/neovim/default.nix index feecbaf..6089d82 100644 --- a/modules/editors/neovim/default.nix +++ b/modules/editors/neovim/default.nix @@ -12,124 +12,15 @@ in { }; config = lib.mkIf cfg.enable { - user.packages = with pkgs; [ - (neovim.override { - configure = { - customRC = '' - luafile ~/.config/nvim/init.lua - ''; - packages.myPlugins = with pkgs.vimPlugins; { - start = [ - (nvim-treesitter.withPlugins ( - plugins: with plugins; [ - bash - c - cmake - cpp - css - dockerfile - elm - glsl - graphql - haskell - http - html - java - javascript - jsdoc - json - json5 - latex - lua - markdown - ninja - nix - org - perl - php - pug - python - regex - rst - ruby - rust - scala - scss - toml - tsx - typescript - vim - yaml - zig - ] - )) - nvim-treesitter-context - nvim-treesitter-textobjects - nvim-lspconfig - ]; - }; - }; - }) - ] ++ + user.packages = with pkgs.unstable; [ + lunarvim + ]; - # Install appropriate language servers - (if dev.cc.enable then [ - ccls # C/C++ - ] else []) ++ - (if dev.java.enable then [ - java-language-server # Java - ltex-ls # LaTeX - ] else []) ++ - (if dev.lua.enable then [ - sumneko-lua-language-server # Lua - ] else []) ++ - (if dev.node.enable then [ - nodePackages.bash-language-server # Bash - nodePackages.dockerfile-language-server-nodejs # Dockerfile - nodePackages.graphql-language-service-cli # GraphQL - nodePackages.purescript-language-server # PureScript - nodePackages.svelte-language-server # Svelte - nodePackages.typescript-language-server # JavaScript/TypeScript - nodePackages.vim-language-server # Vim - nodePackages.vscode-langservers-extracted # HTML, CSS, JSON, ESLint - nodePackages.vue-language-server # Vue.js - nodePackages.yaml-language-server # YAML - ] else []) ++ - (if dev.python.enable then [ - cmake-language-server # CMake - python310Packages.python-lsp-server # Python - ] else []) ++ - (if dev.rust.enable then [ - rust-analyzer # Rust - ] else []) ++ - (if dev.scala.enable then [ - metals # Scala - ] else []) ++ - (if dev.zig.enable then [ - zls # Zig - ] else []); - - home.configFile = { - "nvim/init.lua".source = ./init.lua; - "nvim/lua" = { source = ./lua; recursive = true; }; - "nvim/lua/config/lsp.lua".text = '' - -- This file is autogenerated, do not edit. - ${if dev.cc.enable then "require('config.lsp.cc')\n" else ""} - ${if dev.java.enable then "require('config.lsp.java')\n" else ""} - ${if dev.lua.enable then "require('config.lsp.lua')\n" else ""} - ${if dev.node.enable then "require('config.lsp.node')\n" else ""} - ${if dev.python.enable then "require('config.lsp.python')\n" else ""} - ${if dev.rust.enable then "require('config.lsp.rust')\n" else ""} - ${if dev.scala.enable then "require('config.lsp.scala')\n" else ""} - ${if dev.zig.enable then "require('config.lsp.zig')\n" else ""} - ''; - }; - - env.EDITOR = "nvim"; + env.EDITOR = "lvim"; environment.shellAliases = { - vim = "nvim"; - v = "nvim"; + vim = "lvim"; + v = "lvim"; }; }; } diff --git a/modules/editors/neovim/init.lua b/modules/editors/neovim/init.lua deleted file mode 100644 index fe172e6..0000000 --- a/modules/editors/neovim/init.lua +++ /dev/null @@ -1,6 +0,0 @@ -require("config.core") -require("config.keymap") -require("config.treesitter") -require("config.plugins") -require("config.lsp") - diff --git a/modules/editors/neovim/lua/config/core.lua b/modules/editors/neovim/lua/config/core.lua deleted file mode 100644 index 85a75cd..0000000 --- a/modules/editors/neovim/lua/config/core.lua +++ /dev/null @@ -1,36 +0,0 @@ -local o = vim.opt -local wo = vim.wo -local bo = vim.bo - --- Global dirs -local cachedir = os.getenv("XDG_CACHE_HOME") -o.backupdir = cachedir .. "/nvim/backup/" -o.directory = cachedir .. "/nvim/swap/" -o.undodir = cachedir .. "/nvim/undo/" - --- Global -o.breakindent = true -o.clipboard = "unnamedplus" -o.compatible = false -o.encoding = "utf-8" -o.expandtab = true -o.foldlevel = 99 -o.hidden = true -o.hlsearch = false -o.ignorecase = true -o.laststatus = 2 -o.listchars = { eol = '↲', tab = '▸ ', trail = '·' } -o.relativenumber = true -o.shiftwidth = 2 -o.showmode = false -o.smartcase = true -o.smarttab = true -o.softtabstop = 2 -o.synmaxcol = 150 -o.tabstop = 4 -o.undofile = true -o.wildmenu = true - --- Window - --- Buffer diff --git a/modules/editors/neovim/lua/config/keymap.lua b/modules/editors/neovim/lua/config/keymap.lua deleted file mode 100644 index 9d42fca..0000000 --- a/modules/editors/neovim/lua/config/keymap.lua +++ /dev/null @@ -1,35 +0,0 @@ -local keymap = vim.keymap.set -local opts = { noremap = true, silent = true } - -vim.g.mapleader = "," - --- Modes --- Normal = "n", --- Insert = "i", --- Visual = "v", --- Visual Block = "x", --- Term = "t", --- Command = "c" - -keymap("n", "", "", opts) -keymap("n", "", "", opts) -keymap("n", "", "", opts) -keymap("n", "", "", opts) - -keymap("n", "", "h", { noremap = true }) -keymap("n", "", "j", { noremap = true }) -keymap("n", "", "k", { noremap = true }) -keymap("n", "", "l", { noremap = true }) - -keymap("n", "gV", "`[v`]", opts) - -keymap("n", ";", ":", { noremap = true }) - --- Bubble single lines with vim-unimpaired -keymap("n", "", "[e", opts) -keymap("n", "", "]e", opts) - --- Bubble multiple lines with vim-unimpaired -keymap("v", "", "[egv", opts) -keymap("v", "", "]egv", opts) - diff --git a/modules/editors/neovim/lua/config/lsp/cc.lua b/modules/editors/neovim/lua/config/lsp/cc.lua deleted file mode 100644 index 9e344ac..0000000 --- a/modules/editors/neovim/lua/config/lsp/cc.lua +++ /dev/null @@ -1,5 +0,0 @@ -lspconfig = require('lspconfig') - --- Requires C/C++ -lspconfig.ccls.setup{} - diff --git a/modules/editors/neovim/lua/config/lsp/java.lua b/modules/editors/neovim/lua/config/lsp/java.lua deleted file mode 100644 index 2d5c17b..0000000 --- a/modules/editors/neovim/lua/config/lsp/java.lua +++ /dev/null @@ -1,6 +0,0 @@ -lspconfig = require('lspconfig') - --- Requires Java -lspconfig.java_language_server.setup{} -lspconfig.ltex.setup{} - diff --git a/modules/editors/neovim/lua/config/lsp/lua.lua b/modules/editors/neovim/lua/config/lsp/lua.lua deleted file mode 100644 index 71bef6e..0000000 --- a/modules/editors/neovim/lua/config/lsp/lua.lua +++ /dev/null @@ -1,22 +0,0 @@ -lspconfig = require('lspconfig') - --- Requires Lua -lspconfig.sumneko_lua.setup { - settings = { - Lua = { - runtime = { - -- Tell the language server which version of Lua you're using (most likely LuaJIT in the case of Neovim) - version = 'LuaJIT', - }, - diagnostics = { - -- Get the language server to recognize the `vim` global - globals = {'vim'}, - }, - -- Do not send telemetry data containing a randomized but unique identifier - telemetry = { - enable = false, - }, - }, - }, -} - diff --git a/modules/editors/neovim/lua/config/lsp/node.lua b/modules/editors/neovim/lua/config/lsp/node.lua deleted file mode 100644 index 5d46bbe..0000000 --- a/modules/editors/neovim/lua/config/lsp/node.lua +++ /dev/null @@ -1,17 +0,0 @@ -lspconfig = require('lspconfig') - --- Requires Node.js -lspconfig.bashls.setup{} -lspconfig.cssls.setup{} -lspconfig.dockerls.setup{} -lspconfig.eslint.setup{} -lspconfig.graphql.setup{} -lspconfig.html.setup{} -lspconfig.jsonls.setup{} -lspconfig.purescriptls.setup{} -lspconfig.svelte.setup{} -lspconfig.tsserver.setup{} -lspconfig.vimls.setup{} -lspconfig.vuels.setup{} -lspconfig.yamlls.setup{} - diff --git a/modules/editors/neovim/lua/config/lsp/python.lua b/modules/editors/neovim/lua/config/lsp/python.lua deleted file mode 100644 index dce7699..0000000 --- a/modules/editors/neovim/lua/config/lsp/python.lua +++ /dev/null @@ -1,6 +0,0 @@ -lspconfig = require('lspconfig') - --- Requires Python -lspconfig.cmake.setup{} -lspconfig.pylsp.setup{} - diff --git a/modules/editors/neovim/lua/config/lsp/rust.lua b/modules/editors/neovim/lua/config/lsp/rust.lua deleted file mode 100644 index bedf56a..0000000 --- a/modules/editors/neovim/lua/config/lsp/rust.lua +++ /dev/null @@ -1,5 +0,0 @@ -lspconfig = require('lspconfig') - --- Requires Rust -lspconfig.rls.setup{} - diff --git a/modules/editors/neovim/lua/config/lsp/scala.lua b/modules/editors/neovim/lua/config/lsp/scala.lua deleted file mode 100644 index a8efb60..0000000 --- a/modules/editors/neovim/lua/config/lsp/scala.lua +++ /dev/null @@ -1,5 +0,0 @@ -lspconfig = require('lspconfig') - --- Requires Scala -lspconfig.metals.setup{} - diff --git a/modules/editors/neovim/lua/config/lsp/zig.lua b/modules/editors/neovim/lua/config/lsp/zig.lua deleted file mode 100644 index d55155f..0000000 --- a/modules/editors/neovim/lua/config/lsp/zig.lua +++ /dev/null @@ -1,5 +0,0 @@ -lspconfig = require('lspconfig') - --- Requires Zig -lspconfig.zls.setup{} - diff --git a/modules/editors/neovim/lua/config/plugins.lua b/modules/editors/neovim/lua/config/plugins.lua deleted file mode 100644 index 9784989..0000000 --- a/modules/editors/neovim/lua/config/plugins.lua +++ /dev/null @@ -1,77 +0,0 @@ -local fn = vim.fn - -local install_path = fn.stdpath "data" .. "/site/pack/packer/start/packer.nvim" -if fn.empty(fn.glob(install_path)) > 0 then - PACKER_BOOTSTRAP = fn.system { - "git", - "clone", - "--depth", - "1", - "https://github.com/wbthomason/packer.nvim", - install_path, - } - print "Installing packer close and reopen Neovim..." - vim.cmd [[packadd packer.nvim]] -end - -vim.cmd [[ - augroup packer_user_config - autocmd! - autocmd BufWritePost plugins.lua source | PackerSync - augroup end -]] - -local status_ok, packer = pcall(require, "packer") -if not status_ok then - return -end - -packer.init { - display = { - open_fn = function() - return require("packer.util").float { border = "rounded" } - end, - }, -} - -return packer.startup(function(use) - -- Utilities - use { "wbthomason/packer.nvim", opt = true } - use { "mbbill/undotree" } - use { "nvim-lua/plenary.nvim" } - use { "tpope/vim-fugitive", event = "User InGitRepo" } - - -- Editing - use { "andymass/vim-matchup" } - use { "godlygeek/tabular" } - use { "JoosepAlviste/nvim-ts-context-commentstring" } - use { "kana/vim-textobj-user" } - use { "mg979/vim-visual-multi", branch = "master" } - use { "p00f/nvim-ts-rainbow" } - use { "terryma/vim-expand-region" } - use { "tommcdo/vim-exchange", event = "VimEnter" } - use { "tpope/vim-abolish" } - use { "tpope/vim-commentary", event = "VimEnter" } - use { "tpope/vim-repeat", event = "VimEnter" } - use { "tpope/vim-surround", event = "VimEnter" } - use { "windwp/nvim-autopairs" } - use { "windwp/nvim-ts-autotag" } - - -- UI - use { "junegunn/goyo.vim" } - use { "junegunn/limelight.vim" } - use { "markonm/traces.vim" } - - -- Searching - use { "nvim-telescope/telescope.nvim", config = [[require('config.telescope')]] } - use { "cljoly/telescope-repo.nvim", requires = "telescope.nvim" } - use { "dyng/ctrlsf.vim" } - - -- LSP - use { "jose-elias-alvarez/null-ls.nvim" } - - if PACKER_BOOTSTRAP then - require("packer").sync() - end -end) - diff --git a/modules/editors/neovim/lua/config/telescope.lua b/modules/editors/neovim/lua/config/telescope.lua deleted file mode 100644 index bbd5f03..0000000 --- a/modules/editors/neovim/lua/config/telescope.lua +++ /dev/null @@ -1,46 +0,0 @@ -local status_ok, telescope = pcall(require, "telescope") -if not status_ok then - return -end - -local actions = require("telescope.actions") - -telescope.setup({ - defaults = { - file_ignore_patterns = { ".git/", "node_modules" }, - }, - mappings = { - i = { - [""] = actions.cycle_history_next, - [""] = actions.cycle_history_prev, - [""] = actions.move_selection_next, - [""] = actions.move_selection_previous, - }, - }, - extensions = { - repo = { - list = { - fd_opts = { - "--no-ignore-vcs", - }, - search_dirs = { - "~/projects", - "~/repos", - "~/workspace", - }, - }, - }, - }, -}) - -telescope.load_extension("repo") - -local keymap = vim.keymap.set -local opts = { noremap = true, silent = true } - -keymap("n", "ff", "Telescope find_files", opts) -keymap("n", "fg", "Telescope live_grep", opts) -keymap("n", "fb", "Telescope buffers", opts) -keymap("n", "fh", "Telescope help_tags", opts) -keymap("n", "fr", "Telescope repo list", opts) - diff --git a/modules/editors/neovim/lua/config/treesitter.lua b/modules/editors/neovim/lua/config/treesitter.lua deleted file mode 100644 index a95ee64..0000000 --- a/modules/editors/neovim/lua/config/treesitter.lua +++ /dev/null @@ -1,35 +0,0 @@ -require("nvim-treesitter.configs").setup({ - ignore_install = {}, - highlight = { - enable = true, - disable = {}, - }, - indent = { enable = true }, - incremental_selection = { - enable = true, - keymaps = { - init_selection = "gnn", - node_incremental = "grn", - scope_incremental = "grc", - node_decremental = "grm", - }, - }, - -- Extensions - autotag = { enable = true }, - context_commentstring = { enable = true }, - matchup = { enable = true }, - rainbow = { enable = true }, - textobjects = { - select = { - enable = true, - keymaps = { - ["af"] = "@function.outer", - ["if"] = "@function.inner", - }, - }, - }, -}) - -vim.opt.foldmethod = "expr" -vim.opt.foldexpr = "nvim_treesitter#foldexpr()" -