diff --git a/config/neovim/lua/opdavies/lsp/null-ls.lua b/config/neovim/lua/opdavies/lsp/null-ls.lua
index ebb82af9..5945118c 100644
--- a/config/neovim/lua/opdavies/lsp/null-ls.lua
+++ b/config/neovim/lua/opdavies/lsp/null-ls.lua
@@ -23,6 +23,7 @@ null_ls.setup {
     formatting.phpcbf,
     code_actions.gitsigns,
 
+    formatting.black,
     formatting.markdownlint,
     formatting.prettier,
     formatting.rustywind,
diff --git a/home-manager/modules/common.nix b/home-manager/modules/common.nix
index 2db2c697..4e572bcb 100644
--- a/home-manager/modules/common.nix
+++ b/home-manager/modules/common.nix
@@ -34,18 +34,21 @@ in {
     postman
     pulumi-bin
     pv
+    python3Full
     ripgrep
     terraform
     tldr
     tmuxinator
     tree
     unzip
+    virtualenv
     wget
     xcp
     yarn
     zoxide
 
     # LSP
+    black
     gopls
     html-tidy
     nodePackages."@ansible/ansible-language-server"