diff --git a/configurations/binto/modules/gpu-replay/default.nix b/configurations/binto/modules/gpu-replay/default.nix index 352a3ec3..51f8607f 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; + inherit (pkgs.selfPackages) gpu-screen-recorder gsr-kms-server gsr-dbus-server; hyprPkgs = config.home-manager.users.${mainUser}.wayland.windowManager.hyprland.finalPackage; @@ -47,6 +47,7 @@ in { pkgs.pulseaudio pkgs.xorg.xrandr + gsr-dbus-server hyprPkgs ]; diff --git a/packages/default.nix b/packages/default.nix index 0f8883c1..861a721d 100644 --- a/packages/default.nix +++ b/packages/default.nix @@ -12,6 +12,9 @@ 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 { + inherit (inputs) gpu-screen-recorder-src; + }; homepage = final.callPackage ./homepage {}; diff --git a/packages/gpu-screen-recorder/generic.nix b/packages/gpu-screen-recorder/generic.nix index 745cefb7..8a82ec0a 100644 --- a/packages/gpu-screen-recorder/generic.nix +++ b/packages/gpu-screen-recorder/generic.nix @@ -2,7 +2,6 @@ # params pname, description, - isKmsServer ? false, # nix build inputs lib, stdenv, @@ -75,7 +74,7 @@ in ]; fixupPhase = - optionalString (!isKmsServer) + optionalString (pname == "gsr-kms-server") # bash '' runHook preFixup @@ -94,16 +93,20 @@ in # This is needed to force gsr to lookup kms in PATH # to get the security wrapper postFixup = - if isKmsServer - then + optionalString (pname == "gsr-kms-server") # bash '' - rm $out/bin/gpu-screen-recorder - '' - else + rm $out/bin/{gpu-screen-recorder,gsr-dbus-server} + '' + + optionalString (pname == "gpu-screen-recorder") # bash '' - rm $out/bin/gsr-kms-server + 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 = { diff --git a/packages/gpu-screen-recorder/gsr-dbus-server.nix b/packages/gpu-screen-recorder/gsr-dbus-server.nix new file mode 100644 index 00000000..006ad8a4 --- /dev/null +++ b/packages/gpu-screen-recorder/gsr-dbus-server.nix @@ -0,0 +1,14 @@ +{ + callPackage, + gpu-screen-recorder-src, + ... +}: +callPackage ./generic.nix { + pname = "gsr-dbus-server"; + inherit gpu-screen-recorder-src; + + description = '' + Small program to move dbus code to a separate process to allow gpu-screen-recorder to + use cap_sys_nice for better recording performance on AMD. + ''; +} diff --git a/packages/gpu-screen-recorder/gsr-kms-server.nix b/packages/gpu-screen-recorder/gsr-kms-server.nix index 9496cda7..1e2d3672 100644 --- a/packages/gpu-screen-recorder/gsr-kms-server.nix +++ b/packages/gpu-screen-recorder/gsr-kms-server.nix @@ -5,7 +5,6 @@ }: callPackage ./generic.nix { pname = "gsr-kms-server"; - isKmsServer = true; inherit gpu-screen-recorder-src; description = ''