1
Fork 0
satellite/modules/applications/neovim.nix

95 lines
2.9 KiB
Nix
Raw Normal View History

2022-03-10 20:59:18 +01:00
{ pkgs, lib, ... }:
2022-01-30 20:19:35 +01:00
let
2022-03-10 20:59:18 +01:00
themes = pkgs.myThemes;
2022-02-01 14:28:29 +01:00
# config-nvim = "/etc/nixos/configuration/dotfiles/neovim";
2022-01-30 20:19:35 +01:00
config-nvim = pkgs.vimUtils.buildVimPluginFrom2Nix {
name = "config-nvim";
src = ../../dotfiles/neovim;
};
2022-03-10 20:59:18 +01:00
themePlugins = lib.lists.concatMap (theme: theme.neovim.plugins) themes;
loadTheme = (theme: ''
if currentTheme == "${theme.name}" then
2022-03-10 20:59:18 +01:00
${theme.neovim.theme}
vim.g.lualineTheme = ${theme.neovim.lualineTheme}
end
'');
loadThemes = ''
lua << EOF
2022-03-10 20:59:18 +01:00
local currentTheme = os.getenv("THEME");
${pkgs.myHelpers.mergeLines (lib.lists.forEach themes loadTheme)};
EOF
2022-03-10 20:59:18 +01:00
'';
2022-02-07 12:39:08 +01:00
in
{
2022-02-01 00:19:42 +01:00
home-manager.users.adrielus.programs.neovim = {
2022-01-30 20:19:35 +01:00
enable = true;
package = pkgs.neovim-nightly;
2022-01-30 19:10:57 +01:00
2022-01-30 20:19:35 +01:00
extraConfig = ''
${loadThemes}
2022-01-30 19:10:57 +01:00
luafile ${config-nvim}/init.lua
'';
2022-02-01 00:06:48 +01:00
extraPackages = with pkgs; [
2022-01-31 21:54:22 +01:00
# Language servers
2022-02-01 14:28:29 +01:00
nodePackages.typescript-language-server # typescript
2022-02-01 00:06:48 +01:00
easy-purescript-nix.purescript-language-server # purescript
sumneko-lua-language-server # lua
efm-langserver # auto-formatting
rnix-lsp # nix
2022-01-31 21:54:22 +01:00
2022-02-01 00:06:48 +01:00
# Formatters
luaformatter # lua
2022-02-01 15:18:36 +01:00
prettierd # prettier but faster
2022-02-01 14:28:29 +01:00
# Others
fd # file finder
ripgrep # grep rewrite (I think?)
2022-02-01 14:28:29 +01:00
nodePackages.typescript # typescript language
2022-02-09 21:20:34 +01:00
texlive.combined.scheme-full # latex stuff
2022-02-10 00:19:52 +01:00
python38Packages.pygments # required for latex syntax highlighting
2022-01-31 21:41:13 +01:00
];
2022-01-30 20:19:35 +01:00
2022-01-31 21:41:13 +01:00
plugins = with pkgs.vimPlugins;
with pkgs.vimExtraPlugins; with pkgs.myVimPlugins; themePlugins ++ [
2022-01-31 21:41:13 +01:00
config-nvim # my neovim config
nvim-lspconfig # configures lsps for me
nvim-autopairs # close pairs for me
telescope-nvim # fuzzy search for say opening files
2022-02-01 00:06:48 +01:00
purescript-vim # purescript syntax highlighting
nvim-comment # allows toggling line-comments
2022-02-01 14:28:29 +01:00
nvim-treesitter # use treesitter for syntax highlighting
2022-02-01 15:18:36 +01:00
startup-nvim # splash screen
vim-devicons # nice looking icons
2022-02-07 12:39:08 +01:00
nvim-web-devicons # fork of vim-devicons?
2022-02-07 12:27:36 +01:00
plenary-nvim # async utility lib it seems?
2022-02-07 12:57:57 +01:00
lualine-nvim # customizable status line
2022-02-07 13:14:46 +01:00
nvim-tree-lua # file tree
2022-02-09 21:20:34 +01:00
vimtex # latex plugin
2022-02-22 21:52:01 +01:00
null-ls-nvim # generic language server
telescope-file-browser-nvim # file creation/deletion using telescope
2022-02-23 15:44:33 +01:00
lspkind-nvim # show icons in lsp completion menus
2022-03-01 10:49:59 +01:00
# symbols-outline-nvim # tree view for symbols in document
2022-03-09 19:03:04 +01:00
vimux # interact with tmux from within vim
vim-tmux-navigator # easly switch between tmux and vim panes
2022-03-09 19:44:21 +01:00
arpeggio # allows me to setup chord keybinds (keybinds where all the keys are pressed at the same time)
2022-02-10 00:19:52 +01:00
2022-02-09 21:20:34 +01:00
# Cmp related stuff. See https://github.com/hrsh7th/nvim-cmp
cmp-nvim-lsp
cmp-buffer
cmp-path
2022-02-10 00:19:52 +01:00
cmp-cmdline
2022-03-01 10:49:59 +01:00
cmp_luasnip
nvim-cmp # completion engine
luasnip # snippet engine
2022-01-31 21:41:13 +01:00
];
2022-01-30 19:10:57 +01:00
};
}