neovim lspconfig
This commit is contained in:
parent
fb5c04a84a
commit
34aaaf63d2
29 changed files with 1705 additions and 1399 deletions
|
|
@ -1,13 +1,16 @@
|
|||
{ user }: { lib, pkgs, config, ... }:
|
||||
with lib;
|
||||
let
|
||||
{user}: {
|
||||
lib,
|
||||
pkgs,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib; let
|
||||
editor = config.programs.editor;
|
||||
pkg = editor.package;
|
||||
terminal = config.programs.terminal.package;
|
||||
termcmd = "${terminal}/bin/${terminal.pname}";
|
||||
menu = config.programs.menu.package + config.programs.menu.dmenuCommand;
|
||||
in
|
||||
{
|
||||
in {
|
||||
options.programs = {
|
||||
editor = {
|
||||
enable = mkEnableOption "editor";
|
||||
|
|
@ -19,92 +22,93 @@ in
|
|||
};
|
||||
|
||||
config = mkIf editor.enable {
|
||||
home-manager.users.${user}.imports = [{
|
||||
programs.vscode = {
|
||||
enable = true;
|
||||
package = editor.package;
|
||||
extensions =
|
||||
if editor.neovim then with pkgs; [
|
||||
vscode-extensions.asvetliakov.vscode-neovim
|
||||
] else [ ];
|
||||
userSettings = {
|
||||
"keyboard.dispatch" = "keyCode";
|
||||
"terminal.integrated.sendKeybindingsToShell" = true;
|
||||
"aws.telemetry" = false;
|
||||
"gitlens.telemetry.enabled" = false;
|
||||
"redhat.telemetry.enabled" = false;
|
||||
"cSpell.language" = "en,en-GB";
|
||||
} // (if editor.neovim then {
|
||||
"vscode-neovim.neovimExecutablePaths.linux" = "${pkgs.neovim}/bin/nvim";
|
||||
"extensions.experimental.affinity" = {
|
||||
"asvetliakov.vscode-neovim" = 1;
|
||||
};
|
||||
} else { });
|
||||
};
|
||||
|
||||
programs.neovim = mkIf editor.neovim {
|
||||
enable = true;
|
||||
defaultEditor = true;
|
||||
coc = {
|
||||
home-manager.users.${user}.imports = [
|
||||
{
|
||||
programs.vscode = {
|
||||
enable = true;
|
||||
settings = {
|
||||
languageserver = {
|
||||
go = {
|
||||
command = "${pkgs.gopls}/bin/gopls";
|
||||
filetypes = [ "go" ];
|
||||
};
|
||||
nix = {
|
||||
command = "${pkgs.rnix-lsp}/bin/rnix-lsp";
|
||||
filetypes = [ "nix" ];
|
||||
};
|
||||
typescript = {
|
||||
command = "${pkgs.nodePackages.typescript-language-server}/bin/typescript-language-server";
|
||||
filetypes = [ "ts" "tsx" ];
|
||||
};
|
||||
};
|
||||
};
|
||||
package = editor.package;
|
||||
extensions =
|
||||
if editor.neovim
|
||||
then
|
||||
with pkgs; [
|
||||
vscode-extensions.asvetliakov.vscode-neovim
|
||||
]
|
||||
else [];
|
||||
userSettings =
|
||||
{
|
||||
"keyboard.dispatch" = "keyCode";
|
||||
"terminal.integrated.sendKeybindingsToShell" = true;
|
||||
"aws.telemetry" = false;
|
||||
"gitlens.telemetry.enabled" = false;
|
||||
"redhat.telemetry.enabled" = false;
|
||||
"cSpell.language" = "en,en-GB";
|
||||
}
|
||||
// (
|
||||
if editor.neovim
|
||||
then {
|
||||
"vscode-neovim.neovimExecutablePaths.linux" = "${pkgs.neovim}/bin/nvim";
|
||||
"extensions.experimental.affinity" = {
|
||||
"asvetliakov.vscode-neovim" = 1;
|
||||
};
|
||||
}
|
||||
else {}
|
||||
);
|
||||
};
|
||||
extraConfig = ''
|
||||
vnoremap * y/\V<C-R>=escape(@",'/\')<CR><CR>
|
||||
vnoremap <C-R> "ry:%s/<C-R>=escape(@r,'/\')<CR>
|
||||
vnoremap A :norm A
|
||||
noremap <C-S-I> :CocCommand editor.action.formatDocument<CR>
|
||||
set number
|
||||
set rnu
|
||||
set ignorecase
|
||||
set smartcase
|
||||
set mouse=a
|
||||
set path=.,**
|
||||
let g:netrw_banner=0
|
||||
let g:netrw_liststyle=3
|
||||
set undofile
|
||||
set undodir=~/.local/share/nvim/undo
|
||||
|
||||
programs.neovim = mkIf editor.neovim {
|
||||
enable = true;
|
||||
defaultEditor = true;
|
||||
extraLuaConfig = ''
|
||||
${builtins.readFile ./neovim/config.lua}
|
||||
'';
|
||||
extraPackages = with pkgs; [
|
||||
nodePackages_latest.typescript-language-server
|
||||
vscode-langservers-extracted
|
||||
gopls
|
||||
nil
|
||||
];
|
||||
plugins = with pkgs.vimPlugins; [
|
||||
vim-surround
|
||||
vim-commentary
|
||||
{
|
||||
plugin = telescope-nvim;
|
||||
type = "lua";
|
||||
config = ''
|
||||
local builtin = require('telescope.builtin')
|
||||
vim.keymap.set('n', '<leader>ff', builtin.find_files, {})
|
||||
vim.keymap.set('n', '<leader>fg', builtin.live_grep, {})
|
||||
vim.keymap.set('n', '<leader>fb', builtin.buffers, {})
|
||||
vim.keymap.set('n', '<leader>fh', builtin.help_tags, {})
|
||||
'';
|
||||
}
|
||||
{
|
||||
plugin = nvim-lspconfig;
|
||||
type = "lua";
|
||||
config = builtins.readFile ./neovim/lspconfig.lua;
|
||||
}
|
||||
firenvim
|
||||
];
|
||||
};
|
||||
}
|
||||
];
|
||||
|
||||
programs.scripts = [
|
||||
{
|
||||
name = "open-code";
|
||||
text = ''
|
||||
code_dir=~/Documents/code
|
||||
cd $code_dir
|
||||
repo=$({ ls && echo clone-repo; } | ${menu})
|
||||
case $repo in
|
||||
clone-repo)
|
||||
url=$(wl-paste)
|
||||
${termcmd} -e -- git clone "$url" ;;
|
||||
*) [ -e "$repo" ] && ${pkg}/bin/${pkg.executableName} $repo ;;
|
||||
esac
|
||||
'';
|
||||
plugins = with pkgs.vimPlugins; [
|
||||
vim-surround
|
||||
vim-commentary
|
||||
firenvim
|
||||
];
|
||||
};
|
||||
|
||||
}];
|
||||
|
||||
programs.scripts = [{
|
||||
name = "open-code";
|
||||
text = ''
|
||||
code_dir=~/Documents/code
|
||||
cd $code_dir
|
||||
repo=$({ ls && echo clone-repo; } | ${menu})
|
||||
case $repo in
|
||||
clone-repo)
|
||||
url=$(wl-paste)
|
||||
${termcmd} -e -- git clone "$url" ;;
|
||||
*) [ -e "$repo" ] && ${pkg}/bin/${pkg.executableName} $repo ;;
|
||||
esac
|
||||
'';
|
||||
install = false;
|
||||
hotkeys = [{ key = "C"; }];
|
||||
}];
|
||||
install = false;
|
||||
hotkeys = [{key = "C";}];
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue