Mercurial > nixos
view modules/neovim.nix @ 1:f78c8a98f113
Add new stuff and remove useless overlay in home.nix
| author | Yasuri <yasuri@charliesmp.net> |
|---|---|
| date | Fri, 02 Oct 2026 18:58:29 -0500 |
| parents | face7f4d84f7 |
| children |
line wrap: on
line source
{ pkgs, ... }: { programs.neovim = { enable = true; defaultEditor = true; viAlias = true; vimAlias = true; plugins = with pkgs.vimPlugins; [ nvim-treesitter.withAllGrammars telescope-nvim plenary-nvim lualine-nvim gitsigns-nvim ]; extraLuaConfig = '' -- options local o = vim.opt o.number = true o.relativenumber = true o.termguicolors = true o.expandtab = true o.shiftwidth = 2 o.tabstop = 2 o.smartindent = true o.ignorecase = true o.smartcase = true o.cursorline = true o.scrolloff = 8 o.signcolumn = "yes" o.undofile = true o.mouse = "a" o.clipboard = "unnamedplus" vim.g.mapleader = " " local map = vim.keymap.set local tb = require("telescope.builtin") map("n", "<leader>ff", tb.find_files) map("n", "<leader>fg", tb.live_grep) map("n", "<leader>fb", tb.buffers) map("n", "<leader>w", "<cmd>w<cr>") map("n", "<esc>", "<cmd>nohlsearch<cr>") -- colorscheme from the wallpaper local c = { bg = "#1c1a2b", fg = "#e8e0f0", sel = "#2f2b47", gray = "#4a4668", dim = "#7a769a", pink = "#f5b0d8", rose = "#f28fad", mint = "#8fe3c8", peach = "#f5d5b8", blue = "#79a6f5", mag = "#e9a0e6", cyan = "#7fd6f5", } vim.cmd("highlight clear") vim.g.colors_name = "wall" local function hl(g, v) vim.api.nvim_set_hl(0, g, v) end -- transparent bg so st shows the wallpaper through hl("Normal", { fg = c.fg }) hl("NormalFloat", { fg = c.fg, bg = c.sel }) hl("SignColumn", {}) hl("CursorLine", { bg = c.sel }) hl("Visual", { bg = c.gray }) hl("LineNr", { fg = c.gray }) hl("CursorLineNr", { fg = c.pink, bold = true }) hl("WinSeparator", { fg = c.gray }) hl("MatchParen", { fg = c.cyan, bold = true }) hl("Search", { fg = c.bg, bg = c.peach }) hl("IncSearch", { fg = c.bg, bg = c.pink }) hl("Pmenu", { fg = c.fg, bg = c.sel }) hl("PmenuSel", { fg = c.bg, bg = c.pink }) hl("Directory", { fg = c.blue }) hl("Comment", { fg = c.dim, italic = true }) hl("Constant", { fg = c.peach }) hl("String", { fg = c.mint }) hl("Number", { fg = c.peach }) hl("Identifier", { fg = c.fg }) hl("Function", { fg = c.blue }) hl("Statement", { fg = c.pink }) hl("Type", { fg = c.cyan }) hl("PreProc", { fg = c.mag }) hl("Special", { fg = c.mag }) hl("Error", { fg = c.rose }) hl("DiagnosticError", { fg = c.rose }) hl("DiagnosticWarn", { fg = c.peach }) hl("DiagnosticInfo", { fg = c.cyan }) hl("DiagnosticHint", { fg = c.mint }) -- statusline local function mode(bg) return { a = { fg = c.bg, bg = bg, gui = "bold" }, b = { fg = c.fg, bg = c.sel }, c = { fg = c.dim }, } end require("lualine").setup({ options = { theme = { normal = mode(c.pink), insert = mode(c.mint), visual = mode(c.blue), replace = mode(c.rose), command = mode(c.peach), inactive = mode(c.gray), }, section_separators = "", component_separators = "|", }, }) require("gitsigns").setup() vim.api.nvim_create_autocmd("FileType", { callback = function(args) pcall(vim.treesitter.start, args.buf) end, }) ''; }; }
