diff --git a/lazyvim/default.nix b/lazyvim/default.nix index 46ffe41..03bd937 100644 --- a/lazyvim/default.nix +++ b/lazyvim/default.nix @@ -32,6 +32,7 @@ in ./extras/lang/markdown.nix ./extras/lang/nix.nix ./extras/lang/prisma.nix + ./extras/lang/rust.nix ./extras/lang/svelte.nix ./extras/lang/tailwind.nix ./extras/lang/typescript.nix diff --git a/lazyvim/extras/lang/rust.nix b/lazyvim/extras/lang/rust.nix new file mode 100644 index 0000000..b02b61a --- /dev/null +++ b/lazyvim/extras/lang/rust.nix @@ -0,0 +1,37 @@ +self: +{ + config, + lib, + pkgs, + ... +}: +let + inherit (lib.modules) mkIf; + inherit (lib.options) mkEnableOption; + inherit (lib.lists) optional; + + cfg = config.programs.lazyvim; +in +{ + options.programs.lazyvim.extras.lang.rust = { + enable = mkEnableOption "the lang.rust extra"; + }; + + config = mkIf cfg.extras.lang.rust.enable { + programs.neovim = { + extraPackages = [pkgs.rust-analyzer] ++ optional cfg.extras.dap.core.enable pkgs.lldb; + + plugins = + [ + (pkgs.vimPlugins.nvim-treesitter.withPlugins ( + plugins: builtins.attrValues {inherit (plugins) rust;} + )) + ] + ++ (with pkgs.vimPlugins; [ + crates-nvim + rustaceanvim + clangd_extensions-nvim + ]); + }; + }; +}