diff --git a/nixos/modules/programs/gpu-screen-recorder.nix b/nixos/modules/programs/gpu-screen-recorder.nix index 21ecabdc7dfa..2778d6258641 100644 --- a/nixos/modules/programs/gpu-screen-recorder.nix +++ b/nixos/modules/programs/gpu-screen-recorder.nix @@ -10,6 +10,11 @@ let package = cfg.package.override { inherit (config.security) wrapperDir; }; + + uiPackage = cfg.ui.package.override { + gpu-screen-recorder = package; + inherit (config.security) wrapperDir; + }; in { options = { @@ -24,19 +29,47 @@ in wrappers for promptless recording. ''; }; + + ui = { + enable = lib.mkEnableOption "the GPU Screen Recorder overlay UI"; + package = lib.mkPackageOption pkgs "gpu-screen-recorder-ui" { }; + notifPackage = lib.mkPackageOption pkgs "gpu-screen-recorder-notification" { }; + }; }; }; - config = lib.mkIf cfg.enable { - environment.systemPackages = [ cfg.package ]; + config = lib.mkIf cfg.enable ( + lib.mkMerge [ + { + environment.systemPackages = [ cfg.package ]; - security.wrappers."gsr-kms-server" = { - owner = "root"; - group = "root"; - capabilities = "cap_sys_admin+ep"; - source = lib.getExe' package "gsr-kms-server"; - }; - }; + security.wrappers."gsr-kms-server" = { + owner = "root"; + group = "root"; + capabilities = "cap_sys_admin+ep"; + source = lib.getExe' package "gsr-kms-server"; + }; + } - meta.maintainers = with lib.maintainers; [ timschumi ]; + (lib.mkIf cfg.ui.enable { + environment.systemPackages = [ + cfg.ui.package + cfg.ui.notifPackage + ]; + + security.wrappers."gsr-global-hotkeys" = { + owner = "root"; + group = "root"; + capabilities = "cap_setuid+ep"; + source = lib.getExe' uiPackage "gsr-global-hotkeys"; + }; + }) + ] + ); + + meta.maintainers = with lib.maintainers; [ + timschumi + AhmedAmr + keenanweaver + ]; }