diff --git a/hosts/build02/nixpkgs-update.nix b/hosts/build02/nixpkgs-update.nix
index e616aa5..3dc86a5 100644
--- a/hosts/build02/nixpkgs-update.nix
+++ b/hosts/build02/nixpkgs-update.nix
@@ -198,7 +198,7 @@ in
     restartIfChanged = true;
     path = with pkgs; [
       apacheHttpd
-      (python311.withPackages (ps: [ ps.asyncinotify ]))
+      (python3.withPackages (ps: [ ps.asyncinotify ]))
     ];
 
     serviceConfig = {
@@ -220,7 +220,7 @@ in
       exec  > >(rotatelogs -eD "$LOGS_DIRECTORY"'/~supervisor/%Y-%m-%d.stdout.log' 86400)
       exec 2> >(rotatelogs -eD "$LOGS_DIRECTORY"'/~supervisor/%Y-%m-%d.stderr.log' 86400 >&2)
       # Fetcher output is hosted at https://r.ryantm.com/log/~fetchers
-      python3.11 ${./supervisor.py} "$LOGS_DIRECTORY/~supervisor/state.db" "$LOGS_DIRECTORY/~fetchers" "$RUNTIME_DIRECTORY/work.sock"
+      python3 ${./supervisor.py} "$LOGS_DIRECTORY/~supervisor/state.db" "$LOGS_DIRECTORY/~fetchers" "$RUNTIME_DIRECTORY/work.sock"
     '';
   };
 
diff --git a/hosts/build02/supervisor.py b/hosts/build02/supervisor.py
index 7312367..fbf9d9e 100644
--- a/hosts/build02/supervisor.py
+++ b/hosts/build02/supervisor.py
@@ -1,5 +1,4 @@
-#!/usr/bin/env nix-shell
-#! nix-shell -i python3.11 -p python311 python311Packages.asyncinotify
+#!/usr/bin/env python3
 
 r"""
 Usage: supervisor.py <database_file> <input_dir> <worker_socket>
diff --git a/hosts/build02/supervisor_test.py b/hosts/build02/supervisor_test.py
index ca3df56..e54851b 100755
--- a/hosts/build02/supervisor_test.py
+++ b/hosts/build02/supervisor_test.py
@@ -1,5 +1,4 @@
-#!/usr/bin/env nix-shell
-#! nix-shell -i python3.11 -p python311 python311Packages.asyncinotify
+#!/usr/bin/env python3
 
 """
 In-process unit and integration tests for supervisor.py. Uses temporary