summaryrefslogblamecommitdiffstats
path: root/modules/desktop/apps/editors/neovim.nix
blob: e17dac63abe406383c2b37398b7572f845f4e0f9 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

















                                                          







                                                               



                                                  






                                        










                                                               
 



                              
                                           

                          
                              

                       

                       






                                               


          
{
    config,
    options,
    lib,
    pkgs,
    ...
}: let
    nvimConf = config.modules.desktop.apps.editors.neovim;
    configDir = config.nixosConfig.configDir;
in {
    options.modules.desktop.apps.editors.neovim = {
        enable = lib.mkOption {
            type = lib.types.bool;
            default = false;
        };
    };
    
    config = lib.mkIf (nvimConf.enable) {
        modules.desktop.defaultApplications.apps.editor = rec {
            package = pkgs.neovim;
            install = false;
            cmd = "${package}/bin/nvim";
            desktop = "nvim";
        };

        home.packages = [
            pkgs.ccls
            pkgs.nodePackages.bash-language-server
            pkgs.texlab
            pkgs.sumneko-lua-language-server
        ];

        home.manager.programs.neovim = {
            enable = true;
            viAlias = true;
            vimAlias = true;
            withNodeJs = true;

            extraConfig = ''
                luafile /etc/nixos/config/nvim/lua/settings.lua
                luafile /etc/nixos/config/nvim/lua/lsp.lua
            '';

            plugins = with pkgs.vimPlugins; [
                nvim-web-devicons
                gitsigns-nvim
                nvim-tree-lua
                catppuccin-nvim
 
                nvim-lspconfig
                nvim-cmp
                cmp-cmdline
                cmp-nvim-lsp
                cmp-nvim-lsp-signature-help
                cmp-buffer
                cmp-path
                cmp-treesitter

                luasnip
                
                vim-nix
                nvim-treesitter.withAllGrammars
                neoformat

                bufferline-nvim
                lualine-nvim
                alpha-nvim
            ];
        };
    };
}