From e1ccc891650e3494355e5bcc70254a8e2f5fbd0b Mon Sep 17 00:00:00 2001 From: schererleander Date: Sun, 11 May 2025 02:07:58 +0200 Subject: use nvf --- modules/default.nix | 5 +- modules/neovim/default.nix | 46 ------- modules/neovim/lua/autocmds.lua | 8 -- modules/neovim/lua/init.lua | 4 - modules/neovim/lua/keymaps.lua | 0 modules/neovim/lua/options.lua | 45 ------- modules/neovim/lua/plugins.lua | 268 ---------------------------------------- modules/nixvim.nix | 13 ++ modules/nvf.nix | 90 ++++++++++++++ 9 files changed, 106 insertions(+), 373 deletions(-) delete mode 100644 modules/neovim/default.nix delete mode 100644 modules/neovim/lua/autocmds.lua delete mode 100644 modules/neovim/lua/init.lua delete mode 100644 modules/neovim/lua/keymaps.lua delete mode 100644 modules/neovim/lua/options.lua delete mode 100644 modules/neovim/lua/plugins.lua create mode 100644 modules/nixvim.nix create mode 100644 modules/nvf.nix (limited to 'modules') diff --git a/modules/default.nix b/modules/default.nix index 6449f63..e26dd1f 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -7,7 +7,6 @@ ./tmux.nix ./emacs.nix ./waybar.nix - ./neovim/default.nix ./nextcloud.nix ./spicetify.nix ./zathura.nix @@ -16,5 +15,7 @@ ./nixcord.nix ./wezterm.nix ./firefox.nix + ./nvf.nix + ./nixvim.nix ]; -} \ No newline at end of file +} diff --git a/modules/neovim/default.nix b/modules/neovim/default.nix deleted file mode 100644 index e352b57..0000000 --- a/modules/neovim/default.nix +++ /dev/null @@ -1,46 +0,0 @@ -{ config, lib, pkgs, ... }: - -let - cfg = config.neovim; -in { - options.neovim.enable = lib.mkEnableOption "Enable and setup neovim"; - - config = lib.mkIf cfg.enable { - programs.neovim = { - enable = true; - vimAlias = true; - - extraPackages = with pkgs; [ - lua-language-server - ]; - - plugins = with pkgs.vimPlugins; [ - lazy-nvim - nvim-lspconfig - friendly-snippets - telescope-nvim - - (nvim-treesitter.withPlugins (plugins: with plugins; [ - tree-sitter-bash - tree-sitter-c - tree-sitter-json - tree-sitter-lua - tree-sitter-python - tree-sitter-nix - tree-sitter-vim - tree-sitter-vimdoc - tree-sitter-yaml - tree-sitter-markdown - tree-sitter-markdown_inline - ])) - ]; - }; - - xdg.configFile."nvim/lua".source = ./lua; - - home.sessionVariables = rec { - EDITOR = "nvim"; - GIT_EDITOR = EDITOR; - }; - }; -} \ No newline at end of file diff --git a/modules/neovim/lua/autocmds.lua b/modules/neovim/lua/autocmds.lua deleted file mode 100644 index f7e6923..0000000 --- a/modules/neovim/lua/autocmds.lua +++ /dev/null @@ -1,8 +0,0 @@ -vim.cmd('highlight WinSeparator guibg=None ctermbg=None') -vim.cmd('highlight VertSplit guibg=NONE ctermbg=NONE') --- hide background lsp coloum -vim.cmd('highlight SignColumn guibg=NONE ctermbg=None') - --- transparent background -vim.cmd('highlight Normal guibg=NONE ctermbg=NONE') -vim.cmd('highlight NormalNC guibg=NONE ctermbg=NONE') diff --git a/modules/neovim/lua/init.lua b/modules/neovim/lua/init.lua deleted file mode 100644 index 2d394bf..0000000 --- a/modules/neovim/lua/init.lua +++ /dev/null @@ -1,4 +0,0 @@ -require("autocmds") -require("keymaps") -require("options") -require("plugins") diff --git a/modules/neovim/lua/keymaps.lua b/modules/neovim/lua/keymaps.lua deleted file mode 100644 index e69de29..0000000 diff --git a/modules/neovim/lua/options.lua b/modules/neovim/lua/options.lua deleted file mode 100644 index 891668f..0000000 --- a/modules/neovim/lua/options.lua +++ /dev/null @@ -1,45 +0,0 @@ -local options = { - list = false, - backup = false, -- creates a backup file - clipboard = "unnamedplus", -- allows neovim to access the system clipboard - conceallevel = 2, -- so that `` is visible in markdown files - fileencoding = "utf-8", -- the encoding written to a file - hidden = true, -- required to keep multiple buffers and open multiple buffers - hlsearch = true, -- highlight all matches on previous search pattern - ignorecase = true, -- ignore case in search patterns - mouse = "a", -- allow the mouse to be used in neovim - laststatus = 3, - showmode = false, -- we don't need to see things like -- INSERT -- anymore - smartcase = true, -- smart case - smartindent = true, -- make indenting smarter again - splitbelow = true, -- force all horizontal splits to go below current window ↕️ - splitright = true, -- force all vertical splits to go to the right of current window ↔️ - swapfile = false, -- creates a swapfile - termguicolors = true, -- set term gui colors (most terminals support this) - timeoutlen = 100, -- time to wait for a mapped sequence to complete (in milliseconds) - undofile = true, -- enable persistent undo - updatetime = 300, -- faster completion (4000ms default) ⚡ - writebackup = false, -- if a file is being edited by another program, it is not allowed to be edited - expandtab = true, -- use tabs instead of spaces ␣ - pumheight = 10, - cmdheight = 2, - shiftwidth = 2, -- the number of spaces inserted for each indentation - tabstop = 2, -- insert 2 spaces for a tab ⇥ - cursorline = false, -- highlight the current line (disabled for now) - number = false, -- set numbered lines - relativenumber = false, -- set relative numbered lines - numberwidth = 4, -- set number column width to 2 (default 4) - wrap = false, -- display lines as one long lines -} - -vim.opt.shortmess:append 'c' - -for k, v in pairs(options) do - vim.opt[k] = v -end - -vim.wo.list = false -vim.cmd 'set whichwrap+=<,>,[,],h,l' - --- lazy load -vim.loader.enable() diff --git a/modules/neovim/lua/plugins.lua b/modules/neovim/lua/plugins.lua deleted file mode 100644 index 7c2d956..0000000 --- a/modules/neovim/lua/plugins.lua +++ /dev/null @@ -1,268 +0,0 @@ -require("lazy").setup({ - { - "ellisonleao/gruvbox.nvim", - priority = 1000, - config = function () - require("gruvbox").setup({}) - vim.cmd("colorscheme gruvbox") - end - }, - - { - "hrsh7th/nvim-cmp", - dependencies = { - "neovim/nvim-lspconfig", - "hrsh7th/cmp-nvim-lsp", - "hrsh7th/cmp-buffer", - "hrsh7th/cmp-path", - "hrsh7th/cmp-cmdline", - "L3MON4D3/LuaSnip", - "onsails/lspkind-nvim" - }, - config = function() - local signs = { - Error = " ", - Warn = " ", - Hint = " ", - Info = " ", - } - for type, icon in pairs(signs) do - local hl = "DiagnosticSign" .. type - vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = hl }) - end - - local capabilities = require("cmp_nvim_lsp").default_capabilities() - - local on_attach = function(client, bufnr) - local opts = { noremap = true, silent = true, buffer = bufnr } - vim.keymap.set("n", "gd", vim.lsp.buf.definition, opts) - vim.keymap.set("n", "K", vim.lsp.buf.hover, opts) - vim.keymap.set("n", "gi", vim.lsp.buf.implementation, opts) - vim.keymap.set("n", "", vim.lsp.buf.signature_help, opts) - vim.keymap.set("n", "wa", vim.lsp.buf.add_workspace_folder, opts) - vim.keymap.set("n", "wr", vim.lsp.buf.remove_workspace_folder, opts) - vim.keymap.set("n", "wl", function() - print(vim.inspect(vim.lsp.buf.list_workspace_folders())) - end, opts) - vim.keymap.set("n", "D", vim.lsp.buf.type_definition, opts) - vim.keymap.set("n", "rn", vim.lsp.buf.rename, opts) - vim.keymap.set("n", "ca", vim.lsp.buf.code_action, opts) - vim.keymap.set("n", "gr", vim.lsp.buf.references, opts) - vim.keymap.set("n", "e", vim.diagnostic.open_float, opts) - vim.keymap.set("n", "[d", vim.diagnostic.goto_prev, opts) - vim.keymap.set("n", "]d", vim.diagnostic.goto_next, opts) - vim.keymap.set("n", "q", vim.diagnostic.setloclist, opts) - end - - local lspconfig = require("lspconfig") - - lspconfig.lua_ls.setup({ - capabilities = capabilities, - on_attach = on_attach, - settings = { - Lua = { - diagnostics = { - globals = { "vim" }, - }, - workspace = { - library = vim.api.nvim_get_runtime_file("", true), - }, - telemetry = { - enable = false, - }, - }, - }, - }) - - local cmp = require("cmp") - local luasnip = require("luasnip") - local lspkind = require("lspkind") - require("luasnip.loaders.from_vscode").lazy_load() - - cmp.setup({ - snippet = { - expand = function(args) - luasnip.lsp_expand(args.body) - end, - }, - mapping = cmp.mapping.preset.insert({ - [""] = cmp.mapping.scroll_docs(-4), - [""] = cmp.mapping.scroll_docs(4), - [""] = cmp.mapping.complete(), - [""] = cmp.mapping.close(), - [""] = cmp.mapping.confirm({ - behavior = cmp.ConfirmBehavior.Replace, - select = true, - }), - [""] = cmp.mapping(function(fallback) - if cmp.visible() then - cmp.select_next_item() - elseif luasnip.expand_or_jumpable() then - luasnip.expand_or_jump() - else - fallback() - end - end, { "i", "s" }), - [""] = cmp.mapping(function(fallback) - if cmp.visible() then - cmp.select_prev_item() - elseif luasnip.jumpable(-1) then - luasnip.jump(-1) - else - fallback() - end - end, { "i", "s" }), - }), - formatting = { - format = lspkind.cmp_format({ - mode = "symbol_text", - maxwidth = 50, - ellipsis_char = "..." - }), - }, - sources = { - { name = "nvim_lsp" }, - { name = "luasnip" }, - { name = "buffer" }, - { name = "path" }, - }, - }) - - cmp.setup.filetype('gitcommit', { - sources = cmp.config.sources({ - { name = 'buffer' }, - }) - }) - - cmp.setup.cmdline(':', { - mapping = cmp.mapping.preset.cmdline(), - sources = cmp.config.sources({ - { name = 'path' } - }, { - { name = 'cmdline' } - }) - }) - end, - }, - - { - "nvim-treesitter/nvim-treesitter", - build = ":TSUpdate", - event = "BufRead", - config = function() - require("nvim-treesitter.configs").setup({ - auto_install = true, - ensure_installed = { "c", "lua", "vim", "python", "java", "javascript", "typescript", "css", "html" }, - highlight = { enable = true, use_languagetree = true }, - indent = { enable = true }, - }) - end, - }, - - { - "nvim-tree/nvim-tree.lua", - enabled = false, - config = function() - require("nvim-tree").setup({ - view = { width = 20, side = "left" }, - disable_netrw = true, - hijack_cursor = true, - update_cwd = true, - hijack_directories = { auto_open = true }, - renderer = { - root_folder_label = false, - indent_markers = { - enable = true, - icons = { corner = "└ ", edge = "│ ", none = " " }, - }, - }, - }) - end, - }, - - { - "nvim-telescope/telescope.nvim", - dependencies = { "nvim-lua/plenary.nvim" }, - keys = { - { "", ":silent Telescope current_buffer_fuzzy_find", desc = "Open Telescope" }, - }, - config = function() - require("telescope").setup({ - defaults = { mapping = {} }, - pickers = {}, - extensions = {}, - }) - end, - }, - - { - "lewis6991/gitsigns.nvim", - config = function() - require("gitsigns").setup() - end, - }, - - { - "echasnovski/mini.nvim", - version = false, - dependencies = { "nvim-tree/nvim-web-devicons" }, - config = function() - require("mini.starter").setup({ - header = table.concat({ - " /l、 ", - "(゚、 。 7 ", - " l ~ ヽ ", - " じしf_,)ノ ", - }, "\n"), - footer = "", - content_hooks = { - require("mini.starter").gen_hook.adding_bullet("» "), - require("mini.starter").gen_hook.aligning("center", "center"), - }, - }) - end, - }, - - { - "windwp/nvim-autopairs", - event = "InsertEnter", - config = function() - require("nvim-autopairs").setup {} - end, - }, - - { - "tamton-aquib/staline.nvim", - dependencies = { "nvim-tree/nvim-web-devicons" }, - config = function() - require("staline").setup { - sections = { - left = { 'file_name', 'branch' }, - mid = { 'lsp' }, - right = { 'line_column' }, - }, - special_table = { - NvimTree = { 'NvimTree', ' ' }, - packer = { 'Packer', ' ' }, - starter = { '', '' }, - lazy = { '', '' }, - mason = { '', '' }, - }, - lsp_symbols = { - Error = " ", - Info = " ", - Warn = " ", - Hint = "", - }, - defaults = { - true_colors = true, - line_column = ' ☰ %l/%L %c', - branch_symbol = " ", - exclude_fts = { 'NvimTree' }, - }, - } - vim.cmd('highlight Statusline guibg=none') - vim.cmd('highlight StatuslineNC guibg=none') - end, - }, -}) diff --git a/modules/nixvim.nix b/modules/nixvim.nix new file mode 100644 index 0000000..dd418b2 --- /dev/null +++ b/modules/nixvim.nix @@ -0,0 +1,13 @@ +{ config, lib, pkgs, ... }: + +let + cfg = config.nixvim; +in { + options.nixvim.enable = lib.mkEnableOption "Setup nixvim"; + + config = lib.mkIf cfg.enable { + programs.nixvim = { + enable = true; + }; + }; +} diff --git a/modules/nvf.nix b/modules/nvf.nix new file mode 100644 index 0000000..791b211 --- /dev/null +++ b/modules/nvf.nix @@ -0,0 +1,90 @@ +{ config, lib, pkgs, ... }: + +let + cfg = config.nvf; +in { + options.nvf.enable = lib.mkEnableOption "Setup nvf"; + + config = lib.mkIf cfg.enable { + programs.nvf = { + enable = true; + settings = { + vim = { + theme.enable = true; + theme.name = "gruvbox"; + theme.transparent = true; + theme.style = "dark"; + + options = { + tabstop = 2; + shiftwidth = 2; + expandtab = true; + autoindent = true; + mouse = "a"; + }; + + telescope.enable = true; + autocomplete.nvim-cmp.enable = true; + + mini = { + starter = { + enable = true; + setupOpts = { + header = " /l、 \n" + + "(゚、 。 7 \n" + + " l ~ ヽ \n" + + " じしf_,)ノ \n"; + footer = " "; + }; + }; + }; + + autopairs.nvim-autopairs = { + enable = true; + }; + + git.enable = true; + + lsp = { + enable = true; + + formatOnSave = true; + lspkind.enable = true; + }; + + languages = { + enableTreesitter = true; + + nix.enable = true; + }; + + visuals = { + nvim-web-devicons.enable = true; + }; + + snippets.luasnip.enable = true; + + binds = { + whichKey.enable = true; + cheatsheet.enable = true; + }; + + ui = { + borders.enable = false; + }; + + autocmds = [ + { + enable = true; + event = ["VimEnter"]; + command = "highlight Statusline guibg=none | highlight StatuslineNC guibg=none"; + desc = "Transparent statusline"; + } + ]; + + statusline.lualine.enable = true; + }; + }; + }; + }; +} -- cgit v1.3.1