diff --git a/config/common.nix b/config/common.nix
index ea036cb1599037714d6593710ab62435f7dd4223..98901a18ef515a3680701b771f7dd5af4df8ca8b 100644
--- a/config/common.nix
+++ b/config/common.nix
@@ -1192,6 +1192,20 @@
                     };
                   };
                 };
+                mlocate = lib.mkOption {
+                  type = lib.types.submodule {
+                    options = {
+                      enabled = lib.mkOption {
+                        type = lib.types.bool;
+                        default = false;
+                        example = true;
+                        description = ''
+                          Whether or not mlocate has been installed.
+                        '';
+                      };
+                    };
+                  };
+                };
                 bc = lib.mkOption {
                   type = lib.types.submodule {
                     options = {
diff --git a/pkgs/util/default.nix b/pkgs/util/default.nix
index a061927cda1049439a92e4fe0a26584a8453041c..d3d5c28f773e007221f4ef730ca0eac4bf902df7 100644
--- a/pkgs/util/default.nix
+++ b/pkgs/util/default.nix
@@ -27,5 +27,6 @@
     ./inetutils
     ./ispell
     ./tqsl
+    ./mlocate
   ];
 }
diff --git a/pkgs/util/mlocate/config.nix b/pkgs/util/mlocate/config.nix
new file mode 100644
index 0000000000000000000000000000000000000000..c7a2d95d796cbd03ec5559d41998c28948637557
--- /dev/null
+++ b/pkgs/util/mlocate/config.nix
@@ -0,0 +1,4 @@
+{ config, ... }:
+{
+  config.provides.util.mlocate.enabled = true;
+}
diff --git a/pkgs/util/mlocate/default.nix b/pkgs/util/mlocate/default.nix
new file mode 100644
index 0000000000000000000000000000000000000000..53c66444060630848719594e4a68cfd008ecfce8
--- /dev/null
+++ b/pkgs/util/mlocate/default.nix
@@ -0,0 +1,10 @@
+{ pkgs, ... }: {
+  imports = [
+    ../common.nix
+    ./config.nix
+  ];
+
+  environment.systemPackages = with pkgs; [
+    mlocate
+  ];
+}