feat: Add option for startup apps on Niri

Change-Id: I9ba51159325b33c79a6d4fb125a621976086be9c
Reviewed-on: https://git.clicks.codes/c/Chimera/NixFiles/+/776
Reviewed-by: Skyler Grey <minion@clicks.codes>
Tested-by: Samuel Shuert <coded@clicks.codes>
Reviewed-by: Samuel Shuert <coded@clicks.codes>
diff --git a/modules/home/users/coded/default.nix b/modules/home/users/coded/default.nix
index 9167ae8..7f7823d 100644
--- a/modules/home/users/coded/default.nix
+++ b/modules/home/users/coded/default.nix
@@ -98,6 +98,12 @@
 
     chimera.yubikey.enable = true;
 
+    chimera.niri.startupCommands = [
+      {
+        command = [ "nextcloud" ];
+      }
+    ];
+
     # Programming Folder Creation
     home.file = {
       "Programming/README.md" = {
diff --git a/modules/home/wayland/niri/default.nix b/modules/home/wayland/niri/default.nix
index d6066cd..dd436d1 100644
--- a/modules/home/wayland/niri/default.nix
+++ b/modules/home/wayland/niri/default.nix
@@ -67,6 +67,18 @@
       description = "Atribute set of monitors";
       default = { };
     };
+    startupCommands = lib.mkOption {
+      type = lib.types.listOf (lib.types.submodule {
+        options = {
+          command = lib.mkOption {
+            type = lib.types.listOf lib.types.str;
+            description = "Command to run";
+          };
+        };
+      });
+      description = "List of commands to run at startup";
+      default = [ ];
+    };
   };
 
   config = lib.mkIf config.chimera.niri.enable {
@@ -271,7 +283,7 @@
           {
             command = [ "${pkgs.swaybg}/bin/swaybg" "-i" "${config.chimera.theme.wallpaper}" "-m" "fill" ];
           }
-        ];
+        ] ++ config.chimera.niri.startupCommands;
       };
     };
   };