extract neovim
This commit is contained in:
parent
be3aecc343
commit
a93abe6f04
13 changed files with 113 additions and 101 deletions
|
|
@ -29,6 +29,7 @@ let
|
||||||
in {
|
in {
|
||||||
imports = [
|
imports = [
|
||||||
./graphical.nix
|
./graphical.nix
|
||||||
|
../../lib/programs/home/neovim/.
|
||||||
];
|
];
|
||||||
|
|
||||||
programs.home-manager.enable = true;
|
programs.home-manager.enable = true;
|
||||||
|
|
@ -52,6 +53,7 @@ in {
|
||||||
yt-dlp
|
yt-dlp
|
||||||
playerctl
|
playerctl
|
||||||
neofetch
|
neofetch
|
||||||
|
tree
|
||||||
];
|
];
|
||||||
|
|
||||||
programs.fish = {
|
programs.fish = {
|
||||||
|
|
|
||||||
|
|
@ -7,8 +7,6 @@
|
||||||
with lib; let
|
with lib; let
|
||||||
editor = config.programs.editor;
|
editor = config.programs.editor;
|
||||||
pkg = editor.package;
|
pkg = editor.package;
|
||||||
terminal = config.programs.terminal.package;
|
|
||||||
termcmd = "${terminal}/bin/${terminal.pname}";
|
|
||||||
menu = config.programs.menu.package + config.programs.menu.dmenuCommand;
|
menu = config.programs.menu.package + config.programs.menu.dmenuCommand;
|
||||||
in {
|
in {
|
||||||
options.programs = {
|
options.programs = {
|
||||||
|
|
@ -27,67 +25,15 @@ in {
|
||||||
programs.vscode = {
|
programs.vscode = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = editor.package;
|
package = editor.package;
|
||||||
extensions =
|
extensions = [];
|
||||||
if editor.neovim
|
userSettings = {
|
||||||
then
|
"keyboard.dispatch" = "keyCode";
|
||||||
with pkgs; [
|
"terminal.integrated.sendKeybindingsToShell" = true;
|
||||||
vscode-extensions.asvetliakov.vscode-neovim
|
"aws.telemetry" = false;
|
||||||
]
|
"gitlens.telemetry.enabled" = false;
|
||||||
else [];
|
"redhat.telemetry.enabled" = false;
|
||||||
userSettings =
|
"cSpell.language" = "en,en-GB";
|
||||||
{
|
};
|
||||||
"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;
|
|
||||||
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
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
@ -99,12 +45,7 @@ in {
|
||||||
code_dir=~/Documents/code
|
code_dir=~/Documents/code
|
||||||
cd $code_dir
|
cd $code_dir
|
||||||
repo=$({ ls && echo clone-repo; } | ${menu})
|
repo=$({ ls && echo clone-repo; } | ${menu})
|
||||||
case $repo in
|
[ -e "$repo" ] && ${pkg}/bin/${pkg.executableName} $repo
|
||||||
clone-repo)
|
|
||||||
url=$(wl-paste)
|
|
||||||
${termcmd} -e -- git clone "$url" ;;
|
|
||||||
*) [ -e "$repo" ] && ${pkg}/bin/${pkg.executableName} $repo ;;
|
|
||||||
esac
|
|
||||||
'';
|
'';
|
||||||
install = false;
|
install = false;
|
||||||
hotkeys = [{key = "C";}];
|
hotkeys = [{key = "C";}];
|
||||||
|
|
|
||||||
|
|
@ -1,19 +0,0 @@
|
||||||
vim.g.mapleader = ' '
|
|
||||||
vim.g.maplocalleader = ' '
|
|
||||||
vim.o.relativenumber = true
|
|
||||||
vim.o.signcolumn = 'yes'
|
|
||||||
vim.o.tabstop = 2
|
|
||||||
vim.o.shiftwidth = 2
|
|
||||||
vim.o.expandtab = true
|
|
||||||
vim.o.smartindent = true
|
|
||||||
vim.o.hlsearch = false
|
|
||||||
vim.o.scrolloff = 6
|
|
||||||
|
|
||||||
vim.keymap.set("v", "J", ":m '>+1<CR>gv=gv")
|
|
||||||
vim.keymap.set("v", "K", ":m '<-2<CR>gv=gv")
|
|
||||||
|
|
||||||
vim.keymap.set("x", "p", "\"_dP")
|
|
||||||
|
|
||||||
vim.keymap.set("n", "<leader>y", "\"+y")
|
|
||||||
vim.keymap.set("v", "<leader>y", "\"+y")
|
|
||||||
|
|
||||||
|
|
@ -15,6 +15,7 @@ with lib; let
|
||||||
modifier = mkOption {
|
modifier = mkOption {
|
||||||
description = "modifiers for the key";
|
description = "modifiers for the key";
|
||||||
default = "SUPER";
|
default = "SUPER";
|
||||||
|
example = "SUPER_SHIFT";
|
||||||
};
|
};
|
||||||
args = mkOption {
|
args = mkOption {
|
||||||
description = "args for the script when use this key";
|
description = "args for the script when use this key";
|
||||||
|
|
|
||||||
28
lib/programs/home/neovim/config.lua
Normal file
28
lib/programs/home/neovim/config.lua
Normal file
|
|
@ -0,0 +1,28 @@
|
||||||
|
vim.g.mapleader = ' '
|
||||||
|
vim.g.maplocalleader = ' '
|
||||||
|
vim.o.relativenumber = true
|
||||||
|
vim.o.signcolumn = 'yes'
|
||||||
|
vim.o.tabstop = 2
|
||||||
|
vim.o.shiftwidth = 2
|
||||||
|
vim.o.expandtab = true
|
||||||
|
vim.o.smartindent = true
|
||||||
|
vim.o.hlsearch = false
|
||||||
|
vim.o.scrolloff = 4
|
||||||
|
|
||||||
|
vim.keymap.set("v", "J", ":m '>+1<CR>gv=gv")
|
||||||
|
vim.keymap.set("v", "K", ":m '<-2<CR>gv=gv")
|
||||||
|
|
||||||
|
vim.keymap.set("x", "p", "\"_dP")
|
||||||
|
|
||||||
|
vim.keymap.set("n", "<leader>y", "\"+y")
|
||||||
|
vim.keymap.set("v", "<leader>y", "\"+y")
|
||||||
|
|
||||||
|
-- Global mappings.
|
||||||
|
-- See `:help vim.diagnostic.*` for documentation on any of the below functions
|
||||||
|
vim.keymap.set('n', '<leader>e', vim.diagnostic.open_float)
|
||||||
|
vim.keymap.set('n', '[d', vim.diagnostic.goto_prev)
|
||||||
|
vim.keymap.set('n', ']d', vim.diagnostic.goto_next)
|
||||||
|
vim.keymap.set('n', '<leader>q', vim.diagnostic.setloclist)
|
||||||
|
|
||||||
|
vim.keymap.set('v', '<C-c>', '"+y')
|
||||||
|
vim.keymap.set('i', '<C-v>', '<escape>"+p')
|
||||||
51
lib/programs/home/neovim/default.nix
Normal file
51
lib/programs/home/neovim/default.nix
Normal file
|
|
@ -0,0 +1,51 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
programs.neovim = {
|
||||||
|
enable = true;
|
||||||
|
defaultEditor = true;
|
||||||
|
extraLuaConfig = ''
|
||||||
|
${builtins.readFile ./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 ./lspconfig.lua;
|
||||||
|
}
|
||||||
|
firenvim
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.vscode = {
|
||||||
|
extensions = [ pkgs.vscode-extensions.asvetliakov.vscode-neovim ];
|
||||||
|
userSettings = {
|
||||||
|
"vscode-neovim.neovimExecutablePaths.linux" = "${pkgs.neovim}/bin/nvim";
|
||||||
|
"extensions.experimental.affinity" = {
|
||||||
|
"asvetliakov.vscode-neovim" = 1;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -16,16 +16,6 @@ lspconfig.eslint.setup {
|
||||||
lspconfig.gopls.setup {}
|
lspconfig.gopls.setup {}
|
||||||
lspconfig.nil_ls.setup {}
|
lspconfig.nil_ls.setup {}
|
||||||
|
|
||||||
-- Global mappings.
|
|
||||||
-- See `:help vim.diagnostic.*` for documentation on any of the below functions
|
|
||||||
vim.keymap.set('n', '<leader>e', vim.diagnostic.open_float)
|
|
||||||
vim.keymap.set('n', '[d', vim.diagnostic.goto_prev)
|
|
||||||
vim.keymap.set('n', ']d', vim.diagnostic.goto_next)
|
|
||||||
vim.keymap.set('n', '<leader>q', vim.diagnostic.setloclist)
|
|
||||||
|
|
||||||
vim.keymap.set('v', '<C-c>', '"+y')
|
|
||||||
vim.keymap.set('i', '<C-v>', '<escape>"+p')
|
|
||||||
|
|
||||||
-- Use LspAttach autocommand to only map the following keys
|
-- Use LspAttach autocommand to only map the following keys
|
||||||
-- after the language server attaches to the current buffer
|
-- after the language server attaches to the current buffer
|
||||||
vim.api.nvim_create_autocmd('LspAttach', {
|
vim.api.nvim_create_autocmd('LspAttach', {
|
||||||
|
|
@ -15,8 +15,8 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
home-manager.users.${user}.imports = [
|
home-manager.users.${user}.imports = [
|
||||||
(import ./swaylock.nix)
|
(import ./home/swaylock.nix)
|
||||||
(import ./swayidle.nix)
|
(import ./home/swayidle.nix)
|
||||||
{
|
{
|
||||||
xdg.portal = {
|
xdg.portal = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
home-manager.users.${user}.imports = [
|
home-manager.users.${user}.imports = [
|
||||||
(import ./swaylock.nix)
|
(import ./home/swaylock.nix)
|
||||||
{
|
{
|
||||||
xdg.portal = {
|
xdg.portal = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,8 @@
|
||||||
lib,
|
lib,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
|
terminal = config.programs.terminal.package;
|
||||||
|
termcmd = "${terminal}/bin/${terminal.pname}";
|
||||||
my-deps = {
|
my-deps = {
|
||||||
notify-send = "${pkgs.libnotify}/bin/notify-send";
|
notify-send = "${pkgs.libnotify}/bin/notify-send";
|
||||||
playerctl = "${pkgs.playerctl}/bin/playerctl";
|
playerctl = "${pkgs.playerctl}/bin/playerctl";
|
||||||
|
|
@ -299,5 +301,21 @@ in {
|
||||||
];
|
];
|
||||||
install = false;
|
install = false;
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
name = "git clone";
|
||||||
|
text = ''
|
||||||
|
url=$(wl-paste)
|
||||||
|
${my-deps.notify-send} "Cloning $url"
|
||||||
|
${termcmd} -e -- git clone "$url"
|
||||||
|
${my-deps.notify-send} "Finished cloning $url"
|
||||||
|
'';
|
||||||
|
install = true;
|
||||||
|
hotkeys = [
|
||||||
|
{
|
||||||
|
key = "C";
|
||||||
|
modifier = "SUPER_SHIFT";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue