{ config, pkgs, ... }: { programs.neovim = { enable = true; defaultEditor = true; viAlias = true; vimAlias = true; withRuby = false; withPython3 = false; extraPackages = with pkgs; [ ripgrep ]; plugins = with pkgs.vimPlugins; [ lualine-nvim telescope-nvim plenary-nvim nvim-web-devicons neo-tree-nvim nui-nvim alpha-nvim ]; initLua = '' vim.opt.number = true vim.opt.relativenumber = false vim.opt.numberwidth = 4 vim.opt.statuscolumn = "%l %s" vim.opt.tabstop = 2 vim.opt.softtabstop = 2 vim.opt.shiftwidth = 2 vim.opt.expandtab = true vim.opt.wrap = false vim.opt.ignorecase = true vim.opt.smartcase = true vim.opt.hlsearch = false vim.opt.termguicolors = false vim.opt.signcolumn = "yes" vim.opt.scrolloff = 8 vim.opt.showmode = false vim.opt.timeoutlen = 300 vim.opt.updatetime = 250 vim.opt.foldcolumn = "0" vim.opt.directory = vim.fn.stdpath("state") .. "/swap//" vim.g.mapleader = " " vim.g.maplocalleader = " " vim.keymap.set({"n", "i"}, "", "write", {desc = "save file"}) vim.keymap.set("n", "", "quit", {desc = "quit neovim"}) vim.keymap.set("n", "", "nohlsearch", {desc = "clear search highlight"}) vim.keymap.set({"n", "x"}, "gy", '"+y', {desc = "copy to clipboard"}) vim.keymap.set({"n", "x"}, "gp", '"+p', {desc = "paste from clipboard"}) vim.keymap.set("n", "", "u", {desc = "undo"}) vim.keymap.set("i", "", "u", {desc = "undo"}) vim.keymap.set("n", "", "", {desc = "redo"}) vim.keymap.set("i", "", "", {desc = "redo"}) vim.keymap.set({"n", "i"}, "", "ggVG", {desc = "select all"}) vim.keymap.set("n", "", "Telescope current_buffer_fuzzy_find", {desc = "search buffer"}) vim.keymap.set("n", "ff", "Telescope find_files", {desc = "find files"}) vim.keymap.set("n", "fg", "Telescope live_grep", {desc = "text search"}) vim.keymap.set("n", "fb", "Telescope buffers", {desc = "find buffers"}) vim.keymap.set("n", "", "Neotree toggle", {desc = "toggle file explorer"}) vim.keymap.set("n", "", "h", {desc = "move left"}) vim.keymap.set("n", "", "j", {desc = "move down"}) vim.keymap.set("n", "", "k", {desc = "move up"}) vim.keymap.set("n", "", "l", {desc = "move right"}) vim.keymap.set("n", "", "vsplit", {desc = "vertical split"}) vim.keymap.set("n", "", "split", {desc = "horizontal split"}) vim.keymap.set("n", "", "close", {desc = "close split"}) vim.cmd.colorscheme("default") vim.opt.matchpairs = "" vim.api.nvim_set_hl(0, "MatchParen", {}) vim.cmd("highlight clear MatchParen") vim.cmd("highlight MatchParen guifg=NONE guibg=NONE gui=NONE") require("lualine").setup({ options = { icons_enabled = true, theme = "auto", component_separators = { left = "", right = "" }, section_separators = { left = "", right = "" }, }, }) require("telescope").setup({ defaults = { file_ignore_patterns = { "node_modules", ".git", "%.lock" }, layout_strategy = "horizontal", layout_config = { horizontal = { preview_width = 0.5 } }, }, }) require("neo-tree").setup({ window = { position = "right", width = 30, mappings = { ["l"] = "open", ["h"] = "close_node", [""] = "open", [""] = "revert_preview", }, }, filesystem = { filtered_items = { visible = false, hide_dotfiles = false, hide_gitignored = false, hide_by_name = { ".git", ".DS_Store", "thumbs.db" }, }, follow_current_file = { enabled = true }, }, }) local alpha = require("alpha") local dashboard = require("alpha.themes.dashboard") dashboard.section.header.val = { " ⠀⠀⠀⢀⡴⠲⣄⠀⠀⢀⡶⠲⡄⠀⣀⣀⣀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀", " ⣀⣀⣀⣾⠁⠀⠹⠿⠟⠟⠀⠀⠙⣛⣉⡻⠿⠋⣿⣷⢦⣄⠀⠀⠀⠀⠀⠀", " ⠭⠭⣽⠇⠀⠶⠀⢴⣦⠀⠶⠆⠸⠯⠭⠄⠀⠀⠀⠀⠀⠙⢧⡀⠀⢀⣤⣤", "⠀⠀ ⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢷⣤⣾⣻⡟", " ⠀⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣧⠽⠋⠀", " ⠀⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⠀⠀⠀⠀", " ⠀⠀⢷⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⡟⠀⠀⠀⠀", "⠀ ⠀⠈⠳⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⠟⠀⠀⠀⠀⠀", "⠀⠀ ⠀⠀⠉⠿⠟⠛⠛⠻⠾⠛⠛⠛⠛⠻⠟⠛⠛⠻⠾⠃⠀⠀⠀⠀⠀⠀", } dashboard.section.buttons.val = { dashboard.button("f", " > find file", "Telescope find_files"), dashboard.button("n", " > new file", "enew"), dashboard.button("r", " > recent files", "Telescope oldfiles"), dashboard.button("q", " > quit", "qa"), } alpha.setup(dashboard.opts) ''; }; }