diff --git a/configurations/binto/modules/gpu-replay/default.nix b/configurations/binto/modules/gpu-replay/default.nix
index 51f8607f..d9433cd6 100644
--- a/configurations/binto/modules/gpu-replay/default.nix
+++ b/configurations/binto/modules/gpu-replay/default.nix
@@ -6,7 +6,7 @@
   ...
 }: let
   inherit (lib) concatStringsSep getExe removePrefix;
-  inherit (pkgs.selfPackages) gpu-screen-recorder gsr-kms-server gsr-dbus-server;
+  inherit (pkgs.selfPackages) gpu-screen-recorder;
 
   hyprPkgs = config.home-manager.users.${mainUser}.wayland.windowManager.hyprland.finalPackage;
 
@@ -24,7 +24,7 @@ in {
       owner = "root";
       group = "video";
       capabilities = "cap_sys_admin+ep";
-      source = getExe gsr-kms-server;
+      source = getExe gpu-screen-recorder.gsr-kms-server;
     };
   };
 
@@ -47,7 +47,7 @@ in {
           pkgs.pulseaudio
           pkgs.xorg.xrandr
 
-          gsr-dbus-server
+          gpu-screen-recorder.gsr-dbus-server
           hyprPkgs
         ];
 
diff --git a/packages/default.nix b/packages/default.nix
index 861a721d..ecbaa54e 100644
--- a/packages/default.nix
+++ b/packages/default.nix
@@ -6,13 +6,7 @@
   selfPackages = {
     coloryou = final.python3Packages.callPackage ./coloryou {};
 
-    gpu-screen-recorder = final.callPackage ./gpu-screen-recorder/gpu-screen-recorder.nix {
-      inherit (inputs) gpu-screen-recorder-src;
-    };
-    gsr-kms-server = final.callPackage ./gpu-screen-recorder/gsr-kms-server.nix {
-      inherit (inputs) gpu-screen-recorder-src;
-    };
-    gsr-dbus-server = final.callPackage ./gpu-screen-recorder/gsr-dbus-server.nix {
+    gpu-screen-recorder = final.callPackage ./gpu-screen-recorder {
       inherit (inputs) gpu-screen-recorder-src;
     };
 
diff --git a/packages/gpu-screen-recorder/default.nix b/packages/gpu-screen-recorder/default.nix
new file mode 100644
index 00000000..ebc04e28
--- /dev/null
+++ b/packages/gpu-screen-recorder/default.nix
@@ -0,0 +1,24 @@
+{
+  callPackage,
+  gpu-screen-recorder-src,
+  ...
+}: let
+  gpu-screen-recorder = callPackage ./gpu-screen-recorder.nix {
+    inherit gpu-screen-recorder-src;
+  };
+
+  gsr-kms-server = callPackage ./gsr-kms-server.nix {
+    inherit gpu-screen-recorder-src;
+  };
+
+  gsr-dbus-server = callPackage ./gsr-dbus-server.nix {
+    inherit gpu-screen-recorder-src;
+  };
+in
+  gpu-screen-recorder.overrideAttrs (o: {
+    passthru =
+      o.passthru or {}
+      // {
+        inherit gsr-kms-server gsr-dbus-server;
+      };
+  })
diff --git a/packages/gpu-screen-recorder/generic.nix b/packages/gpu-screen-recorder/generic.nix
index 8a82ec0a..e784db70 100644
--- a/packages/gpu-screen-recorder/generic.nix
+++ b/packages/gpu-screen-recorder/generic.nix
@@ -94,20 +94,20 @@ in
     # to get the security wrapper
     postFixup =
       optionalString (pname == "gsr-kms-server")
-        # bash
-        ''
-          rm $out/bin/{gpu-screen-recorder,gsr-dbus-server}
-        '' +
-      optionalString (pname == "gpu-screen-recorder")
-        # bash
-        ''
-          rm $out/bin/{gsr-kms-server,gsr-dbus-server}
-        '' +
-      optionalString (pname == "gsr-dbus-server")
-        # bash
-        ''
-          rm $out/bin/{gpu-screen-recorder,gsr-kms-server}
-        '';
+      # bash
+      ''
+        rm $out/bin/{gpu-screen-recorder,gsr-dbus-server}
+      ''
+      + optionalString (pname == "gpu-screen-recorder")
+      # bash
+      ''
+        rm $out/bin/{gsr-kms-server,gsr-dbus-server}
+      ''
+      + optionalString (pname == "gsr-dbus-server")
+      # bash
+      ''
+        rm $out/bin/{gpu-screen-recorder,gsr-kms-server}
+      '';
 
     meta = {
       mainProgram = pname;