diff --git a/hosts/nullbox/configuration.nix b/hosts/nullbox/configuration.nix
index 6ffabc6..46d8d3b 100644
--- a/hosts/nullbox/configuration.nix
+++ b/hosts/nullbox/configuration.nix
@@ -42,8 +42,7 @@
     specialisation.plasma.configuration = {
       system.nixos.tags = [ "Plasma" ];
       nixfiles = {
-        sessions.hyprland.enable = false;
-        sessions.plasma.enable = true;
+        session = "plasma";
       };
     };
 
@@ -65,8 +64,7 @@
       };
       programs.unbound.enable = true;
       common.remoteAccess.enable = true;
-      sessions.plasma.enable = lib.mkDefault true;
-      sessions.hyprland.enable = lib.mkDefault false;
+      session = lib.mkDefault "hyprland";
       hardware.nvidia.modesetting.enable = true;
       packageSets.gaming.enable = true;
     };
diff --git a/hosts/slab/configuration.nix b/hosts/slab/configuration.nix
index 0610bed..194cf85 100644
--- a/hosts/slab/configuration.nix
+++ b/hosts/slab/configuration.nix
@@ -36,8 +36,7 @@
   specialisation.plasma.configuration = {
     system.nixos.tags = [ "Plasma" ];
     nixfiles = {
-      sessions.hyprland.enable = false;
-      sessions.plasma.enable = true;
+      session = "plasma";
     };
     services.displayManager.sddm.enable = lib.mkForce true;
     services.xserver.displayManager.startx.enable = lib.mkForce false;
@@ -56,8 +55,7 @@
       gaming.enable = true;
       fun.enable = true;
     };
-    sessions.hyprland.enable = lib.mkDefault true;
-    sessions.plasma.enable = lib.mkDefault false;
+    session = lib.mkDefault "hyprland";
     programs = {
       adb.enable = true;
       unbound.enable = false;
diff --git a/system/sessions/default.nix b/system/sessions/default.nix
index d8474e3..217f300 100644
--- a/system/sessions/default.nix
+++ b/system/sessions/default.nix
@@ -1,5 +1,26 @@
-{...}:
-{ imports = [
+{ config, lib, options, ... }:
+let
+  inherit (lib) types;
+  cfg = config.nixfiles.session;
+in
+{
+  imports = [
   ./hyprland.nix
   ./plasma.nix
-];}
+  ];
+
+  options.nixfiles.session = lib.mkOption {
+    description = ''
+      Desktop session to enable. This option serves as a convenient way to
+      enable sessions in a mutually exclusive manner, e.g., for use with
+      specialisations.
+    '';
+    type = with types; nullOr (enum (builtins.attrNames options.nixfiles.sessions));
+    default = null;
+    example = "hyprland";
+  };
+
+  config = lib.mkIf (!(builtins.isNull cfg)) {
+    nixfiles.sessions.${cfg}.enable = true;
+  };
+}