diff --git a/config/common.nix b/config/common.nix
index 67b8d4382f7e062e6232d1f8b45dcc78435745c8..243d1a4a0076c53a71e9f0c65e8ee3e4e881e9f5 100644
--- a/config/common.nix
+++ b/config/common.nix
@@ -1334,6 +1334,20 @@
                     };
                   };
                 };
+                protege = lib.mkOption {
+                  type = lib.types.submodule {
+                    options = {
+                      enabled = lib.mkOption {
+                        type = lib.types.bool;
+                        default = false;
+                        example = true;
+                        description = ''
+                          Whether or not protege has been installed.
+                        '';
+                      };
+                    };
+                  };
+                };
                 nikola = lib.mkOption {
                   type = lib.types.submodule {
                     options = {
diff --git a/pkgs/dev/default.nix b/pkgs/dev/default.nix
index 399a61e17afae73193f01028bf003c06548d27f3..6f9269574f6acda102dbe3671d79833d385fcc57 100644
--- a/pkgs/dev/default.nix
+++ b/pkgs/dev/default.nix
@@ -16,5 +16,6 @@
     ./vercel
     ./qmk
     ./qflipper
+    ./protege
   ];
 }
diff --git a/pkgs/dev/protege/config.nix b/pkgs/dev/protege/config.nix
new file mode 100644
index 0000000000000000000000000000000000000000..c18213b63ca558298f21cd03bf4d19101968ccc2
--- /dev/null
+++ b/pkgs/dev/protege/config.nix
@@ -0,0 +1,4 @@
+{ config, ... }:
+{
+  config.provides.dev.protege.enabled = true;
+}
diff --git a/pkgs/dev/protege/default.nix b/pkgs/dev/protege/default.nix
new file mode 100644
index 0000000000000000000000000000000000000000..da1f42b4d5748c697c0d2c8abd877d3f77946134
--- /dev/null
+++ b/pkgs/dev/protege/default.nix
@@ -0,0 +1,10 @@
+{ pkgs, ... }: {
+  imports = [
+    ../common.nix
+    ./config.nix
+  ];
+
+  environment.systemPackages = with pkgs; [
+    protege-distribution
+  ];
+}