diff --git a/homeManagerModules/neovim/langs/python/default.nix b/homeManagerModules/neovim/langs/python/default.nix
index 738f67d0..8fe6f691 100644
--- a/homeManagerModules/neovim/langs/python/default.nix
+++ b/homeManagerModules/neovim/langs/python/default.nix
@@ -9,11 +9,18 @@
   cfg = config.programs.neovim;
 
   # We keep the packages here because python is a bit complicated and common
-  pythonPkgs = py:
+  pythonPkgs = p:
     (attrValues {
-      inherit (py) python-lsp-server;
+      inherit
+        (p)
+        python-lsp-server
+        pyls-isort
+        pylsp-mypy
+        python-lsp-ruff
+        python-lsp-jsonrpc
+        ;
     })
-    ++ py.python-lsp-server.optional-dependencies.all;
+    ++ p.python-lsp-server.optional-dependencies.all;
 in {
   config = mkIf (cfg.enable && cfg.ideConfig.enablePython) {
     programs = {
@@ -32,8 +39,26 @@ in {
                 settings = {
                     pylsp = {
                         plugins = {
-                            pycodestyle = {
-                                maxLineLength = 100,
+                            -- auto-completion options
+                            jedi_completion = {
+                                fuzzy = true,
+                            },
+
+                            -- import sorting
+                            pyls_isort = {
+                                enabled = true,
+                            },
+
+                            -- type checker
+                            pylsp_mypy = {
+                                enabled = true,
+                            },
+
+                            -- linter
+                            ruff = {
+                                enabled = true,
+                                formatEnabled = true,
+                                lineLength = 100,
                             },
                         },
                     },