summaryrefslogtreecommitdiff
path: root/users/seth/programs/neovim/default.nix
blob: 0f814be953813ef5bd1a328f81a5a6144a63f0f2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
{pkgs, ...}: {
	programs.neovim = {
		enable = true;
		extraPackages = with pkgs; [
			alejandra
			clang
			codespell
			deadnix
			nodePackages.alex
			nodePackages.bash-language-server
			nodePackages.prettier
			nodePackages.pyright
			pylint
			rust-analyzer
			rustfmt
			statix
			stylua
			sumneko-lua-language-server
			yapf
		];
		plugins = with pkgs.vimPlugins; [
			barbar-nvim
			catppuccin-nvim
			cmp-nvim-lsp
			cmp-buffer
			cmp_luasnip
			cmp-path
			cmp-vsnip
			editorconfig-nvim
			gitsigns-nvim
			lightspeed-nvim
			lualine-nvim
			luasnip
			nvim-cmp
			nvim-lspconfig
			null-ls-nvim
			nvim-tree-lua
			nvim-treesitter.withAllGrammars
			nvim-web-devicons
			plenary-nvim
			telescope-nvim
			trouble-nvim
			vim-vsnip
		];
	};

	xdg.configFile.nvim = {
		source = ./lua;
		recursive = true;
	};
	xdg.configFile."nvim/init.lua" = {
		text = ''
			local cmd = vim.cmd
			local opt = vim.opt
			require("getchoo")
			vim.g.use_lsp_plugins = true
			-- text options
			opt.tabstop = 2
			opt.shiftwidth = 2
			opt.expandtab = false
			opt.smartindent = true
			opt.wrap = false

			-- appearance
			opt.syntax = "on"
			cmd("filetype plugin indent on")
			opt.termguicolors = true
			vim.api.nvim_command("colorscheme catppuccin")
		'';
	};
}