summaryrefslogblamecommitdiffstats
path: root/modules/desktop/apps/editors/neovim.nix
blob: f0040e0129a2d3d20a8af50475d14d2d1c77bad5 (plain) (tree)
1
2
3
4
5
6
7

           




                                                          








                                                   







                                                               

                            
                       






                                        




                                                               










                                                  



                                             
                               
 








                                                               
 



                                 


          
{
    config,
    lib,
    pkgs,
    ...
}: let
    nvimConf = config.modules.desktop.apps.editors.neovim;
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.clang-tools
            pkgs.nil
            pkgs.texlab
        ];

        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
            '';
            coc.enable = true;
            coc.settings = {
                "suggest.noselect" = true;
                "suggest.enablePreview" = true;
                "suggest.enablePreselect" = false;
                "suggest.disableKind" = true;
                "inlayHint.enable" = false;

                "nix.enableLanguageServer" = true;
                "nix.serverPath" = "nil";
            };

            plugins = with pkgs.vimPlugins; [
                nvim-web-devicons
                gitsigns-nvim
                catppuccin-nvim

                vim-commentary
                vim-fugitive

                popup-nvim
                plenary-nvim
                telescope-nvim

                nvim-lspconfig
                nvim-treesitter nvim-treesitter.withAllGrammars

                coc-clangd
                coc-lua
                coc-spell-checker
              ];
        };
    };
}