diff --git a/.hgignore b/.hgignore
index 3b3abf6c12..7d25340095 100644
--- a/.hgignore
+++ b/.hgignore
@@ -3,8 +3,6 @@
 # SPDX-License-Identifier: Apache-2.0
 
 ops/secrets/
-result
-result-*
 
 ops/vault/cfg/tf/
 ops/vault/cfg/secrets.nix
@@ -15,6 +13,7 @@ syntax: regexp
 ^go/trains/.*/start.sh$
 ^go/trains/.*/lukegb-trains.json$
 ^py/icalfilter/config/.*$
+^(.+/)?result(-([a-z]+|[0-9]+))?$
 
 syntax: glob
 *.sw?
diff --git a/third_party/nixpkgs/pkgs/development/python-modules/django-celery-results/default.nix b/third_party/nixpkgs/pkgs/development/python-modules/django-celery-results/default.nix
new file mode 100644
index 0000000000..1cb4b0f3b8
--- /dev/null
+++ b/third_party/nixpkgs/pkgs/development/python-modules/django-celery-results/default.nix
@@ -0,0 +1,35 @@
+{ lib
+, fetchPypi
+, buildPythonPackage
+, celery
+, django
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "django_celery_results";
+  version = "2.4.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-dapRlw21aRy/JCxqD/UMjN9BniZc0Om3cjNdBkNsS5k=";
+  };
+
+  propagatedBuildInputs = [
+    celery
+    django
+  ];
+
+  # Tests need access to a database.
+  doCheck = false;
+
+  meta = with lib; {
+    description = "Celery result back end with django";
+    homepage = "https://github.com/celery/django-celery-results";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ babariviere ];
+  };
+}