From 23d8c67aedd34e7327d7e84bf9a54c7e47f99fc6 Mon Sep 17 00:00:00 2001 From: catvayor Date: Fri, 1 Nov 2024 15:11:35 +0100 Subject: [PATCH] feat(nvim): nixvim --- kat/users/default.nix | 3 +- kat/users/neovim/default.nix | 101 +++++++++++++++++---- kat/users/neovim/nvim.lua | 20 ----- kat/users/neovim/nvimrc | 167 ----------------------------------- npins/sources.json | 12 +++ 5 files changed, 96 insertions(+), 207 deletions(-) delete mode 100644 kat/users/neovim/nvim.lua delete mode 100644 kat/users/neovim/nvimrc diff --git a/kat/users/default.nix b/kat/users/default.nix index a864d74..d373f64 100644 --- a/kat/users/default.nix +++ b/kat/users/default.nix @@ -1,4 +1,4 @@ -{ config, lib, ... }: +{ config, lib, sources, ... }: with lib; let zsh = import ./zsh.nix; @@ -10,6 +10,7 @@ in imports = [ zsh.user ./neovim + ((import sources.nixvim).homeManagerModules.nixvim) ]; # options.kat = { # ssh = mkEnableOption "ssh configuration"; diff --git a/kat/users/neovim/default.nix b/kat/users/neovim/default.nix index da5a696..6e19f31 100644 --- a/kat/users/neovim/default.nix +++ b/kat/users/neovim/default.nix @@ -10,29 +10,92 @@ with lib; default = true; }; config = mkIf config.kat.neovim { - programs.neovim = { + programs.nixvim = { enable = true; defaultEditor = true; - plugins = with pkgs.vimPlugins; [ - (nvim-treesitter.withPlugins (_: pkgs.tree-sitter.allGrammars)) - nvim-treesitter.withAllGrammars - vim-nix - - telescope-nvim - todo-comments-nvim - - gitsigns-nvim - ]; - extraPackages = with pkgs; [ - git - ripgrep - fd - gcc - ]; - extraConfig = builtins.readFile ./nvimrc; - extraLuaConfig = builtins.readFile ./nvim.lua; + vimdiffAlias = true; vimAlias = true; viAlias = true; + colorschemes.dracula-nvim = { + enable = true; + settings = { + colors = { + bg = "#000000"; + black = "#000000"; + }; + transparent_bg = true; + overrides.__raw = '' + function (colors) return { + LineNr = { bg = "#181818", fg = colors.purple }, + CursorLine = { }, + CursorLineNr = { fg = "#FFFF00", bg = colors.black, bold = true }, + StatusLine = { fg = colors.bright_white, bg = colors.black }, + } end + ''; + }; + }; + + opts = { + foldlevelstart = 99; + number = true; + relativenumber = true; + cursorline = true; + tabstop = 2; + shiftwidth = 2; + expandtab = true; + }; + + autoCmd = [ + { + command = "set relativenumber"; + event = [ "InsertLeave" ]; + } + { + command = "set norelativenumber"; + event = [ "InsertEnter" ]; + } + ]; + + keymaps = [ + { + action = ":set number!"; + key = ""; + } + { + action = ":set relativenumber!"; + key = ""; + } + { + action = ''"*ygv''; + key = ""; + mode = [ "v" ]; + } + ]; + + plugins = { + nix.enable = true; + + treesitter = { + enable = true; + folding = true; + settings.highlight.enable = true; + }; + + telescope = { + enable = true; + keymaps = { + "ff".action = "find_files"; + "fg".action = "live_grep"; + "fb".action = "buffers"; + }; + settings.pickers.buffers.mappings = rec { + i."".__raw = "require('telescope.actions').delete_buffer"; + n = i; + }; + }; + + web-devicons.enable = true; + }; }; }; } diff --git a/kat/users/neovim/nvim.lua b/kat/users/neovim/nvim.lua deleted file mode 100644 index 56421ab..0000000 --- a/kat/users/neovim/nvim.lua +++ /dev/null @@ -1,20 +0,0 @@ -local actions = require('telescope.actions') - -require("telescope").setup { - pickers = { - buffers = { - show_all_buffers = true, - sort_lastused = true, - --theme = "dropdown", - --previewer = false, - mappings = { - i = { - [""] = actions.delete_buffer, - }, - n = { - [""] = actions.delete_buffer, - } - } - } - } -} diff --git a/kat/users/neovim/nvimrc b/kat/users/neovim/nvimrc deleted file mode 100644 index a71231c..0000000 --- a/kat/users/neovim/nvimrc +++ /dev/null @@ -1,167 +0,0 @@ -let &packpath = &runtimepath -filetype plugin indent on -syntax enable - -" Use :help 'option' to see the documentation for the given option. - -set autoindent -set backspace=indent,eol,start -set complete-=i -set smarttab - -let g:mapleader=";" - -set nrformats-=octal - -set ttimeout -set ttimeoutlen=100 - -set incsearch - -" Use to clear the highlighting of :set hlsearch. -if maparg('', 'n') ==# '' - nnoremap :nohlsearch -endif - -set laststatus=2 -set ruler -set showcmd -set wildmenu - -if !&scrolloff - set scrolloff=1 -endif -if !&sidescrolloff - set sidescrolloff=5 -endif -set display+=lastline - -if &listchars ==# 'eol:$' - set listchars=tab:>\ ,trail:-,extends:>,precedes:<,nbsp:+ -endif - -if v:version > 703 || v:version == 703 && has("patch541") - set formatoptions+=j " Delete comment character when joining commented lines -endif - -if has('path_extra') - setglobal tags-=./tags tags^=./tags; -endif - -set autoread - -if &history < 1000 - set history=1000 -endif -if &tabpagemax < 50 - set tabpagemax=50 -endif -if !empty(&viminfo) - set viminfo^=! -endif -set sessionoptions-=options - -" Allow color schemes to do bright colors without forcing bold. -if &t_Co == 8 && $TERM !~# '^linux' - set t_Co=16 -endif - -" Load matchit.vim, but only if the user hasn't installed a newer version. -if !exists('g:loaded_matchit') && findfile('plugin/matchit.vim', &rtp) ==# '' - runtime! macros/matchit.vim -endif - -inoremap u -set mouse=a -vmap "*ygv - -set tabstop=2 -set shiftwidth=2 -set expandtab - -syntax enable - -nnoremap ff Telescope find_files -nnoremap fg Telescope live_grep -nnoremap fb Telescope buffers - -" let g:coqtail_nomap = 1 -" -" function Coqfun(count, cmd) -" if a:count == 0 -" let l:count=1 -" else -" let l:count=a:count -" endif -" execute a:cmd . l:count -" endfunction -" -" map :CoqStart -" map :CoqStop -" map :call Coqfun(v:count,"CoqNext") -" map :call Coqfun(v:count,"CoqUndo") -" map :CoqToLine -" imap :call Coqfun(v:count,"CoqNext") -" imap :call Coqfun(v:count,"CoqUndo") -" imap :CoqToLine -" -" au BufRead,BufNewFile *.lus,*.ept setlocal filetype=lustre - -""""""""""""""""""""""""""""""""" Colors -nnoremap ak$ - -set background=dark -hi clear -if exists("syntax_on") - syntax reset -endif -let g:colors_name = "perso" - -set cursorline -set number -set relativenumber - -autocmd InsertEnter * set relativenumber! -autocmd InsertLeave * set relativenumber! - -map :set number! -map :set relativenumber! - -colorscheme vim -set notermguicolors - -hi Normal guifg=cyan guibg=black -hi NonText guifg=yellow guibg=#303030 -hi comment guifg=green -hi constant guifg=cyan gui=bold -hi identifier guifg=cyan gui=NONE -hi statement guifg=lightblue gui=NONE -hi preproc guifg=Pink2 -hi type guifg=seagreen gui=bold -hi special guifg=yellow -hi ErrorMsg guifg=Black guibg=Red -hi WarningMsg guifg=Black guibg=Green -hi Error guibg=Red -hi Todo guifg=Black guibg=orange -hi Cursor guibg=#60a060 guifg=#00ff00 -hi Search guibg=darkgray guifg=black gui=bold -hi IncSearch gui=NONE guibg=steelblue -hi LineNr guifg=darkgrey ctermbg=234 ctermfg=141 -hi CursorLine cterm = NONE -hi CursorLineNR cterm=NONE ctermbg=black -hi title guifg=darkgrey -hi ShowMarksHL ctermfg=cyan ctermbg=lightblue cterm=bold guifg=yellow guibg=black gui=bold -hi StatusLineNC gui=NONE guifg=lightblue guibg=darkblue -hi StatusLine gui=bold guifg=cyan guibg=blue -hi label guifg=gold2 -hi operator guifg=orange -hi clear Visual -hi Visual term=reverse cterm=reverse gui=reverse -hi DiffChange guibg=darkgreen -hi DiffText guibg=olivedrab -hi DiffAdd guibg=slateblue -hi DiffDelete guibg=coral -hi Folded guibg=gray30 -hi FoldColumn guibg=gray30 guifg=white -hi cIf0 guifg=gray -hi diffOnly guifg=red gui=bold diff --git a/npins/sources.json b/npins/sources.json index 453b42e..33e552d 100644 --- a/npins/sources.json +++ b/npins/sources.json @@ -70,6 +70,18 @@ "name": "nixpkgs-unstable", "url": "https://releases.nixos.org/nixpkgs/nixpkgs-24.11pre698484.30c9efeef01e/nixexprs.tar.xz", "hash": "079c53r3wryasv3ghyi2da9ipxh1bfh2pl63yj447bilh5ghjhhz" + }, + "nixvim": { + "type": "Git", + "repository": { + "type": "GitHub", + "owner": "nix-community", + "repo": "nixvim" + }, + "branch": "main", + "revision": "42ea1626cb002fa759a6b1e2841bfc80a4e59615", + "url": "https://github.com/nix-community/nixvim/archive/42ea1626cb002fa759a6b1e2841bfc80a4e59615.tar.gz", + "hash": "0ajfx35h4z3814p2cpbz4yh0ds948h9x8kgv7kbqnjjjlh72jgp7" } }, "version": 3