summaryrefslogtreecommitdiffstats
path: root/modules/desktop/apps/editors/neovim.nix
blob: ee6424b6479527e75c335fc0656a4c868f750840 (plain) (blame)
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
{
    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.rnix-lsp
            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-buffer
                cmp-path
                cmp-vsnip
                cmp-treesitter
                
                vim-nix
                vim-vsnip
                nvim-treesitter.withAllGrammars
                neoformat

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