diff --git a/config/neovim/after/plugin/conform.lua b/config/neovim/after/plugin/conform.lua
new file mode 100644
index 00000000..6c472346
--- /dev/null
+++ b/config/neovim/after/plugin/conform.lua
@@ -0,0 +1,11 @@
+local conform = require "conform"
+
+conform.setup {
+  formatters_by_ft = {
+    rst = { "rstfmt" },
+  },
+}
+
+conform.formatters.rstfmt = {
+  command = "rstfmt";
+}
diff --git a/system/shared/home-manager.nix b/system/shared/home-manager.nix
index f77b2be7..e40a511e 100644
--- a/system/shared/home-manager.nix
+++ b/system/shared/home-manager.nix
@@ -595,7 +595,8 @@ in
       vimPlugins.nvim-treesitter-context
       vimPlugins.nvim-treesitter-textobjects
 
-      # LSP
+      # LSP, linting and formatting
+      pkgsUnstable.vimPlugins.conform-nvim
       pkgsUnstable.vimPlugins.none-ls-nvim
       vimPlugins.lsp-status-nvim
       vimPlugins.nvim-lspconfig