Refactore nvim config
This commit is contained in:
@@ -22,4 +22,5 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
dot.tmux.workMode = true;
|
dot.tmux.workMode = true;
|
||||||
|
dot.nvim.workMode = true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,87 +1,96 @@
|
|||||||
{ config, pkgs, lib, ... }:
|
{ config, pkgs, lib, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.dot.nvim;
|
||||||
|
in
|
||||||
{
|
{
|
||||||
programs.neovim = {
|
options.dot.nvim = {
|
||||||
enable = true;
|
workMode = lib.mkEnableOption "work-specific neovim configuration";
|
||||||
|
|
||||||
defaultEditor = true;
|
|
||||||
vimAlias = true;
|
|
||||||
|
|
||||||
plugins = with pkgs.vimPlugins; [
|
|
||||||
vim-repeat
|
|
||||||
vim-surround
|
|
||||||
ts-comments-nvim
|
|
||||||
vim-fugitive
|
|
||||||
gitsigns-nvim
|
|
||||||
nvim-tree-lua
|
|
||||||
targets-vim
|
|
||||||
mini-pairs
|
|
||||||
mini-align
|
|
||||||
mini-bracketed
|
|
||||||
mini-splitjoin
|
|
||||||
mini-move
|
|
||||||
mini-ai
|
|
||||||
mini-icons
|
|
||||||
flash-nvim
|
|
||||||
trouble-nvim
|
|
||||||
conform-nvim
|
|
||||||
nvim-lint
|
|
||||||
promise-async
|
|
||||||
nvim-ufo
|
|
||||||
vim-windowswap
|
|
||||||
plenary-nvim
|
|
||||||
telescope-nvim
|
|
||||||
telescope-fzf-native-nvim
|
|
||||||
telescope-ui-select-nvim
|
|
||||||
yanky-nvim
|
|
||||||
lualine-nvim
|
|
||||||
undotree
|
|
||||||
luasnip
|
|
||||||
nvim-cmp
|
|
||||||
cmp_luasnip
|
|
||||||
cmp-buffer
|
|
||||||
cmp-path
|
|
||||||
cmp-cmdline
|
|
||||||
cmp-nvim-lsp
|
|
||||||
cmp-nvim-lsp-signature-help
|
|
||||||
cmp_yanky
|
|
||||||
cmp-git
|
|
||||||
nvim-lspconfig
|
|
||||||
lspkind-nvim
|
|
||||||
copilot-lua
|
|
||||||
copilot-cmp
|
|
||||||
CopilotChat-nvim
|
|
||||||
bullets-vim
|
|
||||||
nvim-dap
|
|
||||||
nvim-nio
|
|
||||||
nvim-dap-ui
|
|
||||||
nvim-dap-virtual-text
|
|
||||||
nvim-dap-go
|
|
||||||
nvim-dap-python
|
|
||||||
nvim-dap-lldb
|
|
||||||
todo-comments-nvim
|
|
||||||
vim-markdown
|
|
||||||
zen-mode-nvim
|
|
||||||
plantuml-syntax
|
|
||||||
obsidian-nvim
|
|
||||||
render-markdown-nvim
|
|
||||||
image-nvim
|
|
||||||
img-clip-nvim
|
|
||||||
vim-nix
|
|
||||||
(nvim-treesitter.withPlugins (p: [ p.awk p.bash p.c p.c_sharp p.cpp p.css p.diff p.dockerfile p.doxygen p.git_config p.gitcommit p.go p.gomod p.gosum p.gotmpl p.helm p.haskell p.html p.http p.java p.javascript p.json p.latex p.lua p.markdown p.markdown_inline p.matlab p.nix p.printf p.python p.regex p.rust p.sql p.strace p.supercollider p.svelte p.swift p.terraform p.tmux p.toml p.typescript p.vim p.xml p.yaml p.zig ]))
|
|
||||||
];
|
|
||||||
|
|
||||||
# Use extraLuaConfig for home-manager 25.11 compatibility
|
|
||||||
# (initLua was renamed from extraLuaConfig in later versions)
|
|
||||||
extraLuaConfig = builtins.concatStringsSep "\n" [
|
|
||||||
(lib.strings.fileContents ../../../nvim/base.lua)
|
|
||||||
(lib.strings.fileContents ../../../nvim/keymaps.lua)
|
|
||||||
(lib.strings.fileContents ../../../nvim/plugins.lua)
|
|
||||||
(lib.strings.fileContents ../../../nvim/filetype.lua)
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
config = {
|
||||||
nodejs-slim
|
programs.neovim = {
|
||||||
];
|
enable = true;
|
||||||
|
|
||||||
|
defaultEditor = true;
|
||||||
|
vimAlias = true;
|
||||||
|
|
||||||
|
plugins = with pkgs.vimPlugins; [
|
||||||
|
vim-repeat
|
||||||
|
vim-surround
|
||||||
|
ts-comments-nvim
|
||||||
|
vim-fugitive
|
||||||
|
gitsigns-nvim
|
||||||
|
nvim-tree-lua
|
||||||
|
targets-vim
|
||||||
|
mini-pairs
|
||||||
|
mini-align
|
||||||
|
mini-bracketed
|
||||||
|
mini-splitjoin
|
||||||
|
mini-move
|
||||||
|
mini-ai
|
||||||
|
mini-icons
|
||||||
|
flash-nvim
|
||||||
|
trouble-nvim
|
||||||
|
conform-nvim
|
||||||
|
nvim-lint
|
||||||
|
promise-async
|
||||||
|
nvim-ufo
|
||||||
|
vim-windowswap
|
||||||
|
plenary-nvim
|
||||||
|
telescope-nvim
|
||||||
|
telescope-fzf-native-nvim
|
||||||
|
telescope-ui-select-nvim
|
||||||
|
yanky-nvim
|
||||||
|
lualine-nvim
|
||||||
|
undotree
|
||||||
|
luasnip
|
||||||
|
nvim-cmp
|
||||||
|
cmp_luasnip
|
||||||
|
cmp-buffer
|
||||||
|
cmp-path
|
||||||
|
cmp-cmdline
|
||||||
|
cmp-nvim-lsp
|
||||||
|
cmp-nvim-lsp-signature-help
|
||||||
|
cmp_yanky
|
||||||
|
cmp-git
|
||||||
|
nvim-lspconfig
|
||||||
|
lspkind-nvim
|
||||||
|
copilot-lua
|
||||||
|
copilot-cmp
|
||||||
|
CopilotChat-nvim
|
||||||
|
bullets-vim
|
||||||
|
nvim-dap
|
||||||
|
nvim-nio
|
||||||
|
nvim-dap-ui
|
||||||
|
nvim-dap-virtual-text
|
||||||
|
nvim-dap-go
|
||||||
|
nvim-dap-python
|
||||||
|
nvim-dap-lldb
|
||||||
|
todo-comments-nvim
|
||||||
|
vim-markdown
|
||||||
|
zen-mode-nvim
|
||||||
|
plantuml-syntax
|
||||||
|
obsidian-nvim
|
||||||
|
render-markdown-nvim
|
||||||
|
image-nvim
|
||||||
|
img-clip-nvim
|
||||||
|
vim-nix
|
||||||
|
(nvim-treesitter.withPlugins (p: [ p.awk p.bash p.c p.c_sharp p.cpp p.css p.diff p.dockerfile p.doxygen p.git_config p.gitcommit p.go p.gomod p.gosum p.gotmpl p.helm p.haskell p.html p.http p.java p.javascript p.json p.latex p.lua p.markdown p.markdown_inline p.matlab p.nix p.printf p.python p.regex p.rust p.sql p.strace p.supercollider p.svelte p.swift p.terraform p.tmux p.toml p.typescript p.vim p.xml p.yaml p.zig ]))
|
||||||
|
];
|
||||||
|
|
||||||
|
extraLuaConfig = ''
|
||||||
|
_G.is_work = ${if cfg.workMode then "true" else "false"}
|
||||||
|
_G.is_mac = ${if pkgs.stdenv.isDarwin then "true" else "false"}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
# Symlink the nvim directory to ~/.config/nvim
|
||||||
|
# This allows for editing the config without a nix rebuild
|
||||||
|
xdg.configFile."nvim".source = config.lib.file.mkOutOfStoreSymlink "${config.home.homeDirectory}/dev/dot/nvim";
|
||||||
|
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
nodejs-slim
|
||||||
|
];
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
7
nvim/init.lua
Normal file
7
nvim/init.lua
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
-- init.lua
|
||||||
|
-- This file is managed by Nix, but requires standard Lua modules from the lua/ directory
|
||||||
|
|
||||||
|
require('base')
|
||||||
|
require('keymaps')
|
||||||
|
require('plugins')
|
||||||
|
require('filetype')
|
||||||
@@ -10,10 +10,6 @@ require('mini.move').setup()
|
|||||||
require('flash').setup()
|
require('flash').setup()
|
||||||
require('ts-comments').setup()
|
require('ts-comments').setup()
|
||||||
|
|
||||||
local function is_wsl_env()
|
|
||||||
return os.getenv("WSL_DISTRO_NAME") ~= nil or os.getenv("WSL_INTEROP") ~= nil
|
|
||||||
end
|
|
||||||
|
|
||||||
vim.g.tagbar_left=1
|
vim.g.tagbar_left=1
|
||||||
vim.g.tagbar_autoclose=1
|
vim.g.tagbar_autoclose=1
|
||||||
vim.g.tagbar_autofocus=1
|
vim.g.tagbar_autofocus=1
|
||||||
@@ -381,7 +377,7 @@ dap.configurations.zig = {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
if vim.fn.has("mac") then
|
if _G.is_mac then
|
||||||
workspaces = {
|
workspaces = {
|
||||||
{
|
{
|
||||||
name = "privat",
|
name = "privat",
|
||||||
@@ -400,7 +396,7 @@ if vim.fn.has("mac") then
|
|||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
if is_wsl_env() then
|
if _G.is_work then
|
||||||
workspaces = {
|
workspaces = {
|
||||||
{
|
{
|
||||||
name = "work",
|
name = "work",
|
||||||
Reference in New Issue
Block a user