omniflake/home/nvim/default.nix
2025-05-16 23:08:39 +02:00

146 lines
4 KiB
Nix

{ config, pkgs, ... }:
{
imports = [ ./khard-dump.nix ];
home.packages = with pkgs; [
nodePackages.typescript-language-server
marksman
];
programs.neovim = {
extraConfig = builtins.readFile ./config.vim;
enable = true;
defaultEditor = true;
plugins = with pkgs.vimPlugins;
let
woof = pkgs.vimUtils.buildVimPlugin {
name = "woof.vim";
src = builtins.fetchGit {
url = "ssh://git@shorbut.ktiu.net/home/git/woof.vim/";
ref = "main";
rev = "9dfef63b9c0872fe14315421a1763d82818f59e8";
};
};
in
[
{
plugin = woof;
config = ''
let maplocalleader="\\"
let mapleader=" "
'';
}
cmp-nvim-lsp
cmp-buffer
cmp-emoji
cmp-path
cmp-cmdline
cmp-nvim-ultisnips
nvim-cmp
{
plugin = nvim-lspconfig;
config = builtins.readFile ./lsp.vim;
}
{
plugin = fzf-vim;
config = ''
nnoremap <leader><tab> :Buffers<return>
imap <c-x><c-f> <Plug>(fzf-complete-path)
nnoremap <leader>o :Files<return>
nnoremap <leader>O :Files ~/
nnoremap <leader>r :Read<cr>
nnoremap <leader>R :Read ~/
nnoremap <leader>a :Ag<cr>
nnoremap <leader>b :Buffers<cr>
nnoremap <leader>. :Files ~/devel/omniflake/<return>
command! -nargs=? -complete=dir Read call fzf#run(
\fzf#wrap({'sink': 'read', 'dir': <q-args>})
\)
'';
}
{
plugin = goyo;
config = ''
nnoremap yog :Goyo<return>
nnoremap [og :Goyo 80<return>
nnoremap ]og :Goyo!<return>
'';
}
{
plugin = limelight-vim;
config = ''
set termguicolors
let g:limelight_conceal_ctermfg = 'darkgray'
nnoremap yof :Limelight!!<return>
nnoremap [of :Limelight<return>
nnoremap ]of :Limelight!<return>
'';
}
{
plugin = nvim-colorizer-lua;
config = "lua require 'colorizer'.setup()";
}
{
plugin = papercolor-theme;
config = ''
set background=light
colorscheme PaperColor
'';
}
typescript-vim
{
plugin = ultisnips;
config = ''
nnoremap <leader>se :UltiSnipsEdit!<return>
'';
}
vifm-vim
{
plugin = vim-astro;
config = ''
let g:astro_typescript = 'enable'
'';
}
vim-commentary
{
plugin = vim-easy-align;
config = ''
xmap ga <Plug>(EasyAlign)
nmap ga <Plug>(EasyAlign)
'';
}
vim-fish
vim-nix
vim-repeat
{
plugin = vim-slime;
config = ''
let g:slime_target = "tmux"
let g:slime_default_config = {"socket_name": get(split($TMUX, ","), 0), "target_pane": ":.1"}
let g:slime_no_mappings = 1
let g:slime_dont_ask_default = 1
xmap s <plug>SlimeRegionSend
nmap s <plug>SlimeMotionSend
nmap ss <plug>SlimeLineSend
nnoremap s: :SlimeSend1
" let g:slime_target = "neovim"
" autocmd TermOpen * let g:slime_default_config = {"jobid": &channel}
'';
}
vim-snippets
vim-speeddating
vim-surround
vim-unimpaired
];
};
xdg.configFile."nvim/autocommmands.vim".source = ./autocommands.vim;
xdg.configFile."nvim/ftplugin/markdown.vim".source = ./ftplugin/markdown.vim;
xdg.configFile."nvim/after/ftplugin/markdown.vim".source = ./after/ftplugin/markdown.vim;
xdg.configFile."nvim/ftplugin/r.vim".source = ./ftplugin/r.vim;
xdg.configFile."nvim/ftplugin/rmd.vim".source = ./ftplugin/rmd.vim;
xdg.configFile."nvim/ftplugin/tex.vim".source = ./ftplugin/tex.vim;
xdg.configFile."nvim/ftplugin/typescript.vim".source = ./ftplugin/typescript.vim;
xdg.configFile."nvim/syntax/rmd.vim".source = ./syntax/rmd.vim;
}