I've done it! I've found it! I found a hack that works!
Make a script at any desired location. Save the file path for later. I personally put mine at ~/.minecraft/launch.sh. Copy and paste the following:
#!/bin/bash
/usr/bin/prime-run /usr/bin/java "$@"
Your java or prime-run executables may be found somewhere else. To find them, simply type these into your terminal
which java
which prime-run
prime-run is used by Nvidia to launch any program using the GPU. I installed prime-run by installing the proprietary Nvidia drivers. See instructions by your Linux distro on how to install them. This is what my prime-run script looks like:
#!/bin/sh
export __NV_PRIME_RENDER_OFFLOAD=1
export __GLX_VENDOR_LIBRARY_NAME=nvidia
export __VK_LAYER_NV_optimus=NVIDIA_only
exec "$@"
The $@ variable contains all the arguments passed to the script.
Don't forget to make the script executable!
chmod +x ~/.minecraft/launch.sh
Open up the Minecraft launcher, and go to the Installations tab. You'll have to do this with each installation, which is fine for me since I usually play on the latest Fabric release.

Once you've hit Edit, you'll want to hit the MORE OPTIONS submenu at the bottom, and change the Java executable path.

Find the script from above, and set it as the new "executable." Load up the game, join a world, press F3 and double check that it's using your Nvidia GPU!
Without the GPU:
With the GPU:
(To notice the differences, look at the top right for the hardware list.)
This is more of a hack than anything, but it works and now I can play modded and stream without my laptop dying on me. I hope this helps everyone well.
EDIT: Don't place the script in the ~/.minecraft/launcher/launch.sh directory. Whenever the launcher updates, it'll be removed. Placing it outside the directory, over in ~/.minecraft/launch.sh works fine.
EDIT 2: If you ever get stuck on the "Finalizing" stage when launching, it's because the launch.sh script isn't executable! Make sure to add the executable bit onto the file.
EDIT 3: Make sure the Bash arguments are quoted! If they aren't quoted, then this means that not all arguments will be respected, which could lead to lower or higher ram usage than specified.