From 5c9a8860c2b265ad87d2e0b8338662a7681121d3 Mon Sep 17 00:00:00 2001
From: NullBite <me@nullbite.com>
Date: Fri, 10 May 2024 22:41:14 -0400
Subject: [PATCH] home: Add autostart option and add some packages

---
 home/common/wm.nix                  | 6 ++++++
 home/package-sets/communication.nix | 8 +++++++-
 home/package-sets/gaming.nix        | 4 ++++
 home/sessions/hyprland/default.nix  | 3 ++-
 4 files changed, 19 insertions(+), 2 deletions(-)

diff --git a/home/common/wm.nix b/home/common/wm.nix
index dbf4a93..ed69d31 100644
--- a/home/common/wm.nix
+++ b/home/common/wm.nix
@@ -7,6 +7,12 @@ in
 {
   options.nixfiles.common.wm = {
     enable = lib.mkEnableOption "common window manager config";
+    autostart = lib.mkOption {
+      description = "List of window manager agnostic commnads to run at window manager startup";
+      type = lib.types.listOf lib.types.str;
+      default = [ ];
+      example = [ "steam -silent" ];
+    };
   };
   config = lib.mkIf cfg.enable {
     # Common options for standalone window managers; many of these (or
diff --git a/home/package-sets/communication.nix b/home/package-sets/communication.nix
index 57ca387..6dceaf1 100644
--- a/home/package-sets/communication.nix
+++ b/home/package-sets/communication.nix
@@ -5,6 +5,8 @@ let
     inputs.nixpkgs-unstable.legacyPackages.${pkgs.system}.rustdesk-flutter
   else
     pkgs.rustdesk-flutter;
+
+  vesktop-ozone-cmd = "env NIXOS_OZONE_WL=1 vesktop --disable-gpu";
 in
 {
   options.nixfiles.packageSets.communication = {
@@ -14,7 +16,7 @@ in
 
     xdg.desktopEntries.vesktop = lib.mkIf config.nixfiles.meta.graphical {
       categories= ["Network" "InstantMessaging" "Chat"];
-      exec="env NIXOS_OZONE_WL=1 vesktop --disable-gpu %U";
+      exec=vesktop-ozone-cmd + " %U";
       genericName="Internet Messenger";
       icon="vesktop";
       name="Vesktop";
@@ -25,6 +27,10 @@ in
       };
     };
 
+    nixfiles.common.wm.autostart = lib.optionals config.nixfiles.meta.graphical [
+      (vesktop-ozone-cmd + " --start-minimized")
+    ];
+
     home.packages = with pkgs; lib.optionals config.nixfiles.meta.graphical [
       element-desktop
       telegram-desktop
diff --git a/home/package-sets/gaming.nix b/home/package-sets/gaming.nix
index 94b19aa..79d894c 100644
--- a/home/package-sets/gaming.nix
+++ b/home/package-sets/gaming.nix
@@ -5,6 +5,10 @@ let
 in
 {
   config = lib.mkIf cfg.enable {
+    nixfiles.common.wm.autostart = [
+      "steam -silent"
+    ];
+
     home.packages = with pkgs; [
       ludusavi
       rclone # needed to sync ludusavi
diff --git a/home/sessions/hyprland/default.nix b/home/sessions/hyprland/default.nix
index f8c720b..1395712 100644
--- a/home/sessions/hyprland/default.nix
+++ b/home/sessions/hyprland/default.nix
@@ -128,7 +128,8 @@ in
         # Execute your favorite apps at launch
         # exec-once = waybar & hyprpaper & firefox
 
-        exec-once = (lib.optional cfg.autolock lock-cmd) ++ [
+        exec-once = (lib.optional cfg.autolock lock-cmd) ++ config.nixfiles.common.wm.autostart ++
+        [
           wallpaper-cmd
           notifydaemon
           polkit-agent