{ config, lib, pkgs, ... }: with lib; let cfg = config.local.programs.neovim; in { options.local.programs.neovim = { enable = mkEnableOption "Neovim settings"; }; config = mkIf cfg.enable { programs.neovim = { enable = true; viAlias = true; vimAlias = true; defaultEditor = true; extraConfig = '' set nobackup set showmatch " show matching set hlsearch " highlight search set incsearch " incremental search set tabstop=4 " number of columns occupied by a tab set softtabstop=4 " see multiple spaces as tabstops so does the right thing set shiftwidth=4 " width for autoindents set autoindent " indent a new line the same amount as the line just typed set number " add line numbers set wildmode=longest,list " get bash-like tab completions set cc=80 " set an 80 column border for good coding style filetype plugin indent on " allow auto-indenting depending on file type syntax on " syntax highlighting set mouse=a " enable mouse click set clipboard=unnamedplus " using system clipboard filetype plugin on set cursorline " highlight current cursorline set ttyfast " Speed up scrolling in Vim set noswapfile " disable creating swap file ''; plugins = with pkgs.vimPlugins; [ barbar-nvim nvim-web-devicons vim-nix vim-visual-multi { plugin = nvim-tree-lua; type = "lua"; config = '' require("nvim-tree").setup({ renderer = { icons = { show = { file = true, folder = true, folder_arrow = true, git = true, }, glyphs = { git = { unstaged = "", staged = "", unmerged = "", renamed = "", untracked = "", deleted = "", ignored = "", }, }, }, }, view = { width = 30, side = 'left', }, sync_root_with_cwd = true, --fix to open cwd with tree respect_buf_cwd = true, update_cwd = true, update_focused_file = { enable = true, update_cwd = true, update_root = true, }, }) vim.g.nvim_tree_respect_buf_cwd = 1 -- use g? for bindings help while in tree ''; } { plugin = gruvbox-nvim; type = "lua"; config = '' require("gruvbox").setup({ contrast = "high", }) vim.o.background = "dark" vim.cmd([[colorscheme gruvbox]]) ''; } ]; }; home.sessionVariables = { "EDITOR" = mkForce "neovim"; }; }; }