diff --git a/nix/hosts/lemp11/default.nix b/nix/hosts/lemp11/default.nix
index c35679f4..bab79799 100644
--- a/nix/hosts/lemp11/default.nix
+++ b/nix/hosts/lemp11/default.nix
@@ -1,5 +1,9 @@
 {
   features = {
+    cli = {
+      docker.enable = true;
+    };
+
     desktop = {
       gaming.enable = true;
 
diff --git a/nix/modules/nixos/default.nix b/nix/modules/nixos/default.nix
index dfd00b70..760682d6 100644
--- a/nix/modules/nixos/default.nix
+++ b/nix/modules/nixos/default.nix
@@ -1,7 +1,8 @@
 {
   imports = [
     ./autorandr.nix
-    ./docker.nix
+    ./features/cli
+    ./features/desktop
     ./features/gaming.nix
     ./features/homelab
     ./fonts.nix
@@ -9,7 +10,6 @@
     ./kanata.nix
     ./rofi.nix
     ./rsnapshot.nix
-    ./screenkey.nix
     ./xbanish.nix
   ];
 }
diff --git a/nix/modules/nixos/docker.nix b/nix/modules/nixos/docker.nix
deleted file mode 100644
index 1a9a4b9d..00000000
--- a/nix/modules/nixos/docker.nix
+++ /dev/null
@@ -1,10 +0,0 @@
-{
-  virtualisation.docker = {
-    enable = true;
-
-    autoPrune = {
-      enable = true;
-      dates = "weekly";
-    };
-  };
-}
diff --git a/nix/modules/nixos/features/cli/default.nix b/nix/modules/nixos/features/cli/default.nix
new file mode 100644
index 00000000..9045632e
--- /dev/null
+++ b/nix/modules/nixos/features/cli/default.nix
@@ -0,0 +1,5 @@
+{
+  imports = [
+    ./docker.nix
+  ];
+}
diff --git a/nix/modules/nixos/features/cli/docker.nix b/nix/modules/nixos/features/cli/docker.nix
new file mode 100644
index 00000000..8aa12321
--- /dev/null
+++ b/nix/modules/nixos/features/cli/docker.nix
@@ -0,0 +1,16 @@
+{ lib, config, ... }:
+
+{
+  options.features.cli.docker.enable = lib.mkEnableOption "Enable Docker";
+
+  config = lib.mkIf config.features.cli.docker.enable {
+    virtualisation.docker = {
+      enable = true;
+
+      autoPrune = {
+        enable = true;
+        dates = "weekly";
+      };
+    };
+  };
+}
diff --git a/nix/modules/nixos/features/desktop/default.nix b/nix/modules/nixos/features/desktop/default.nix
new file mode 100644
index 00000000..819761e5
--- /dev/null
+++ b/nix/modules/nixos/features/desktop/default.nix
@@ -0,0 +1,3 @@
+{
+  imports = [ ./screenkey.nix ];
+}
diff --git a/nix/modules/nixos/features/desktop/screenkey.nix b/nix/modules/nixos/features/desktop/screenkey.nix
new file mode 100644
index 00000000..185de462
--- /dev/null
+++ b/nix/modules/nixos/features/desktop/screenkey.nix
@@ -0,0 +1,23 @@
+{
+  config,
+  lib,
+  pkgs,
+  username,
+  ...
+}:
+
+{
+  options.features.desktop.screenkey.enable = lib.mkEnableOption "Enable screenkey";
+
+  config = lib.mkIf config.features.desktop.screenkey.enable {
+    environment.systemPackages = with pkgs; [ screenkey ];
+
+    home-manager.users.${username}.xdg.configFile."screenkey.json".text = builtins.toJSON {
+      key_mode = "composed";
+      mods_mode = "emacs";
+      persist = true;
+      size = "small";
+      timeout = 0.25;
+    };
+  };
+}
diff --git a/nix/modules/nixos/screenkey.nix b/nix/modules/nixos/screenkey.nix
deleted file mode 100644
index 8068946e..00000000
--- a/nix/modules/nixos/screenkey.nix
+++ /dev/null
@@ -1,13 +0,0 @@
-{ pkgs, username, ... }:
-
-{
-  environment.systemPackages = with pkgs; [ screenkey ];
-
-  home-manager.users.${username}.xdg.configFile."screenkey.json".text = builtins.toJSON {
-    key_mode = "composed";
-    mods_mode = "emacs";
-    persist = true;
-    size = "small";
-    timeout = 0.25;
-  };
-}