From 491c41bb7cf830bd761405aa490a43f3f9ed09c5 Mon Sep 17 00:00:00 2001
From: Manuel Thalmann <m@nuth.ch>
Date: Tue, 16 Jul 2024 14:36:53 +0200
Subject: [PATCH] Create a "desktop experience" software category

---
 lib/modules/software.nix | 20 +++++++++++++++++---
 1 file changed, 17 insertions(+), 3 deletions(-)

diff --git a/lib/modules/software.nix b/lib/modules/software.nix
index 05bd7aa1..d367b354 100644
--- a/lib/modules/software.nix
+++ b/lib/modules/software.nix
@@ -13,7 +13,9 @@
           let
             inherit (cfg.software)
               common
+              desktopExperience
               school
+              server
             ;
           in {
             essential = mkOption {
@@ -28,6 +30,18 @@
               default = true;
             };
 
+            server = mkOption {
+              type = types.bool;
+              description = "A value indicating whether server applications should be installed.";
+              default = false;
+            };
+
+            desktopExperience = mkOption {
+              type = types.bool;
+              description = "A value indicating whether GUI apps should be installed.";
+              default = common && !server;
+            };
+
             school = mkOption {
               type = types.bool;
               description = "A value indicating whether software for studies should be installed.";
@@ -43,19 +57,19 @@
             socialMedia = mkOption {
               type = types.bool;
               description = "A value indicating whether social media apps should be installed.";
-              default = common;
+              default = common && desktopExperience;
             };
 
             media = mkOption {
               type = types.bool;
               description = "A value indicating whether media apps should be installed.";
-              default = common;
+              default = common && desktopExperience;
             };
 
             gaming = mkOption {
               type = types.bool;
               description = "A value indicating whether gaming apps should be installed.";
-              default = common;
+              default = common && desktopExperience;
             };
 
             coding = mkOption {