summaryrefslogtreecommitdiff
path: root/flake.nix
blob: bc8e66fea8d7f196795a1da9014b1e7855677e9b (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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
{
  inputs = {
    nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
    nixvim.url = "github:nix-community/nixvim";
  };

  outputs = {
    nixpkgs,
    nixvim,
    self,
  }: let
    pkgs = nixpkgs.legacyPackages.x86_64-linux;
    npkgs = nixvim.legacyPackages.x86_64-linux;
  in {
    packages.x86_64-linux.default = npkgs.makeNixvimWithModule {
      module = {
        config = {
          opts = {mouse = "";};
          colorschemes.kanagawa = {
            enable = true;
            settings.transparent = true;
          };
          extraPackages = [
            pkgs.go
            pkgs.rustfmt
          ];
          plugins = {
            ledger.enable = true;
            lsp-format.enable = true;
            vim-css-color.enable = true;
            none-ls = {
              enable = true;
              sources = {
                formatting = {
                  shfmt = {
                    enable = true;
                    settings.extra_args = ["-i" "4" "-s"];
                  };
                  alejandra.enable = true;
                };
              };
            };
            lsp = {
              enable = true;
              servers = {
                cmake.enable = true;
                gopls.enable = true;
                ruff.enable = true;
                nixd.enable = true;
                bashls.enable = true;
                rust-analyzer = {
                  enable = true;
                  installCargo = true;
                  installRustc = true;
                };
              };
            };
            luasnip.enable = true;
            cmp = {
              enable = true;
              settings = {
                autoEnableSources = true;
                sources = [
                  {name = "nvim_lsp";}
                  {name = "path";}
                  {name = "buffer";}
                  {name = "luasnip";}
                ];
                mapping = {
                  "<CR>" = "cmp.mapping.confirm({ select = true })";
                  "<Tab>" = ''
                     cmp.mapping(function(fallback)
                      if cmp.visible() then
                        cmp.select_next_item({
                          behavior = cmp.SelectBehavior.Select
                        })
                      else
                        fallback()
                      end
                    end, {"i","s","c",})
                  '';
                };
              };
            };
          };
        };
      };
    };
  };
}