Compare commits
2 commits
819aff7644
...
1679f84978
| Author | SHA1 | Date | |
|---|---|---|---|
| 1679f84978 | |||
| 29def924b3 |
9 changed files with 613 additions and 125 deletions
59
flake.lock
generated
59
flake.lock
generated
|
|
@ -35,6 +35,27 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-parts_2": {
|
||||
"inputs": {
|
||||
"nixpkgs-lib": [
|
||||
"nixvim",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1769996383,
|
||||
"narHash": "sha256-AnYjnFWgS49RlqX7LrC4uA+sCCDBj0Ry/WOJ5XWAsa0=",
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"rev": "57928607ea566b5db3ad13af0e57e921e6b12381",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"home-manager": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
|
|
@ -142,6 +163,28 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixvim": {
|
||||
"inputs": {
|
||||
"flake-parts": "flake-parts_2",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"systems": "systems"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1770630823,
|
||||
"narHash": "sha256-5SEmOnJ61vmbap39vzWEsCX5UQ+3Ul8J4mXWKdqSn3w=",
|
||||
"owner": "nix-community",
|
||||
"repo": "nixvim",
|
||||
"rev": "6acc964664ac916c64fe4e394edd467af4d90790",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "nixvim",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"easy-hosts": "easy-hosts",
|
||||
|
|
@ -149,6 +192,7 @@
|
|||
"home-manager": "home-manager",
|
||||
"niri": "niri",
|
||||
"nixpkgs": "nixpkgs",
|
||||
"nixvim": "nixvim",
|
||||
"silentSDDM": "silentSDDM",
|
||||
"sops-nix": "sops-nix"
|
||||
}
|
||||
|
|
@ -193,6 +237,21 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"systems": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"xwayland-satellite-stable": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
outputs = inputs: inputs.flake-parts.lib.mkFlake { inherit inputs; } {
|
||||
imports = with inputs; [
|
||||
easy-hosts.flakeModule
|
||||
nixvim.homeModules.nixvim
|
||||
home-manager.flakeModules.home-manager
|
||||
];
|
||||
|
||||
|
|
@ -72,6 +73,7 @@
|
|||
# inputs.lix.follows = "lix";
|
||||
# };
|
||||
|
||||
|
||||
niri = {
|
||||
type = "github";
|
||||
owner = "sodiboo";
|
||||
|
|
@ -79,6 +81,13 @@
|
|||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
nixvim = {
|
||||
type = "github";
|
||||
owner = "nix-community";
|
||||
repo = "nixvim";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
sops-nix = {
|
||||
type = "github";
|
||||
owner = "Mic92";
|
||||
|
|
|
|||
169
hmModules/apps/neovim.old/app.nix
Normal file
169
hmModules/apps/neovim.old/app.nix
Normal file
|
|
@ -0,0 +1,169 @@
|
|||
{ config, pkgs, lib, ... }:
|
||||
|
||||
{
|
||||
options.neovim = {
|
||||
enable = lib.mkEnableOption "Enables neovim";
|
||||
languages = {
|
||||
c.enable = lib.mkEnableOption "Enables c support";
|
||||
go.enable = lib.mkEnableOption "Enables go support";
|
||||
nix.enable = lib.mkEnableOption "Enables nix support";
|
||||
rust.enable = lib.mkEnableOption "Enables rust support";
|
||||
typescript.enable = lib.mkEnableOption "Enables typescript support";
|
||||
};
|
||||
themes = {
|
||||
catppuccin.enable = lib.mkEnableOption "Enables catppuccin theme";
|
||||
};
|
||||
plugins = {
|
||||
comments.enable = lib.mkEnableOption "Enables nvim-comment";
|
||||
fugitive.enable = lib.mkEnableOption "Enables git-fugitive";
|
||||
lualine.enable = lib.mkEnableOption "Enables lualine";
|
||||
luasnip.enable = lib.mkEnableOption "Enables luasnip snippets";
|
||||
nvimcmp.enable = lib.mkEnableOption "Enables nvim completion";
|
||||
telescope = {
|
||||
enable = lib.mkEnableOption "Enables telescope";
|
||||
fzf.enable = lib.mkEnableOption "Enables telescope-fzf";
|
||||
};
|
||||
treesitter.enable = lib.mkEnableOption "Enables treesitter";
|
||||
wiki.enable = lib.mkEnableOption "Enables a wiki";
|
||||
};
|
||||
};
|
||||
|
||||
imports = [
|
||||
./plugin/lsp.nix
|
||||
./plugin/nvimcmp.nix
|
||||
./plugin/telescope.nix
|
||||
./plugin/treesitter.nix
|
||||
];
|
||||
|
||||
config = lib.mkIf config.neovim.enable {
|
||||
home.sessionVariables = {
|
||||
EDITOR = "nvim";
|
||||
VISUAL = "nvim";
|
||||
};
|
||||
|
||||
programs.neovim = {
|
||||
enable = true;
|
||||
viAlias = true;
|
||||
vimAlias = true;
|
||||
vimdiffAlias = true;
|
||||
|
||||
extraLuaConfig = ''
|
||||
${builtins.readFile ./options.lua}
|
||||
'';
|
||||
|
||||
extraPackages = with pkgs; [
|
||||
(lib.mkIf config.neovim.languages.c.enable libclang)
|
||||
(lib.mkIf config.neovim.languages.go.enable gopls)
|
||||
(lib.mkIf config.neovim.languages.nix.enable nil)
|
||||
(lib.mkIf config.neovim.languages.rust.enable rust-analyzer)
|
||||
];
|
||||
|
||||
# Additional packages are added through imports
|
||||
plugins = let
|
||||
lopts = lib.lists.optionals;
|
||||
cfgp = config.neovim.plugins;
|
||||
cfgl = config.neovim.languages;
|
||||
cfgt = config.neovim.themes;
|
||||
|
||||
comments = lopts cfgp.comments.enable (with pkgs.vimPlugins; [
|
||||
{
|
||||
plugin = comment-nvim;
|
||||
type = "lua";
|
||||
config = "require(\"Comment\").setup()";
|
||||
}
|
||||
]);
|
||||
|
||||
fugitive = lopts cfgp.fugitive.enable (with pkgs.vimPlugins; [
|
||||
vim-fugitive
|
||||
]);
|
||||
|
||||
luasnip-pkg = lopts cfgp.luasnip.enable (with pkgs.vimPlugins; [
|
||||
luasnip
|
||||
friendly-snippets
|
||||
(lib.mkIf cfgp.nvimcmp.enable cmp_luasnip)
|
||||
]);
|
||||
|
||||
lualine = lopts cfgp.lualine.enable (with pkgs.vimPlugins; [
|
||||
{
|
||||
plugin = lualine-nvim;
|
||||
type = "lua";
|
||||
config = ''
|
||||
require("lualine").setup {
|
||||
options = {
|
||||
icons_enabled = true,
|
||||
'' + lib.strings.optionalString cfgt.catppuccin.enable ''
|
||||
theme = "catppuccin"
|
||||
'' + ''
|
||||
}
|
||||
}
|
||||
'';
|
||||
}
|
||||
nvim-web-devicons
|
||||
]);
|
||||
|
||||
nix-pkg = lopts cfgl.nix.enable (with pkgs.vimPlugins; [
|
||||
vim-nix
|
||||
]);
|
||||
|
||||
rust-pkg = lopts cfgl.rust.enable (with pkgs.vimPlugins; [
|
||||
{
|
||||
plugin = rustaceanvim;
|
||||
type = "lua";
|
||||
config = ''
|
||||
vim.g.rust_recommended_style = 0
|
||||
'';
|
||||
}
|
||||
]);
|
||||
|
||||
go-pkg = lopts cfgl.go.enable (with pkgs.vimPlugins; [
|
||||
go-nvim
|
||||
]);
|
||||
|
||||
typescript-pkg = lopts cfgl.typescript.enable (with pkgs.vimPlugins; [
|
||||
{
|
||||
plugin = typescript-tools-nvim;
|
||||
type = "lua";
|
||||
config = ''
|
||||
require("typescript-tools").setup {}
|
||||
'';
|
||||
}
|
||||
]);
|
||||
|
||||
catppuccin-pkg = lopts cfgt.catppuccin.enable (with pkgs.vimPlugins; [
|
||||
{
|
||||
plugin = catppuccin-nvim;
|
||||
type = "lua";
|
||||
config = ''
|
||||
vim.cmd.colorscheme "catppuccin-mocha"
|
||||
require('catppuccin').setup({
|
||||
integrations = {
|
||||
'' + lib.strings.optionalString cfgp.wiki.enable ''
|
||||
vimwiki = true
|
||||
'' + ''
|
||||
}
|
||||
})
|
||||
'';
|
||||
}
|
||||
]);
|
||||
|
||||
wiki = lopts cfgp.wiki.enable (with pkgs.vimPlugins; [
|
||||
{
|
||||
plugin = vimwiki;
|
||||
type = "lua";
|
||||
config = ''
|
||||
vim.g.vimwiki_list = {
|
||||
{
|
||||
path = '${config.xdg.userDirs.documents}/wiki',
|
||||
links_space_char = '_',
|
||||
ext = '.md',
|
||||
syntax = 'markdown',
|
||||
}
|
||||
}
|
||||
'';
|
||||
}
|
||||
]);
|
||||
in comments ++ fugitive ++ luasnip-pkg ++ lualine ++ nix-pkg ++ rust-pkg
|
||||
++ go-pkg ++ wiki ++ catppuccin-pkg ++ typescript-pkg;
|
||||
};
|
||||
};
|
||||
}
|
||||
60
hmModules/apps/neovim.old/options.lua
Normal file
60
hmModules/apps/neovim.old/options.lua
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
-- Globals
|
||||
vim.g.mapleader = ' '
|
||||
vim.g.maplocalleader = ' '
|
||||
vim.opt.list = true
|
||||
vim.bo.filetype = "on"
|
||||
vim.opt.updatetime = 300
|
||||
|
||||
-- Indentations
|
||||
vim.opt.tabstop = 2
|
||||
vim.opt.softtabstop = 0
|
||||
vim.opt.shiftwidth = 2
|
||||
vim.opt.smarttab = true
|
||||
vim.opt.expandtab = true
|
||||
|
||||
-- Style
|
||||
vim.opt.colorcolumn = "80"
|
||||
vim.opt.showmatch = true
|
||||
vim.opt.number = true
|
||||
vim.opt.relativenumber = true
|
||||
|
||||
-- Easy Split Navigation
|
||||
-- nnoremap <C-J> <C-W><C-J>
|
||||
-- nnoremap <C-K> <C-W><C-K>
|
||||
-- nnoremap <C-L> <C-W><C-L>
|
||||
-- nnoremap <C-H> <C-W><C-H>
|
||||
|
||||
-- Searching
|
||||
vim.opt.smartcase = true
|
||||
|
||||
-- Backups
|
||||
vim.opt.swapfile = false
|
||||
vim.opt.backup = false
|
||||
vim.opt.undofile = true
|
||||
vim.opt.undodir = '/home/pan/.config/nvim/undodir'
|
||||
|
||||
-- Error viewing
|
||||
vim.keymap.set('n', '<Leader>d', function() vim.diagnostic.open_float() end)
|
||||
|
||||
-- Easy copy and pasting to external programs
|
||||
-- map <C-y> "+yy
|
||||
-- map <C-p> "+P
|
||||
|
||||
-- autocmd BufRead,BufNewFile *.md call WritingMode()
|
||||
-- autocmd BufRead,BufNewFile *.tex call WritingMode()
|
||||
-- autocmd BufRead,BufNewFile *.svx call WritingMode()
|
||||
|
||||
-- autocmd BufRead,BufNewFile *.py call PythonMode()
|
||||
|
||||
-- function! WritingMode()
|
||||
-- setlocal textwidth=80
|
||||
-- setlocal wrap linebreak nolist
|
||||
-- setlocal whichwrap+=<,>,h,l
|
||||
-- nnoremap j gj
|
||||
-- nnoremap k gk
|
||||
-- setlocal spell spelllang=en_us
|
||||
-- endfunction
|
||||
-- function! PythonMode()
|
||||
-- setlocal foldmethod=indent
|
||||
-- setlocal foldlevel=99
|
||||
-- endfunction
|
||||
53
hmModules/apps/neovim.old/plugin/lsp.nix
Normal file
53
hmModules/apps/neovim.old/plugin/lsp.nix
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
{ config, pkgs, lib, ... }:
|
||||
|
||||
{
|
||||
config = lib.mkIf config.neovim.enable {
|
||||
programs.neovim.plugins = let
|
||||
cfgp = config.neovim.plugins;
|
||||
cfgl = config.neovim.languages;
|
||||
|
||||
configText = ''
|
||||
local on_attach = function(_, bufnr)
|
||||
|
||||
local bufmap = function(keys, func)
|
||||
vim.keymap.set('n', keys, func, { buffer = bufnr })
|
||||
end
|
||||
|
||||
bufmap('<leader>r', vim.lsp.buf.rename)
|
||||
bufmap('<leader>a', vim.lsp.buf.code_action)
|
||||
|
||||
bufmap('gd', vim.lsp.buf.definition)
|
||||
bufmap('gD', vim.lsp.buf.declaration)
|
||||
bufmap('gI', vim.lsp.buf.implementation)
|
||||
bufmap('<leader>D', vim.lsp.buf.type_definition)
|
||||
|
||||
'' + lib.strings.optionalString cfgp.telescope.enable ''
|
||||
bufmap('gr', require('telescope.builtin').lsp_references)
|
||||
bufmap('<leader>s', require('telescope.builtin').lsp_document_symbols)
|
||||
bufmap('<leader>S', require('telescope.builtin').lsp_dynamic_workspace_symbols)
|
||||
'' + ''
|
||||
|
||||
bufmap('K', vim.lsp.buf.hover)
|
||||
|
||||
vim.api.nvim_buf_create_user_command(bufnr, 'Format', function(_)
|
||||
vim.lsp.buf.format()
|
||||
end, {})
|
||||
end
|
||||
|
||||
local capabilities = vim.lsp.protocol.make_client_capabilities()
|
||||
'' + lib.strings.optionalString cfgl.c.enable ''
|
||||
require('lspconfig').clangd.setup {}
|
||||
'' + lib.strings.optionalString cfgl.go.enable ''
|
||||
require('lspconfig').gopls.setup {}
|
||||
'' + lib.strings.optionalString cfgl.nix.enable ''
|
||||
require('lspconfig').nil_ls.setup {}
|
||||
'';
|
||||
in with pkgs.vimPlugins; [
|
||||
{
|
||||
plugin = nvim-lspconfig;
|
||||
type = "lua";
|
||||
config = configText;
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
72
hmModules/apps/neovim.old/plugin/nvimcmp.nix
Normal file
72
hmModules/apps/neovim.old/plugin/nvimcmp.nix
Normal file
|
|
@ -0,0 +1,72 @@
|
|||
{ config, pkgs, lib, ... }:
|
||||
|
||||
let
|
||||
cfgp = config.neovim.plugins;
|
||||
in {
|
||||
config = lib.mkIf (config.neovim.enable && cfgp.nvimcmp.enable) {
|
||||
programs.neovim.plugins = let
|
||||
|
||||
configText = ''
|
||||
local cmp = require('cmp')
|
||||
'' + lib.strings.optionalString cfgp.luasnip.enable ''
|
||||
local luasnip = require('luasnip')
|
||||
|
||||
require('luasnip.loaders.from_vscode').lazy_load()
|
||||
luasnip.config.setup {}
|
||||
'' + ''
|
||||
|
||||
cmp.setup {
|
||||
mapping = cmp.mapping.preset.insert {
|
||||
['<C-n>'] = cmp.mapping.select_next_item(),
|
||||
['<C-p>'] = cmp.mapping.select_prev_item(),
|
||||
['<C-d>'] = cmp.mapping.scroll_docs(-4),
|
||||
['<C-f>'] = cmp.mapping.scroll_docs(4),
|
||||
['<C-Space>'] = cmp.mapping.complete {},
|
||||
['<CR>'] = cmp.mapping.confirm {
|
||||
behavior = cmp.ConfirmBehavior.Replace,
|
||||
select = true,
|
||||
},
|
||||
['<Tab>'] = cmp.mapping(function(fallback)
|
||||
if cmp.visible() then
|
||||
cmp.select_next_item()
|
||||
'' + lib.strings.optionalString cfgp.luasnip.enable ''
|
||||
elseif luasnip.expand_or_locally_jumpable() then
|
||||
luasnip.expand_or_jump()
|
||||
'' + ''
|
||||
else
|
||||
fallback()
|
||||
end
|
||||
end, { 'i', 's' }),
|
||||
['<S-Tab>'] = cmp.mapping(function(fallback)
|
||||
if cmp.visible() then
|
||||
cmp.select_prev_item()
|
||||
'' + lib.strings.optionalString cfgp.luasnip.enable ''
|
||||
elseif luasnip.locally_jumpable(-1) then
|
||||
luasnip.jump(-1)
|
||||
'' + ''
|
||||
else
|
||||
fallback()
|
||||
end
|
||||
end, { 'i', 's' }),
|
||||
},
|
||||
'' + lib.strings.optionalString cfgp.luasnip.enable ''
|
||||
snippet = {
|
||||
expand = function(args)
|
||||
luasnip.lsp_expand(args.body)
|
||||
end,
|
||||
},
|
||||
sources = {
|
||||
{ name = 'luasnip' },
|
||||
},
|
||||
'' + ''
|
||||
}
|
||||
'';
|
||||
in with pkgs.vimPlugins; [
|
||||
{
|
||||
plugin = nvim-cmp;
|
||||
type = "lua";
|
||||
config = configText;
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
43
hmModules/apps/neovim.old/plugin/telescope.nix
Normal file
43
hmModules/apps/neovim.old/plugin/telescope.nix
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
{ config, pkgs, lib, ... }:
|
||||
|
||||
let
|
||||
cfgp = config.neovim.plugins;
|
||||
in {
|
||||
config = lib.mkIf (config.neovim.enable && cfgp.telescope.enable) {
|
||||
programs.neovim.plugins = let
|
||||
configText = ''
|
||||
require('telescope').setup({
|
||||
extensions = {
|
||||
'' + lib.strings.optionalString cfgp.telescope.fzf.enable ''
|
||||
fzf = {
|
||||
fuzzy = true, -- false will only do exact matching
|
||||
override_generic_sorter = true, -- override the generic sorter
|
||||
override_file_sorter = true, -- override the file sorter
|
||||
case_mode = "smart_case", -- or "ignore_case" or "respect_case"
|
||||
-- the default case_mode is "smart_case"
|
||||
}
|
||||
'' + ''
|
||||
}
|
||||
})
|
||||
local builtin = require('telescope.builtin')
|
||||
vim.keymap.set('n', '<leader>ff', builtin.find_files, {})
|
||||
vim.keymap.set('n', '<leader>fg', builtin.git_files, {})
|
||||
|
||||
'' + lib.strings.optionalString cfgp.telescope.fzf.enable ''
|
||||
require('telescope').load_extension('fzf')
|
||||
'';
|
||||
in with pkgs.vimPlugins; [
|
||||
{
|
||||
plugin = telescope-nvim;
|
||||
type = "lua";
|
||||
config = configText;
|
||||
}
|
||||
(lib.mkIf cfgp.nvimcmp.enable telescope-fzf-native-nvim)
|
||||
];
|
||||
|
||||
home.packages = with pkgs; [
|
||||
(lib.mkIf cfgp.telescope.fzf.enable fzf)
|
||||
];
|
||||
|
||||
};
|
||||
}
|
||||
38
hmModules/apps/neovim.old/plugin/treesitter.nix
Normal file
38
hmModules/apps/neovim.old/plugin/treesitter.nix
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
{ config, pkgs, lib, ... }:
|
||||
|
||||
let
|
||||
cfgp = config.neovim.plugins;
|
||||
cfgl = config.neovim.languages;
|
||||
in {
|
||||
config = lib.mkIf (config.neovim.enable && cfgp.treesitter.enable) {
|
||||
programs.neovim.plugins = let
|
||||
configText = ''
|
||||
require('nvim-treesitter.configs').setup {
|
||||
ensure_installed = {},
|
||||
|
||||
auto_install = false,
|
||||
|
||||
highlight = { enable = true },
|
||||
|
||||
indent = { enable = true },
|
||||
}
|
||||
'';
|
||||
|
||||
# I've tried many things, and can't get treesitter plugins changing
|
||||
# dynamically. For not just have them always loaded regardless of config
|
||||
treeplugs = p: [
|
||||
p.tree-sitter-c
|
||||
p.tree-sitter-go
|
||||
p.tree-sitter-nix
|
||||
p.tree-sitter-rust
|
||||
p.tree-sitter-typescript
|
||||
];
|
||||
in with pkgs.vimPlugins; [
|
||||
{
|
||||
plugin = (nvim-treesitter.withPlugins treeplugs);
|
||||
type = "lua";
|
||||
config = configText;
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
@ -28,12 +28,12 @@
|
|||
};
|
||||
};
|
||||
|
||||
imports = [
|
||||
./plugin/lsp.nix
|
||||
./plugin/nvimcmp.nix
|
||||
./plugin/telescope.nix
|
||||
./plugin/treesitter.nix
|
||||
];
|
||||
# imports = [
|
||||
# ./plugin/lsp.nix
|
||||
# ./plugin/nvimcmp.nix
|
||||
# ./plugin/telescope.nix
|
||||
# ./plugin/treesitter.nix
|
||||
# ];
|
||||
|
||||
config = lib.mkIf config.neovim.enable {
|
||||
home.sessionVariables = {
|
||||
|
|
@ -41,129 +41,114 @@
|
|||
VISUAL = "nvim";
|
||||
};
|
||||
|
||||
programs.neovim = {
|
||||
programs.nixvim = {
|
||||
enable = true;
|
||||
viAlias = true;
|
||||
vimAlias = true;
|
||||
vimdiffAlias = true;
|
||||
|
||||
extraLuaConfig = ''
|
||||
${builtins.readFile ./options.lua}
|
||||
'';
|
||||
|
||||
extraPackages = with pkgs; [
|
||||
(lib.mkIf config.neovim.languages.c.enable libclang)
|
||||
(lib.mkIf config.neovim.languages.go.enable gopls)
|
||||
(lib.mkIf config.neovim.languages.nix.enable nil)
|
||||
(lib.mkIf config.neovim.languages.rust.enable rust-analyzer)
|
||||
];
|
||||
|
||||
# Additional packages are added through imports
|
||||
plugins = let
|
||||
lopts = lib.lists.optionals;
|
||||
cfgp = config.neovim.plugins;
|
||||
cfgl = config.neovim.languages;
|
||||
cfgt = config.neovim.themes;
|
||||
|
||||
comments = lopts cfgp.comments.enable (with pkgs.vimPlugins; [
|
||||
{
|
||||
plugin = comment-nvim;
|
||||
type = "lua";
|
||||
config = "require(\"Comment\").setup()";
|
||||
}
|
||||
]);
|
||||
|
||||
fugitive = lopts cfgp.fugitive.enable (with pkgs.vimPlugins; [
|
||||
vim-fugitive
|
||||
]);
|
||||
|
||||
luasnip-pkg = lopts cfgp.luasnip.enable (with pkgs.vimPlugins; [
|
||||
luasnip
|
||||
friendly-snippets
|
||||
(lib.mkIf cfgp.nvimcmp.enable cmp_luasnip)
|
||||
]);
|
||||
|
||||
lualine = lopts cfgp.lualine.enable (with pkgs.vimPlugins; [
|
||||
{
|
||||
plugin = lualine-nvim;
|
||||
type = "lua";
|
||||
config = ''
|
||||
require("lualine").setup {
|
||||
options = {
|
||||
icons_enabled = true,
|
||||
'' + lib.strings.optionalString cfgt.catppuccin.enable ''
|
||||
theme = "catppuccin"
|
||||
'' + ''
|
||||
}
|
||||
}
|
||||
'';
|
||||
}
|
||||
nvim-web-devicons
|
||||
]);
|
||||
|
||||
nix-pkg = lopts cfgl.nix.enable (with pkgs.vimPlugins; [
|
||||
vim-nix
|
||||
]);
|
||||
|
||||
rust-pkg = lopts cfgl.rust.enable (with pkgs.vimPlugins; [
|
||||
{
|
||||
plugin = rustaceanvim;
|
||||
type = "lua";
|
||||
config = ''
|
||||
vim.g.rust_recommended_style = 0
|
||||
'';
|
||||
}
|
||||
]);
|
||||
|
||||
go-pkg = lopts cfgl.go.enable (with pkgs.vimPlugins; [
|
||||
go-nvim
|
||||
]);
|
||||
|
||||
typescript-pkg = lopts cfgl.typescript.enable (with pkgs.vimPlugins; [
|
||||
{
|
||||
plugin = typescript-tools-nvim;
|
||||
type = "lua";
|
||||
config = ''
|
||||
require("typescript-tools").setup {}
|
||||
'';
|
||||
}
|
||||
]);
|
||||
|
||||
catppuccin-pkg = lopts cfgt.catppuccin.enable (with pkgs.vimPlugins; [
|
||||
{
|
||||
plugin = catppuccin-nvim;
|
||||
type = "lua";
|
||||
config = ''
|
||||
vim.cmd.colorscheme "catppuccin-mocha"
|
||||
require('catppuccin').setup({
|
||||
integrations = {
|
||||
'' + lib.strings.optionalString cfgp.wiki.enable ''
|
||||
vimwiki = true
|
||||
'' + ''
|
||||
}
|
||||
})
|
||||
'';
|
||||
}
|
||||
]);
|
||||
|
||||
wiki = lopts cfgp.wiki.enable (with pkgs.vimPlugins; [
|
||||
{
|
||||
plugin = vimwiki;
|
||||
type = "lua";
|
||||
config = ''
|
||||
vim.g.vimwiki_list = {
|
||||
{
|
||||
path = '${config.xdg.userDirs.documents}/wiki',
|
||||
links_space_char = '_',
|
||||
ext = '.md',
|
||||
syntax = 'markdown',
|
||||
}
|
||||
}
|
||||
'';
|
||||
}
|
||||
]);
|
||||
in comments ++ fugitive ++ luasnip-pkg ++ lualine ++ nix-pkg ++ rust-pkg
|
||||
++ go-pkg ++ wiki ++ catppuccin-pkg ++ typescript-pkg;
|
||||
};
|
||||
# extraLuaConfig = ''
|
||||
# ${builtins.readFile ./options.lua}
|
||||
# '';
|
||||
|
||||
programs.nixvim.colorschemes = with config.neovim.themes; {
|
||||
catppuccin = lib.mkIf catppuccin.enable {
|
||||
enable = true;
|
||||
flavour = "mocha";
|
||||
integrations.vimwiki = lib.mkIf wiki.enable true;
|
||||
}
|
||||
};
|
||||
|
||||
programs.nixvim.plugins = with config.neovim.plugins; {
|
||||
comment.enable = comments.enable;
|
||||
|
||||
fugitive.enable = fugitive.enable;
|
||||
|
||||
lualine = lib.mkIf lualine.enable {
|
||||
enable = true;
|
||||
icons_enabled = true;
|
||||
};
|
||||
web-devicons.enable = lualine.enable;
|
||||
|
||||
luasnip.enable = luasnip.enable;
|
||||
friendly-snippets.enable = luasnip.enable;
|
||||
|
||||
cmp = {
|
||||
enable = nvimcmp.enable;
|
||||
autoEnableSources = true;
|
||||
settings.sources = lib.options luasnip.enable { name = "cmp-luasnip" };
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
# telescope = {
|
||||
# enable = lib.mkEnableOption "Enables telescope";
|
||||
# fzf.enable = lib.mkEnableOption "Enables telescope-fzf";
|
||||
# };
|
||||
# treesitter.enable = lib.mkEnableOption "Enables treesitter";
|
||||
# wiki.enable = lib.mkEnableOption "Enables a wiki";
|
||||
#
|
||||
#
|
||||
# wiki = lopts cfgp.wiki.enable (with pkgs.vimPlugins; [
|
||||
# {
|
||||
# plugin = vimwiki;
|
||||
# type = "lua";
|
||||
# config = ''
|
||||
# vim.g.vimwiki_list = {
|
||||
# {
|
||||
# path = '${config.xdg.userDirs.documents}/wiki',
|
||||
# links_space_char = '_',
|
||||
# ext = '.md',
|
||||
# syntax = 'markdown',
|
||||
# }
|
||||
# }
|
||||
# '';
|
||||
# }
|
||||
# ]);
|
||||
}
|
||||
|
||||
# extraPackages = with pkgs; [
|
||||
# (lib.mkIf config.neovim.languages.c.enable libclang)
|
||||
# (lib.mkIf config.neovim.languages.go.enable gopls)
|
||||
# (lib.mkIf config.neovim.languages.nix.enable nil)
|
||||
# (lib.mkIf config.neovim.languages.rust.enable rust-analyzer)
|
||||
# ];
|
||||
#
|
||||
# # Additional packages are added through imports
|
||||
# plugins = let
|
||||
# lopts = lib.lists.optionals;
|
||||
# cfgp = config.neovim.plugins;
|
||||
# cfgl = config.neovim.languages;
|
||||
# cfgt = config.neovim.themes;
|
||||
#
|
||||
# nix-pkg = lopts cfgl.nix.enable (with pkgs.vimPlugins; [
|
||||
# vim-nix
|
||||
# ]);
|
||||
#
|
||||
# rust-pkg = lopts cfgl.rust.enable (with pkgs.vimPlugins; [
|
||||
# {
|
||||
# plugin = rustaceanvim;
|
||||
# type = "lua";
|
||||
# config = ''
|
||||
# vim.g.rust_recommended_style = 0
|
||||
# '';
|
||||
# }
|
||||
# ]);
|
||||
#
|
||||
# go-pkg = lopts cfgl.go.enable (with pkgs.vimPlugins; [
|
||||
# go-nvim
|
||||
# ]);
|
||||
#
|
||||
# typescript-pkg = lopts cfgl.typescript.enable (with pkgs.vimPlugins; [
|
||||
# {
|
||||
# plugin = typescript-tools-nvim;
|
||||
# type = "lua";
|
||||
# config = ''
|
||||
# require("typescript-tools").setup {}
|
||||
# '';
|
||||
# }
|
||||
# ]);
|
||||
# };
|
||||
};
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue